1a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block# Copyright 2006-2009 the V8 project authors. All rights reserved.
2a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block# Redistribution and use in source and binary forms, with or without
3a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block# modification, are permitted provided that the following conditions are
4a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block# met:
5a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block#
6a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block#     * Redistributions of source code must retain the above copyright
7a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block#       notice, this list of conditions and the following disclaimer.
8a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block#     * Redistributions in binary form must reproduce the above
9a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block#       copyright notice, this list of conditions and the following
10a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block#       disclaimer in the documentation and/or other materials provided
11a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block#       with the distribution.
12a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block#     * Neither the name of Google Inc. nor the names of its
13a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block#       contributors may be used to endorse or promote products derived
14a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block#       from this software without specific prior written permission.
15a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block#
16a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block
28a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block# Dictionary that is passed as defines for js2c.py.
293ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch# Used for defines that must be defined for all native JS files.
30a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block
31a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockconst NONE        = 0;
32a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockconst READ_ONLY   = 1;
33a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockconst DONT_ENUM   = 2;
34a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockconst DONT_DELETE = 4;
35a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block
36a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block# Constants used for getter and setter operations.
37a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockconst GETTER = 0;
38a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockconst SETTER = 1;
39a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block
40a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block# These definitions must match the index of the properties in objects.h.
413fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdochconst kApiTagOffset                 = 0;
423fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdochconst kApiPropertyListOffset        = 1;
433fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdochconst kApiSerialNumberOffset        = 2;
443fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdochconst kApiConstructorOffset         = 2;
453fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdochconst kApiPrototypeTemplateOffset   = 5;
463fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdochconst kApiParentTemplateOffset      = 6;
4769a99ed0b2b2ef69d393c371b03db3a98aaf880eBen Murdochconst kApiFlagOffset                = 14;
48a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block
49a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockconst NO_HINT     = 0;
50a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockconst NUMBER_HINT = 1;
51a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockconst STRING_HINT = 2;
52a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block
53a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockconst kFunctionTag  = 0;
54a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockconst kNewObjectTag = 1;
55a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block
56a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block# For date.js.
57a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockconst HoursPerDay      = 24;
58a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockconst MinutesPerHour   = 60;
59a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockconst SecondsPerMinute = 60;
60a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockconst msPerSecond      = 1000;
61a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockconst msPerMinute      = 60000;
62a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockconst msPerHour        = 3600000;
63a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockconst msPerDay         = 86400000;
64a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockconst msPerMonth       = 2592000000;
65a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block
66a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block# For apinatives.js
67a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockconst kUninitialized = -1;
6869a99ed0b2b2ef69d393c371b03db3a98aaf880eBen Murdochconst kReadOnlyPrototypeBit = 3;  # For FunctionTemplateInfo, matches objects.h
69a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block
70a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block# Note: kDayZeroInJulianDay = ToJulianDay(1970, 0, 1).
71a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockconst kInvalidDate        = 'Invalid Date';
72a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockconst kDayZeroInJulianDay = 2440588;
73a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockconst kMonthMask          = 0x1e0;
74a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockconst kDayMask            = 0x01f;
75a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockconst kYearShift          = 9;
76a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockconst kMonthShift         = 5;
77a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block
786ded16be15dd865a9b21ea304d5273c8be299c87Steve Block# Limits for parts of the date, so that we support all the dates that
796ded16be15dd865a9b21ea304d5273c8be299c87Steve Block# ECMA 262 - 15.9.1.1 requires us to, but at the same time be sure that
806ded16be15dd865a9b21ea304d5273c8be299c87Steve Block# the date (days since 1970) is in SMI range.
816ded16be15dd865a9b21ea304d5273c8be299c87Steve Blockconst kMinYear  = -1000000;
826ded16be15dd865a9b21ea304d5273c8be299c87Steve Blockconst kMaxYear  = 1000000;
836ded16be15dd865a9b21ea304d5273c8be299c87Steve Blockconst kMinMonth = -10000000;
846ded16be15dd865a9b21ea304d5273c8be299c87Steve Blockconst kMaxMonth = 10000000;
856ded16be15dd865a9b21ea304d5273c8be299c87Steve Block
866ded16be15dd865a9b21ea304d5273c8be299c87Steve Block# Native cache ids.
876ded16be15dd865a9b21ea304d5273c8be299c87Steve Blockconst STRING_TO_REGEXP_CACHE_ID = 0;
886ded16be15dd865a9b21ea304d5273c8be299c87Steve Block
89a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block# Type query macros.
90402d937239b0e2fd11bf2f4fe972ad78aa9fd481Andrei Popescu#
91402d937239b0e2fd11bf2f4fe972ad78aa9fd481Andrei Popescu# Note: We have special support for typeof(foo) === 'bar' in the compiler.
92402d937239b0e2fd11bf2f4fe972ad78aa9fd481Andrei Popescu#       It will *not* generate a runtime typeof call for the most important
93402d937239b0e2fd11bf2f4fe972ad78aa9fd481Andrei Popescu#       values of 'bar'.
94a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockmacro IS_NULL(arg)              = (arg === null);
95a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockmacro IS_NULL_OR_UNDEFINED(arg) = (arg == null);
96a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockmacro IS_UNDEFINED(arg)         = (typeof(arg) === 'undefined');
97a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockmacro IS_NUMBER(arg)            = (typeof(arg) === 'number');
98a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockmacro IS_STRING(arg)            = (typeof(arg) === 'string');
99a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockmacro IS_BOOLEAN(arg)           = (typeof(arg) === 'boolean');
100d0582a6c46733687d045e4188a1bcd0123c758a1Steve Blockmacro IS_OBJECT(arg)            = (%_IsObject(arg));
101a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockmacro IS_ARRAY(arg)             = (%_IsArray(arg));
102d0582a6c46733687d045e4188a1bcd0123c758a1Steve Blockmacro IS_FUNCTION(arg)          = (%_IsFunction(arg));
103402d937239b0e2fd11bf2f4fe972ad78aa9fd481Andrei Popescumacro IS_REGEXP(arg)            = (%_IsRegExp(arg));
1043ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochmacro IS_SET(arg)               = (%_ClassOf(arg) === 'Set');
1053ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochmacro IS_MAP(arg)               = (%_ClassOf(arg) === 'Map');
1063ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochmacro IS_WEAKMAP(arg)           = (%_ClassOf(arg) === 'WeakMap');
107a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockmacro IS_DATE(arg)              = (%_ClassOf(arg) === 'Date');
108a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockmacro IS_NUMBER_WRAPPER(arg)    = (%_ClassOf(arg) === 'Number');
109a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockmacro IS_STRING_WRAPPER(arg)    = (%_ClassOf(arg) === 'String');
110a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockmacro IS_BOOLEAN_WRAPPER(arg)   = (%_ClassOf(arg) === 'Boolean');
111a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockmacro IS_ERROR(arg)             = (%_ClassOf(arg) === 'Error');
112a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockmacro IS_SCRIPT(arg)            = (%_ClassOf(arg) === 'Script');
113a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockmacro IS_ARGUMENTS(arg)         = (%_ClassOf(arg) === 'Arguments');
114a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockmacro IS_GLOBAL(arg)            = (%_ClassOf(arg) === 'global');
115d91b9f7d46489a9ee00f9cb415630299c76a502bLeon Clarkemacro IS_UNDETECTABLE(arg)      = (%_IsUndetectableObject(arg));
116e46be819fca9468a0cd4e74859ce0f778eb8ca60Leon Clarkemacro FLOOR(arg)                = $floor(arg);
117a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block
11825f6136652d8341ed047e7fc1a450af5bd218ea9Kristian Monsen# Macro for ECMAScript 5 queries of the type:
11925f6136652d8341ed047e7fc1a450af5bd218ea9Kristian Monsen# "Type(O) is object."
120589d6979ff2ef66fca2d8fa51404c369ca5e9250Ben Murdoch# This is the same as being either a function or an object in V8 terminology
121589d6979ff2ef66fca2d8fa51404c369ca5e9250Ben Murdoch# (including proxies).
1223bec4d28b1f388dbc06a9c4276e1a03e86c52b04Ben Murdoch# In addition, an undetectable object is also included by this.
123589d6979ff2ef66fca2d8fa51404c369ca5e9250Ben Murdochmacro IS_SPEC_OBJECT(arg)   = (%_IsSpecObject(arg));
124589d6979ff2ef66fca2d8fa51404c369ca5e9250Ben Murdoch
125589d6979ff2ef66fca2d8fa51404c369ca5e9250Ben Murdoch# Macro for ECMAScript 5 queries of the type:
126589d6979ff2ef66fca2d8fa51404c369ca5e9250Ben Murdoch# "IsCallable(O)"
127589d6979ff2ef66fca2d8fa51404c369ca5e9250Ben Murdoch# We assume here that this is the same as being either a function or a function
128589d6979ff2ef66fca2d8fa51404c369ca5e9250Ben Murdoch# proxy. That ignores host objects with [[Call]] methods, but in most situations
129589d6979ff2ef66fca2d8fa51404c369ca5e9250Ben Murdoch# we cannot handle those anyway.
130589d6979ff2ef66fca2d8fa51404c369ca5e9250Ben Murdochmacro IS_SPEC_FUNCTION(arg) = (%_ClassOf(arg) === 'Function');
13125f6136652d8341ed047e7fc1a450af5bd218ea9Kristian Monsen
1323ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch# Indices in bound function info retrieved by %BoundFunctionGetBindings(...).
1333ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochconst kBoundFunctionIndex = 0;
1343ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochconst kBoundThisIndex = 1;
1353ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochconst kBoundArgumentsStartIndex = 2;
1363ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch
137a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block# Inline macros. Use %IS_VAR to make sure arg is evaluated only once.
138a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockmacro NUMBER_IS_NAN(arg) = (!%_IsSmi(%IS_VAR(arg)) && !(arg == arg));
139589d6979ff2ef66fca2d8fa51404c369ca5e9250Ben Murdochmacro NUMBER_IS_FINITE(arg) = (%_IsSmi(%IS_VAR(arg)) || ((arg == arg) && (arg != 1/0) && (arg != -1/0)));
14080d68eab642096c1a48b6474d6ec33064b0ad1f5Kristian Monsenmacro TO_INTEGER(arg) = (%_IsSmi(%IS_VAR(arg)) ? arg : %NumberToInteger(ToNumber(arg)));
1418defd9ff6930b4e24729971a61cf7469daf119beSteve Blockmacro TO_INTEGER_MAP_MINUS_ZERO(arg) = (%_IsSmi(%IS_VAR(arg)) ? arg : %NumberToIntegerMapMinusZero(ToNumber(arg)));
142402d937239b0e2fd11bf2f4fe972ad78aa9fd481Andrei Popescumacro TO_INT32(arg) = (%_IsSmi(%IS_VAR(arg)) ? arg : (arg >> 0));
143402d937239b0e2fd11bf2f4fe972ad78aa9fd481Andrei Popescumacro TO_UINT32(arg) = (arg >>> 0);
144402d937239b0e2fd11bf2f4fe972ad78aa9fd481Andrei Popescumacro TO_STRING_INLINE(arg) = (IS_STRING(%IS_VAR(arg)) ? arg : NonStringToString(arg));
145086aeeaae12517475c22695a200be45495516549Ben Murdochmacro TO_NUMBER_INLINE(arg) = (IS_NUMBER(%IS_VAR(arg)) ? arg : NonNumberToNumber(arg));
146257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdochmacro TO_OBJECT_INLINE(arg) = (IS_SPEC_OBJECT(%IS_VAR(arg)) ? arg : ToObject(arg));
1473fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdochmacro JSON_NUMBER_TO_STRING(arg) = ((%_IsSmi(%IS_VAR(arg)) || arg - arg == 0) ? %_NumberToString(arg) : "null");
148a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block
149a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block# Macros implemented in Python.
150a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockpython macro CHAR_CODE(str) = ord(str[1]);
151a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block
152a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block# Constants used on an array to implement the properties of the RegExp object.
153a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockconst REGEXP_NUMBER_OF_CAPTURES = 0;
154a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockconst REGEXP_FIRST_CAPTURE = 3;
155a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block
156a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block# We can't put macros in macros so we use constants here.
157a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block# REGEXP_NUMBER_OF_CAPTURES
158a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockmacro NUMBER_OF_CAPTURES(array) = ((array)[0]);
159a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block
1606ded16be15dd865a9b21ea304d5273c8be299c87Steve Block# Limit according to ECMA 262 15.9.1.1
1616ded16be15dd865a9b21ea304d5273c8be299c87Steve Blockconst MAX_TIME_MS = 8640000000000000;
162b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch# Limit which is MAX_TIME_MS + msPerMonth.
163b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdochconst MAX_TIME_BEFORE_UTC = 8640002592000000;
1646ded16be15dd865a9b21ea304d5273c8be299c87Steve Block
165a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block# Gets the value of a Date object. If arg is not a Date object
166a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block# a type error is thrown.
1673ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochmacro CHECK_DATE(arg) = if (%_ClassOf(arg) !== 'Date') ThrowDateTypeError();
1683ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochmacro LOCAL_DATE_VALUE(arg) = (%_DateField(arg, 0) + %_DateField(arg, 21));
1693ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochmacro UTC_DATE_VALUE(arg)    = (%_DateField(arg, 0));
1703ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch
1713ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochmacro LOCAL_YEAR(arg)        = (%_DateField(arg, 1));
1723ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochmacro LOCAL_MONTH(arg)       = (%_DateField(arg, 2));
1733ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochmacro LOCAL_DAY(arg)         = (%_DateField(arg, 3));
1743ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochmacro LOCAL_WEEKDAY(arg)     = (%_DateField(arg, 4));
1753ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochmacro LOCAL_HOUR(arg)        = (%_DateField(arg, 5));
1763ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochmacro LOCAL_MIN(arg)         = (%_DateField(arg, 6));
1773ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochmacro LOCAL_SEC(arg)         = (%_DateField(arg, 7));
1783ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochmacro LOCAL_MS(arg)          = (%_DateField(arg, 8));
1793ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochmacro LOCAL_DAYS(arg)        = (%_DateField(arg, 9));
1803ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochmacro LOCAL_TIME_IN_DAY(arg) = (%_DateField(arg, 10));
1813ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch
1823ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochmacro UTC_YEAR(arg)        = (%_DateField(arg, 11));
1833ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochmacro UTC_MONTH(arg)       = (%_DateField(arg, 12));
1843ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochmacro UTC_DAY(arg)         = (%_DateField(arg, 13));
1853ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochmacro UTC_WEEKDAY(arg)     = (%_DateField(arg, 14));
1863ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochmacro UTC_HOUR(arg)        = (%_DateField(arg, 15));
1873ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochmacro UTC_MIN(arg)         = (%_DateField(arg, 16));
1883ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochmacro UTC_SEC(arg)         = (%_DateField(arg, 17));
1893ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochmacro UTC_MS(arg)          = (%_DateField(arg, 18));
1903ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochmacro UTC_DAYS(arg)        = (%_DateField(arg, 19));
1913ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochmacro UTC_TIME_IN_DAY(arg) = (%_DateField(arg, 20));
1923ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch
1933ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochmacro TIMEZONE_OFFSET(arg)   = (%_DateField(arg, 21));
1943ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch
1953ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochmacro SET_UTC_DATE_VALUE(arg, value) = (%DateSetValue(arg, value, 1));
1963ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochmacro SET_LOCAL_DATE_VALUE(arg, value) = (%DateSetValue(arg, value, 0));
197a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block
1983ce2e2076e8e3e60cf1810eec160ea2d8557e9e7Steve Block# Last input and last subject of regexp matches.
199a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockmacro LAST_SUBJECT(array) = ((array)[1]);
200a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockmacro LAST_INPUT(array) = ((array)[2]);
201a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block
202a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block# REGEXP_FIRST_CAPTURE
203a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockmacro CAPTURE(index) = (3 + (index));
204a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockconst CAPTURE0 = 3;
205a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockconst CAPTURE1 = 4;
2067f4d5bd8c03935e2c0cd412e561b8fc5a6a880aeBen Murdoch
207589d6979ff2ef66fca2d8fa51404c369ca5e9250Ben Murdoch# PropertyDescriptor return value indices - must match
2087f4d5bd8c03935e2c0cd412e561b8fc5a6a880aeBen Murdoch# PropertyDescriptorIndices in runtime.cc.
2097f4d5bd8c03935e2c0cd412e561b8fc5a6a880aeBen Murdochconst IS_ACCESSOR_INDEX = 0;
2107f4d5bd8c03935e2c0cd412e561b8fc5a6a880aeBen Murdochconst VALUE_INDEX = 1;
2117f4d5bd8c03935e2c0cd412e561b8fc5a6a880aeBen Murdochconst GETTER_INDEX = 2;
2127f4d5bd8c03935e2c0cd412e561b8fc5a6a880aeBen Murdochconst SETTER_INDEX = 3;
2137f4d5bd8c03935e2c0cd412e561b8fc5a6a880aeBen Murdochconst WRITABLE_INDEX = 4;
2147f4d5bd8c03935e2c0cd412e561b8fc5a6a880aeBen Murdochconst ENUMERABLE_INDEX = 5;
2157f4d5bd8c03935e2c0cd412e561b8fc5a6a880aeBen Murdochconst CONFIGURABLE_INDEX = 6;
216589d6979ff2ef66fca2d8fa51404c369ca5e9250Ben Murdoch
217589d6979ff2ef66fca2d8fa51404c369ca5e9250Ben Murdoch# For messages.js
218589d6979ff2ef66fca2d8fa51404c369ca5e9250Ben Murdoch# Matches Script::Type from objects.h
219589d6979ff2ef66fca2d8fa51404c369ca5e9250Ben Murdochconst TYPE_NATIVE = 0;
220589d6979ff2ef66fca2d8fa51404c369ca5e9250Ben Murdochconst TYPE_EXTENSION = 1;
221589d6979ff2ef66fca2d8fa51404c369ca5e9250Ben Murdochconst TYPE_NORMAL = 2;
222589d6979ff2ef66fca2d8fa51404c369ca5e9250Ben Murdoch
223589d6979ff2ef66fca2d8fa51404c369ca5e9250Ben Murdoch# Matches Script::CompilationType from objects.h
224589d6979ff2ef66fca2d8fa51404c369ca5e9250Ben Murdochconst COMPILATION_TYPE_HOST = 0;
225589d6979ff2ef66fca2d8fa51404c369ca5e9250Ben Murdochconst COMPILATION_TYPE_EVAL = 1;
226589d6979ff2ef66fca2d8fa51404c369ca5e9250Ben Murdochconst COMPILATION_TYPE_JSON = 2;
227589d6979ff2ef66fca2d8fa51404c369ca5e9250Ben Murdoch
228589d6979ff2ef66fca2d8fa51404c369ca5e9250Ben Murdoch# Matches Messages::kNoLineNumberInfo from v8.h
229589d6979ff2ef66fca2d8fa51404c369ca5e9250Ben Murdochconst kNoLineNumberInfo = 0;
230