17be3c996bea370e151c9fe4ecf7f779cdc5f87adkasperl@chromium.org# Copyright 2006-2009 the V8 project authors. All rights reserved. 243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen# Redistribution and use in source and binary forms, with or without 343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen# modification, are permitted provided that the following conditions are 443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen# met: 543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen# 643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen# * Redistributions of source code must retain the above copyright 743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen# notice, this list of conditions and the following disclaimer. 843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen# * Redistributions in binary form must reproduce the above 943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen# copyright notice, this list of conditions and the following 1043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen# disclaimer in the documentation and/or other materials provided 1143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen# with the distribution. 1243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen# * Neither the name of Google Inc. nor the names of its 1343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen# contributors may be used to endorse or promote products derived 1443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen# from this software without specific prior written permission. 1543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen# 1643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 1743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 1843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 1943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 2043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 2143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 2243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 2343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 2443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 2543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 2643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 2843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen# Dictionary that is passed as defines for js2c.py. 292efb900e7350b14be905abdeab077f3a64c583cfulan@chromium.org# Used for defines that must be defined for all native JS files. 3043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 3141044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.orgconst NONE = 0; 3241044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.orgconst READ_ONLY = 1; 3341044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.orgconst DONT_ENUM = 2; 3443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenconst DONT_DELETE = 4; 3532280cf2786219b2d9a668f7f00778fb59ac40b3mstarzinger@chromium.orgconst NEW_ONE_BYTE_STRING = true; 3632280cf2786219b2d9a668f7f00778fb59ac40b3mstarzinger@chromium.orgconst NEW_TWO_BYTE_STRING = false; 3743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 3843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen# Constants used for getter and setter operations. 3943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenconst GETTER = 0; 4043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenconst SETTER = 1; 4143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 42212ac23f8231d169b4aa6737d762099993020826kasper.lund# These definitions must match the index of the properties in objects.h. 4304921a8093ce8bbec34084bd742b7aa3d299be15ager@chromium.orgconst kApiTagOffset = 0; 4404921a8093ce8bbec34084bd742b7aa3d299be15ager@chromium.orgconst kApiPropertyListOffset = 1; 453d00d0a753cf5e5091f883517e6612ece769f999jkummerow@chromium.orgconst kApiSerialNumberOffset = 3; 463d00d0a753cf5e5091f883517e6612ece769f999jkummerow@chromium.orgconst kApiConstructorOffset = 3; 4704921a8093ce8bbec34084bd742b7aa3d299be15ager@chromium.orgconst kApiPrototypeTemplateOffset = 5; 4804921a8093ce8bbec34084bd742b7aa3d299be15ager@chromium.orgconst kApiParentTemplateOffset = 6; 492c99e28a7b1fcb3767dc7c0088514fe53be784c5ricow@chromium.orgconst kApiFlagOffset = 14; 5043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 5143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenconst NO_HINT = 0; 5243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenconst NUMBER_HINT = 1; 5343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenconst STRING_HINT = 2; 5443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 5541044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.orgconst kFunctionTag = 0; 5641044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.orgconst kNewObjectTag = 1; 5743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 5841044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org# For date.js. 5941044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.orgconst HoursPerDay = 24; 6041044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.orgconst MinutesPerHour = 60; 6141044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.orgconst SecondsPerMinute = 60; 6241044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.orgconst msPerSecond = 1000; 6341044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.orgconst msPerMinute = 60000; 6441044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.orgconst msPerHour = 3600000; 6541044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.orgconst msPerDay = 86400000; 66eadaf2282ee421d7a63a21d71369b029105341ccager@chromium.orgconst msPerMonth = 2592000000; 6743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 683291210ab99f306b74430ebbc4b7d939629e699fager@chromium.org# For apinatives.js 693291210ab99f306b74430ebbc4b7d939629e699fager@chromium.orgconst kUninitialized = -1; 70662436e7b124b3535773535c671c53db322070b5verwaest@chromium.orgconst kReadOnlyPrototypeBit = 3; 71662436e7b124b3535773535c671c53db322070b5verwaest@chromium.orgconst kRemovePrototypeBit = 4; # For FunctionTemplateInfo, matches objects.h 72639bac0c5319f96e1bbe3399fb7f7f37344928bddslomov@chromium.orgconst kDoNotCacheBit = 5; # For FunctionTemplateInfo, matches objects.h 733291210ab99f306b74430ebbc4b7d939629e699fager@chromium.org 7441044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org# Note: kDayZeroInJulianDay = ToJulianDay(1970, 0, 1). 7541044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.orgconst kInvalidDate = 'Invalid Date'; 7641044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.orgconst kDayZeroInJulianDay = 2440588; 7741044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.orgconst kMonthMask = 0x1e0; 7841044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.orgconst kDayMask = 0x01f; 7941044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.orgconst kYearShift = 9; 8041044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.orgconst kMonthShift = 5; 8143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 82ce5e87bd905d592a8bd612b3dedf7a994177c13aager@chromium.org# Limits for parts of the date, so that we support all the dates that 83ce5e87bd905d592a8bd612b3dedf7a994177c13aager@chromium.org# ECMA 262 - 15.9.1.1 requires us to, but at the same time be sure that 84ce5e87bd905d592a8bd612b3dedf7a994177c13aager@chromium.org# the date (days since 1970) is in SMI range. 85ce5e87bd905d592a8bd612b3dedf7a994177c13aager@chromium.orgconst kMinYear = -1000000; 86ce5e87bd905d592a8bd612b3dedf7a994177c13aager@chromium.orgconst kMaxYear = 1000000; 87ce5e87bd905d592a8bd612b3dedf7a994177c13aager@chromium.orgconst kMinMonth = -10000000; 88ce5e87bd905d592a8bd612b3dedf7a994177c13aager@chromium.orgconst kMaxMonth = 10000000; 89ce5e87bd905d592a8bd612b3dedf7a994177c13aager@chromium.org 90c9c80823e038328f2e1060d7feef0762a50adf06ricow@chromium.org# Native cache ids. 91c9c80823e038328f2e1060d7feef0762a50adf06ricow@chromium.orgconst STRING_TO_REGEXP_CACHE_ID = 0; 92c9c80823e038328f2e1060d7feef0762a50adf06ricow@chromium.org 9341044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org# Type query macros. 94b95b98b0c30bcd40b657aa45f6cd75a46a4772adfschneider@chromium.org# 95b95b98b0c30bcd40b657aa45f6cd75a46a4772adfschneider@chromium.org# Note: We have special support for typeof(foo) === 'bar' in the compiler. 96b95b98b0c30bcd40b657aa45f6cd75a46a4772adfschneider@chromium.org# It will *not* generate a runtime typeof call for the most important 97b95b98b0c30bcd40b657aa45f6cd75a46a4772adfschneider@chromium.org# values of 'bar'. 9843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenmacro IS_NULL(arg) = (arg === null); 9943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenmacro IS_NULL_OR_UNDEFINED(arg) = (arg == null); 10043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenmacro IS_UNDEFINED(arg) = (typeof(arg) === 'undefined'); 10143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenmacro IS_NUMBER(arg) = (typeof(arg) === 'number'); 10243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenmacro IS_STRING(arg) = (typeof(arg) === 'string'); 10343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenmacro IS_BOOLEAN(arg) = (typeof(arg) === 'boolean'); 104f705b5034dc5bc422ac1019b591469a7d0534772mstarzinger@chromium.orgmacro IS_SYMBOL(arg) = (typeof(arg) === 'symbol'); 1056141cbe3fd2be496590a3d5fe89b263c87eee58aager@chromium.orgmacro IS_OBJECT(arg) = (%_IsObject(arg)); 1062abc450936e88b5c98a5e9d43ee6230ccc748272kasperl@chromium.orgmacro IS_ARRAY(arg) = (%_IsArray(arg)); 1076141cbe3fd2be496590a3d5fe89b263c87eee58aager@chromium.orgmacro IS_FUNCTION(arg) = (%_IsFunction(arg)); 108b95b98b0c30bcd40b657aa45f6cd75a46a4772adfschneider@chromium.orgmacro IS_REGEXP(arg) = (%_IsRegExp(arg)); 109fab1498f2f42726c7de46c3ed560d56dd072a8b3rossberg@chromium.orgmacro IS_SET(arg) = (%_ClassOf(arg) === 'Set'); 110fab1498f2f42726c7de46c3ed560d56dd072a8b3rossberg@chromium.orgmacro IS_MAP(arg) = (%_ClassOf(arg) === 'Map'); 111fab1498f2f42726c7de46c3ed560d56dd072a8b3rossberg@chromium.orgmacro IS_WEAKMAP(arg) = (%_ClassOf(arg) === 'WeakMap'); 112ba72ec861b69b67139c93fc6dd56f4a73c9b3135jkummerow@chromium.orgmacro IS_WEAKSET(arg) = (%_ClassOf(arg) === 'WeakSet'); 1132abc450936e88b5c98a5e9d43ee6230ccc748272kasperl@chromium.orgmacro IS_DATE(arg) = (%_ClassOf(arg) === 'Date'); 1142abc450936e88b5c98a5e9d43ee6230ccc748272kasperl@chromium.orgmacro IS_NUMBER_WRAPPER(arg) = (%_ClassOf(arg) === 'Number'); 1152abc450936e88b5c98a5e9d43ee6230ccc748272kasperl@chromium.orgmacro IS_STRING_WRAPPER(arg) = (%_ClassOf(arg) === 'String'); 116f705b5034dc5bc422ac1019b591469a7d0534772mstarzinger@chromium.orgmacro IS_SYMBOL_WRAPPER(arg) = (%_ClassOf(arg) === 'Symbol'); 1172abc450936e88b5c98a5e9d43ee6230ccc748272kasperl@chromium.orgmacro IS_BOOLEAN_WRAPPER(arg) = (%_ClassOf(arg) === 'Boolean'); 1182abc450936e88b5c98a5e9d43ee6230ccc748272kasperl@chromium.orgmacro IS_ERROR(arg) = (%_ClassOf(arg) === 'Error'); 1192abc450936e88b5c98a5e9d43ee6230ccc748272kasperl@chromium.orgmacro IS_SCRIPT(arg) = (%_ClassOf(arg) === 'Script'); 1202abc450936e88b5c98a5e9d43ee6230ccc748272kasperl@chromium.orgmacro IS_ARGUMENTS(arg) = (%_ClassOf(arg) === 'Arguments'); 1212abc450936e88b5c98a5e9d43ee6230ccc748272kasperl@chromium.orgmacro IS_GLOBAL(arg) = (%_ClassOf(arg) === 'global'); 122f005df6c3232e65028420519fbab7284bc9b33aedanno@chromium.orgmacro IS_ARRAYBUFFER(arg) = (%_ClassOf(arg) === 'ArrayBuffer'); 1231510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgmacro IS_DATAVIEW(arg) = (%_ClassOf(arg) === 'DataView'); 124b228be01a466e0ba4d8389148671d196b2081f76mstarzinger@chromium.orgmacro IS_GENERATOR(arg) = (%_ClassOf(arg) === 'Generator'); 125b302e56e5b70c4504faa2adf4ec3efb64a9d3e38sgjesse@chromium.orgmacro IS_UNDETECTABLE(arg) = (%_IsUndetectableObject(arg)); 1260c20e676f8a0209982ff89e5a9c707771748a585fschneider@chromium.orgmacro FLOOR(arg) = $floor(arg); 12743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 128dff694e8cc18aa9640e92962de2699b9d07a7690vegorov@chromium.org# Macro for ECMAScript 5 queries of the type: 129dff694e8cc18aa9640e92962de2699b9d07a7690vegorov@chromium.org# "Type(O) is object." 13034e60787ea1e76f3ee49e859f71f036170c21f0elrn@chromium.org# This is the same as being either a function or an object in V8 terminology 13134e60787ea1e76f3ee49e859f71f036170c21f0elrn@chromium.org# (including proxies). 1324980dff4208f9b77bc5320af43d7cc4b2a3d9688ricow@chromium.org# In addition, an undetectable object is also included by this. 13334e60787ea1e76f3ee49e859f71f036170c21f0elrn@chromium.orgmacro IS_SPEC_OBJECT(arg) = (%_IsSpecObject(arg)); 13434e60787ea1e76f3ee49e859f71f036170c21f0elrn@chromium.org 13534e60787ea1e76f3ee49e859f71f036170c21f0elrn@chromium.org# Macro for ECMAScript 5 queries of the type: 13634e60787ea1e76f3ee49e859f71f036170c21f0elrn@chromium.org# "IsCallable(O)" 13734e60787ea1e76f3ee49e859f71f036170c21f0elrn@chromium.org# We assume here that this is the same as being either a function or a function 13834e60787ea1e76f3ee49e859f71f036170c21f0elrn@chromium.org# proxy. That ignores host objects with [[Call]] methods, but in most situations 13934e60787ea1e76f3ee49e859f71f036170c21f0elrn@chromium.org# we cannot handle those anyway. 14034e60787ea1e76f3ee49e859f71f036170c21f0elrn@chromium.orgmacro IS_SPEC_FUNCTION(arg) = (%_ClassOf(arg) === 'Function'); 141dff694e8cc18aa9640e92962de2699b9d07a7690vegorov@chromium.org 142394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com# Indices in bound function info retrieved by %BoundFunctionGetBindings(...). 143394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.comconst kBoundFunctionIndex = 0; 144394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.comconst kBoundThisIndex = 1; 145394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.comconst kBoundArgumentsStartIndex = 2; 146394dbcf9009cf5203b6d85e8b515fcff072040f3erik.corry@gmail.com 14741044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org# Inline macros. Use %IS_VAR to make sure arg is evaluated only once. 14841044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.orgmacro NUMBER_IS_NAN(arg) = (!%_IsSmi(%IS_VAR(arg)) && !(arg == arg)); 149486075aa3f2e6d0031ff182961b9eab00e1081d8jkummerow@chromium.orgmacro NUMBER_IS_FINITE(arg) = (%_IsSmi(%IS_VAR(arg)) || ((arg == arg) && (arg != 1/0) && (arg != -1/0))); 15065fae84840520e9ce49a78bf542abf073b49ac3fricow@chromium.orgmacro TO_INTEGER(arg) = (%_IsSmi(%IS_VAR(arg)) ? arg : %NumberToInteger(ToNumber(arg))); 151e0e1b0d3e70c933d36ed381d511e9fda39f2a751mstarzinger@chromium.orgmacro TO_INTEGER_FOR_SIDE_EFFECT(arg) = (%_IsSmi(%IS_VAR(arg)) ? arg : ToNumber(arg)); 15269ea3965ef6e0d3f020a402cf7e6b96b9cb651aekmillikin@chromium.orgmacro TO_INTEGER_MAP_MINUS_ZERO(arg) = (%_IsSmi(%IS_VAR(arg)) ? arg : %NumberToIntegerMapMinusZero(ToNumber(arg))); 153b95b98b0c30bcd40b657aa45f6cd75a46a4772adfschneider@chromium.orgmacro TO_INT32(arg) = (%_IsSmi(%IS_VAR(arg)) ? arg : (arg >> 0)); 154b95b98b0c30bcd40b657aa45f6cd75a46a4772adfschneider@chromium.orgmacro TO_UINT32(arg) = (arg >>> 0); 155b95b98b0c30bcd40b657aa45f6cd75a46a4772adfschneider@chromium.orgmacro TO_STRING_INLINE(arg) = (IS_STRING(%IS_VAR(arg)) ? arg : NonStringToString(arg)); 156d2c22f0121ebc55ee26a9e742f0fd7c0b8397730kmillikin@chromium.orgmacro TO_NUMBER_INLINE(arg) = (IS_NUMBER(%IS_VAR(arg)) ? arg : NonNumberToNumber(arg)); 1577304bcac06a6a63b9f3dcebac2eeceada87ca146vegorov@chromium.orgmacro TO_OBJECT_INLINE(arg) = (IS_SPEC_OBJECT(%IS_VAR(arg)) ? arg : ToObject(arg)); 158d2be901879306d8ff27e78e37783028d581d46fcricow@chromium.orgmacro JSON_NUMBER_TO_STRING(arg) = ((%_IsSmi(%IS_VAR(arg)) || arg - arg == 0) ? %_NumberToString(arg) : "null"); 15943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 1600cc095007a3ccded63f6577751c6a04300eb7ae9machenbach@chromium.org# Private names. 1610cc095007a3ccded63f6577751c6a04300eb7ae9machenbach@chromium.orgmacro NEW_PRIVATE(name) = (%CreatePrivateSymbol(name)); 1620cc095007a3ccded63f6577751c6a04300eb7ae9machenbach@chromium.orgmacro HAS_PRIVATE(obj, sym) = (sym in obj); 1630cc095007a3ccded63f6577751c6a04300eb7ae9machenbach@chromium.orgmacro GET_PRIVATE(obj, sym) = (obj[sym]); 1640cc095007a3ccded63f6577751c6a04300eb7ae9machenbach@chromium.orgmacro SET_PRIVATE(obj, sym, val) = (obj[sym] = val); 1650cc095007a3ccded63f6577751c6a04300eb7ae9machenbach@chromium.orgmacro DELETE_PRIVATE(obj, sym) = (delete obj[sym]); 1660cc095007a3ccded63f6577751c6a04300eb7ae9machenbach@chromium.org 167690083842e7c67a362017dae50909d4bb0b2a9c2mstarzinger@chromium.org# Constants. The compiler constant folds them. 168690083842e7c67a362017dae50909d4bb0b2a9c2mstarzinger@chromium.orgconst NAN = $NaN; 169690083842e7c67a362017dae50909d4bb0b2a9c2mstarzinger@chromium.orgconst INFINITY = (1/0); 170690083842e7c67a362017dae50909d4bb0b2a9c2mstarzinger@chromium.orgconst UNDEFINED = (void 0); 171690083842e7c67a362017dae50909d4bb0b2a9c2mstarzinger@chromium.org 17241044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org# Macros implemented in Python. 17341044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.orgpython macro CHAR_CODE(str) = ord(str[1]); 17443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 1757be3c996bea370e151c9fe4ecf7f779cdc5f87adkasperl@chromium.org# Constants used on an array to implement the properties of the RegExp object. 1767be3c996bea370e151c9fe4ecf7f779cdc5f87adkasperl@chromium.orgconst REGEXP_NUMBER_OF_CAPTURES = 0; 177bb29dc9819bb6f495ab6eddd2543965eb97a8e43ager@chromium.orgconst REGEXP_FIRST_CAPTURE = 3; 1787be3c996bea370e151c9fe4ecf7f779cdc5f87adkasperl@chromium.org 1797be3c996bea370e151c9fe4ecf7f779cdc5f87adkasperl@chromium.org# We can't put macros in macros so we use constants here. 1807be3c996bea370e151c9fe4ecf7f779cdc5f87adkasperl@chromium.org# REGEXP_NUMBER_OF_CAPTURES 1817be3c996bea370e151c9fe4ecf7f779cdc5f87adkasperl@chromium.orgmacro NUMBER_OF_CAPTURES(array) = ((array)[0]); 1827be3c996bea370e151c9fe4ecf7f779cdc5f87adkasperl@chromium.org 1835d8f0e6e7b477f422e3064bdf0dd5f2a23f75544kmillikin@chromium.org# Limit according to ECMA 262 15.9.1.1 1845d8f0e6e7b477f422e3064bdf0dd5f2a23f75544kmillikin@chromium.orgconst MAX_TIME_MS = 8640000000000000; 1855f0c45f2cacb31d36a8f80c31f17bda7751a3644ager@chromium.org# Limit which is MAX_TIME_MS + msPerMonth. 1865f0c45f2cacb31d36a8f80c31f17bda7751a3644ager@chromium.orgconst MAX_TIME_BEFORE_UTC = 8640002592000000; 1875d8f0e6e7b477f422e3064bdf0dd5f2a23f75544kmillikin@chromium.org 1882abc450936e88b5c98a5e9d43ee6230ccc748272kasperl@chromium.org# Gets the value of a Date object. If arg is not a Date object 1892abc450936e88b5c98a5e9d43ee6230ccc748272kasperl@chromium.org# a type error is thrown. 1904efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.orgmacro CHECK_DATE(arg) = if (%_ClassOf(arg) !== 'Date') ThrowDateTypeError(); 1914efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.orgmacro LOCAL_DATE_VALUE(arg) = (%_DateField(arg, 0) + %_DateField(arg, 21)); 1924efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.orgmacro UTC_DATE_VALUE(arg) = (%_DateField(arg, 0)); 1934efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org 1944efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.orgmacro LOCAL_YEAR(arg) = (%_DateField(arg, 1)); 1954efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.orgmacro LOCAL_MONTH(arg) = (%_DateField(arg, 2)); 1964efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.orgmacro LOCAL_DAY(arg) = (%_DateField(arg, 3)); 1974efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.orgmacro LOCAL_WEEKDAY(arg) = (%_DateField(arg, 4)); 1984efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.orgmacro LOCAL_HOUR(arg) = (%_DateField(arg, 5)); 1994efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.orgmacro LOCAL_MIN(arg) = (%_DateField(arg, 6)); 2004efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.orgmacro LOCAL_SEC(arg) = (%_DateField(arg, 7)); 2014efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.orgmacro LOCAL_MS(arg) = (%_DateField(arg, 8)); 2024efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.orgmacro LOCAL_DAYS(arg) = (%_DateField(arg, 9)); 2034efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.orgmacro LOCAL_TIME_IN_DAY(arg) = (%_DateField(arg, 10)); 2044efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org 2054efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.orgmacro UTC_YEAR(arg) = (%_DateField(arg, 11)); 2064efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.orgmacro UTC_MONTH(arg) = (%_DateField(arg, 12)); 2074efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.orgmacro UTC_DAY(arg) = (%_DateField(arg, 13)); 2084efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.orgmacro UTC_WEEKDAY(arg) = (%_DateField(arg, 14)); 2094efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.orgmacro UTC_HOUR(arg) = (%_DateField(arg, 15)); 2104efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.orgmacro UTC_MIN(arg) = (%_DateField(arg, 16)); 2114efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.orgmacro UTC_SEC(arg) = (%_DateField(arg, 17)); 2124efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.orgmacro UTC_MS(arg) = (%_DateField(arg, 18)); 2134efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.orgmacro UTC_DAYS(arg) = (%_DateField(arg, 19)); 2144efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.orgmacro UTC_TIME_IN_DAY(arg) = (%_DateField(arg, 20)); 2154efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org 2164efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.orgmacro TIMEZONE_OFFSET(arg) = (%_DateField(arg, 21)); 2174efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org 2184efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.orgmacro SET_UTC_DATE_VALUE(arg, value) = (%DateSetValue(arg, value, 1)); 2194efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.orgmacro SET_LOCAL_DATE_VALUE(arg, value) = (%DateSetValue(arg, value, 0)); 2202abc450936e88b5c98a5e9d43ee6230ccc748272kasperl@chromium.org 2219d58c2b1c27d8b2890b9bd46e57d3842b09e0292christian.plesner.hansen@gmail.com# Last input and last subject of regexp matches. 222efdb9d70bddd496ceb6a281dadcc065efbce37a1yangguo@chromium.orgconst LAST_SUBJECT_INDEX = 1; 223bb29dc9819bb6f495ab6eddd2543965eb97a8e43ager@chromium.orgmacro LAST_SUBJECT(array) = ((array)[1]); 224bb29dc9819bb6f495ab6eddd2543965eb97a8e43ager@chromium.orgmacro LAST_INPUT(array) = ((array)[2]); 2257be3c996bea370e151c9fe4ecf7f779cdc5f87adkasperl@chromium.org 2267be3c996bea370e151c9fe4ecf7f779cdc5f87adkasperl@chromium.org# REGEXP_FIRST_CAPTURE 227bb29dc9819bb6f495ab6eddd2543965eb97a8e43ager@chromium.orgmacro CAPTURE(index) = (3 + (index)); 228bb29dc9819bb6f495ab6eddd2543965eb97a8e43ager@chromium.orgconst CAPTURE0 = 3; 229bb29dc9819bb6f495ab6eddd2543965eb97a8e43ager@chromium.orgconst CAPTURE1 = 4; 23030ce411529579186181838984710b0b0980857aaricow@chromium.org 231ed49e965b5cafa35395084dbfb79f4e07930f10ferik.corry@gmail.com# For the regexp capture override array. This has the same 232ed49e965b5cafa35395084dbfb79f4e07930f10ferik.corry@gmail.com# format as the arguments to a function called from 233ed49e965b5cafa35395084dbfb79f4e07930f10ferik.corry@gmail.com# String.prototype.replace. 234ed49e965b5cafa35395084dbfb79f4e07930f10ferik.corry@gmail.commacro OVERRIDE_MATCH(override) = ((override)[0]); 235ed49e965b5cafa35395084dbfb79f4e07930f10ferik.corry@gmail.commacro OVERRIDE_POS(override) = ((override)[(override).length - 2]); 236ed49e965b5cafa35395084dbfb79f4e07930f10ferik.corry@gmail.commacro OVERRIDE_SUBJECT(override) = ((override)[(override).length - 1]); 237ed49e965b5cafa35395084dbfb79f4e07930f10ferik.corry@gmail.com# 1-based so index of 1 returns the first capture 238ed49e965b5cafa35395084dbfb79f4e07930f10ferik.corry@gmail.commacro OVERRIDE_CAPTURE(override, index) = ((override)[(index)]); 239ed49e965b5cafa35395084dbfb79f4e07930f10ferik.corry@gmail.com 2401805e21b0aece8c05f4960a5c0751c4463557891fschneider@chromium.org# PropertyDescriptor return value indices - must match 24130ce411529579186181838984710b0b0980857aaricow@chromium.org# PropertyDescriptorIndices in runtime.cc. 24230ce411529579186181838984710b0b0980857aaricow@chromium.orgconst IS_ACCESSOR_INDEX = 0; 24330ce411529579186181838984710b0b0980857aaricow@chromium.orgconst VALUE_INDEX = 1; 24430ce411529579186181838984710b0b0980857aaricow@chromium.orgconst GETTER_INDEX = 2; 24530ce411529579186181838984710b0b0980857aaricow@chromium.orgconst SETTER_INDEX = 3; 24630ce411529579186181838984710b0b0980857aaricow@chromium.orgconst WRITABLE_INDEX = 4; 24730ce411529579186181838984710b0b0980857aaricow@chromium.orgconst ENUMERABLE_INDEX = 5; 24830ce411529579186181838984710b0b0980857aaricow@chromium.orgconst CONFIGURABLE_INDEX = 6; 2491805e21b0aece8c05f4960a5c0751c4463557891fschneider@chromium.org 2501805e21b0aece8c05f4960a5c0751c4463557891fschneider@chromium.org# For messages.js 2511805e21b0aece8c05f4960a5c0751c4463557891fschneider@chromium.org# Matches Script::Type from objects.h 2521805e21b0aece8c05f4960a5c0751c4463557891fschneider@chromium.orgconst TYPE_NATIVE = 0; 2531805e21b0aece8c05f4960a5c0751c4463557891fschneider@chromium.orgconst TYPE_EXTENSION = 1; 2541805e21b0aece8c05f4960a5c0751c4463557891fschneider@chromium.orgconst TYPE_NORMAL = 2; 2551805e21b0aece8c05f4960a5c0751c4463557891fschneider@chromium.org 2561805e21b0aece8c05f4960a5c0751c4463557891fschneider@chromium.org# Matches Script::CompilationType from objects.h 2571805e21b0aece8c05f4960a5c0751c4463557891fschneider@chromium.orgconst COMPILATION_TYPE_HOST = 0; 2581805e21b0aece8c05f4960a5c0751c4463557891fschneider@chromium.orgconst COMPILATION_TYPE_EVAL = 1; 2591805e21b0aece8c05f4960a5c0751c4463557891fschneider@chromium.orgconst COMPILATION_TYPE_JSON = 2; 2601805e21b0aece8c05f4960a5c0751c4463557891fschneider@chromium.org 2611805e21b0aece8c05f4960a5c0751c4463557891fschneider@chromium.org# Matches Messages::kNoLineNumberInfo from v8.h 2621805e21b0aece8c05f4960a5c0751c4463557891fschneider@chromium.orgconst kNoLineNumberInfo = 0; 263