builtins.h revision 3ef787dbeca8a5fb1086949cda830dccee07bfbd
1257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch// Copyright 2011 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#ifndef V8_BUILTINS_H_ 29a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block#define V8_BUILTINS_H_ 30a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 31a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blocknamespace v8 { 32a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blocknamespace internal { 33a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 34e46be819fca9468a0cd4e74859ce0f778eb8ca60Leon Clarke// Specifies extra arguments required by a C++ builtin. 35e46be819fca9468a0cd4e74859ce0f778eb8ca60Leon Clarkeenum BuiltinExtraArguments { 36e46be819fca9468a0cd4e74859ce0f778eb8ca60Leon Clarke NO_EXTRA_ARGUMENTS = 0, 37e46be819fca9468a0cd4e74859ce0f778eb8ca60Leon Clarke NEEDS_CALLED_FUNCTION = 1 38e46be819fca9468a0cd4e74859ce0f778eb8ca60Leon Clarke}; 39e46be819fca9468a0cd4e74859ce0f778eb8ca60Leon Clarke 40e46be819fca9468a0cd4e74859ce0f778eb8ca60Leon Clarke 41e46be819fca9468a0cd4e74859ce0f778eb8ca60Leon Clarke// Define list of builtins implemented in C++. 42e46be819fca9468a0cd4e74859ce0f778eb8ca60Leon Clarke#define BUILTIN_LIST_C(V) \ 43e46be819fca9468a0cd4e74859ce0f778eb8ca60Leon Clarke V(Illegal, NO_EXTRA_ARGUMENTS) \ 44e46be819fca9468a0cd4e74859ce0f778eb8ca60Leon Clarke \ 45e46be819fca9468a0cd4e74859ce0f778eb8ca60Leon Clarke V(EmptyFunction, NO_EXTRA_ARGUMENTS) \ 46e46be819fca9468a0cd4e74859ce0f778eb8ca60Leon Clarke \ 473ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch V(InternalArrayCodeGeneric, NO_EXTRA_ARGUMENTS) \ 48e46be819fca9468a0cd4e74859ce0f778eb8ca60Leon Clarke V(ArrayCodeGeneric, NO_EXTRA_ARGUMENTS) \ 49e46be819fca9468a0cd4e74859ce0f778eb8ca60Leon Clarke \ 50e46be819fca9468a0cd4e74859ce0f778eb8ca60Leon Clarke V(ArrayPush, NO_EXTRA_ARGUMENTS) \ 51e46be819fca9468a0cd4e74859ce0f778eb8ca60Leon Clarke V(ArrayPop, NO_EXTRA_ARGUMENTS) \ 52402d937239b0e2fd11bf2f4fe972ad78aa9fd481Andrei Popescu V(ArrayShift, NO_EXTRA_ARGUMENTS) \ 53402d937239b0e2fd11bf2f4fe972ad78aa9fd481Andrei Popescu V(ArrayUnshift, NO_EXTRA_ARGUMENTS) \ 54402d937239b0e2fd11bf2f4fe972ad78aa9fd481Andrei Popescu V(ArraySlice, NO_EXTRA_ARGUMENTS) \ 55402d937239b0e2fd11bf2f4fe972ad78aa9fd481Andrei Popescu V(ArraySplice, NO_EXTRA_ARGUMENTS) \ 566ded16be15dd865a9b21ea304d5273c8be299c87Steve Block V(ArrayConcat, NO_EXTRA_ARGUMENTS) \ 57e46be819fca9468a0cd4e74859ce0f778eb8ca60Leon Clarke \ 58e46be819fca9468a0cd4e74859ce0f778eb8ca60Leon Clarke V(HandleApiCall, NEEDS_CALLED_FUNCTION) \ 59402d937239b0e2fd11bf2f4fe972ad78aa9fd481Andrei Popescu V(FastHandleApiCall, NO_EXTRA_ARGUMENTS) \ 60e46be819fca9468a0cd4e74859ce0f778eb8ca60Leon Clarke V(HandleApiCallConstruct, NEEDS_CALLED_FUNCTION) \ 61e46be819fca9468a0cd4e74859ce0f778eb8ca60Leon Clarke V(HandleApiCallAsFunction, NO_EXTRA_ARGUMENTS) \ 6244f0eee88ff00398ff7f715fab053374d808c90dSteve Block V(HandleApiCallAsConstructor, NO_EXTRA_ARGUMENTS) \ 6344f0eee88ff00398ff7f715fab053374d808c90dSteve Block \ 64257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch V(StrictModePoisonPill, NO_EXTRA_ARGUMENTS) 65a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 66a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// Define list of builtins implemented in assembly. 67257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch#define BUILTIN_LIST_A(V) \ 68257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch V(ArgumentsAdaptorTrampoline, BUILTIN, UNINITIALIZED, \ 69257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch Code::kNoExtraICState) \ 70257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch V(JSConstructStubCountdown, BUILTIN, UNINITIALIZED, \ 71257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch Code::kNoExtraICState) \ 72257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch V(JSConstructStubGeneric, BUILTIN, UNINITIALIZED, \ 73257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch Code::kNoExtraICState) \ 74257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch V(JSConstructStubApi, BUILTIN, UNINITIALIZED, \ 75257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch Code::kNoExtraICState) \ 76257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch V(JSEntryTrampoline, BUILTIN, UNINITIALIZED, \ 77257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch Code::kNoExtraICState) \ 78257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch V(JSConstructEntryTrampoline, BUILTIN, UNINITIALIZED, \ 79257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch Code::kNoExtraICState) \ 80257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch V(LazyCompile, BUILTIN, UNINITIALIZED, \ 81257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch Code::kNoExtraICState) \ 82257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch V(LazyRecompile, BUILTIN, UNINITIALIZED, \ 83257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch Code::kNoExtraICState) \ 84257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch V(NotifyDeoptimized, BUILTIN, UNINITIALIZED, \ 85257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch Code::kNoExtraICState) \ 86257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch V(NotifyLazyDeoptimized, BUILTIN, UNINITIALIZED, \ 87257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch Code::kNoExtraICState) \ 88257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch V(NotifyOSR, BUILTIN, UNINITIALIZED, \ 89257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch Code::kNoExtraICState) \ 90257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch \ 91257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch V(LoadIC_Miss, BUILTIN, UNINITIALIZED, \ 92257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch Code::kNoExtraICState) \ 93257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch V(KeyedLoadIC_Miss, BUILTIN, UNINITIALIZED, \ 94257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch Code::kNoExtraICState) \ 95257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch V(KeyedLoadIC_MissForceGeneric, BUILTIN, UNINITIALIZED, \ 96257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch Code::kNoExtraICState) \ 97257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch V(KeyedLoadIC_Slow, BUILTIN, UNINITIALIZED, \ 98257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch Code::kNoExtraICState) \ 99257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch V(StoreIC_Miss, BUILTIN, UNINITIALIZED, \ 100257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch Code::kNoExtraICState) \ 101257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch V(KeyedStoreIC_Miss, BUILTIN, UNINITIALIZED, \ 102257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch Code::kNoExtraICState) \ 103257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch V(KeyedStoreIC_MissForceGeneric, BUILTIN, UNINITIALIZED, \ 104257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch Code::kNoExtraICState) \ 105257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch V(KeyedStoreIC_Slow, BUILTIN, UNINITIALIZED, \ 106257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch Code::kNoExtraICState) \ 107257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch V(LoadIC_Initialize, LOAD_IC, UNINITIALIZED, \ 108257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch Code::kNoExtraICState) \ 109257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch V(LoadIC_PreMonomorphic, LOAD_IC, PREMONOMORPHIC, \ 110257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch Code::kNoExtraICState) \ 111257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch V(LoadIC_Normal, LOAD_IC, MONOMORPHIC, \ 112257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch Code::kNoExtraICState) \ 113257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch V(LoadIC_ArrayLength, LOAD_IC, MONOMORPHIC, \ 114257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch Code::kNoExtraICState) \ 115257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch V(LoadIC_StringLength, LOAD_IC, MONOMORPHIC, \ 116257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch Code::kNoExtraICState) \ 117257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch V(LoadIC_StringWrapperLength, LOAD_IC, MONOMORPHIC, \ 118257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch Code::kNoExtraICState) \ 119257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch V(LoadIC_FunctionPrototype, LOAD_IC, MONOMORPHIC, \ 120257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch Code::kNoExtraICState) \ 121257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch V(LoadIC_Megamorphic, LOAD_IC, MEGAMORPHIC, \ 122257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch Code::kNoExtraICState) \ 123257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch \ 124257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch V(KeyedLoadIC_Initialize, KEYED_LOAD_IC, UNINITIALIZED, \ 125257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch Code::kNoExtraICState) \ 126257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch V(KeyedLoadIC_PreMonomorphic, KEYED_LOAD_IC, PREMONOMORPHIC, \ 127257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch Code::kNoExtraICState) \ 128257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch V(KeyedLoadIC_Generic, KEYED_LOAD_IC, MEGAMORPHIC, \ 129257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch Code::kNoExtraICState) \ 130257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch V(KeyedLoadIC_String, KEYED_LOAD_IC, MEGAMORPHIC, \ 131257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch Code::kNoExtraICState) \ 132257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch V(KeyedLoadIC_IndexedInterceptor, KEYED_LOAD_IC, MEGAMORPHIC, \ 133257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch Code::kNoExtraICState) \ 1343fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch V(KeyedLoadIC_NonStrictArguments, KEYED_LOAD_IC, MEGAMORPHIC, \ 1353fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch Code::kNoExtraICState) \ 136257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch \ 137257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch V(StoreIC_Initialize, STORE_IC, UNINITIALIZED, \ 138257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch Code::kNoExtraICState) \ 139257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch V(StoreIC_ArrayLength, STORE_IC, MONOMORPHIC, \ 140257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch Code::kNoExtraICState) \ 141257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch V(StoreIC_Normal, STORE_IC, MONOMORPHIC, \ 142257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch Code::kNoExtraICState) \ 143257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch V(StoreIC_Megamorphic, STORE_IC, MEGAMORPHIC, \ 144257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch Code::kNoExtraICState) \ 145257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch V(StoreIC_GlobalProxy, STORE_IC, MEGAMORPHIC, \ 146257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch Code::kNoExtraICState) \ 147257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch V(StoreIC_Initialize_Strict, STORE_IC, UNINITIALIZED, \ 148257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch kStrictMode) \ 149257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch V(StoreIC_ArrayLength_Strict, STORE_IC, MONOMORPHIC, \ 150257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch kStrictMode) \ 151257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch V(StoreIC_Normal_Strict, STORE_IC, MONOMORPHIC, \ 152257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch kStrictMode) \ 153257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch V(StoreIC_Megamorphic_Strict, STORE_IC, MEGAMORPHIC, \ 154257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch kStrictMode) \ 155257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch V(StoreIC_GlobalProxy_Strict, STORE_IC, MEGAMORPHIC, \ 156257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch kStrictMode) \ 157257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch \ 158257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch V(KeyedStoreIC_Initialize, KEYED_STORE_IC, UNINITIALIZED, \ 159257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch Code::kNoExtraICState) \ 160257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch V(KeyedStoreIC_Generic, KEYED_STORE_IC, MEGAMORPHIC, \ 161257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch Code::kNoExtraICState) \ 162257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch \ 163257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch V(KeyedStoreIC_Initialize_Strict, KEYED_STORE_IC, UNINITIALIZED, \ 164257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch kStrictMode) \ 165257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch V(KeyedStoreIC_Generic_Strict, KEYED_STORE_IC, MEGAMORPHIC, \ 166257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch kStrictMode) \ 1673fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch V(KeyedStoreIC_NonStrictArguments, KEYED_STORE_IC, MEGAMORPHIC, \ 1683fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch Code::kNoExtraICState) \ 1693ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch V(TransitionElementsSmiToDouble, BUILTIN, UNINITIALIZED, \ 1703ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch Code::kNoExtraICState) \ 1713ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch V(TransitionElementsDoubleToObject, BUILTIN, UNINITIALIZED, \ 1723ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch Code::kNoExtraICState) \ 173257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch \ 174257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch /* Uses KeyedLoadIC_Initialize; must be after in list. */ \ 175257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch V(FunctionCall, BUILTIN, UNINITIALIZED, \ 176257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch Code::kNoExtraICState) \ 177257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch V(FunctionApply, BUILTIN, UNINITIALIZED, \ 178257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch Code::kNoExtraICState) \ 179257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch \ 1803ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch V(InternalArrayCode, BUILTIN, UNINITIALIZED, \ 1813ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch Code::kNoExtraICState) \ 182257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch V(ArrayCode, BUILTIN, UNINITIALIZED, \ 183257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch Code::kNoExtraICState) \ 184257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch V(ArrayConstructCode, BUILTIN, UNINITIALIZED, \ 185257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch Code::kNoExtraICState) \ 186257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch \ 187257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch V(StringConstructCode, BUILTIN, UNINITIALIZED, \ 188257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch Code::kNoExtraICState) \ 189257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch \ 190257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch V(OnStackReplacement, BUILTIN, UNINITIALIZED, \ 191e0cee9b3ed82e2391fd85d118aeaa4ea361c687dBen Murdoch Code::kNoExtraICState) 19280d68eab642096c1a48b6474d6ec33064b0ad1f5Kristian Monsen 193a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 194a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block#ifdef ENABLE_DEBUGGER_SUPPORT 195a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// Define list of builtins used by the debugger implemented in assembly. 1963ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch#define BUILTIN_LIST_DEBUG_A(V) \ 1973ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch V(Return_DebugBreak, BUILTIN, DEBUG_BREAK, \ 1983ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch Code::kNoExtraICState) \ 1993ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch V(CallFunctionStub_DebugBreak, BUILTIN, DEBUG_BREAK, \ 2003ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch Code::kNoExtraICState) \ 2013ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch V(CallFunctionStub_Recording_DebugBreak, BUILTIN, DEBUG_BREAK, \ 2023ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch Code::kNoExtraICState) \ 2033ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch V(CallConstructStub_DebugBreak, BUILTIN, DEBUG_BREAK, \ 2043ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch Code::kNoExtraICState) \ 2053ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch V(CallConstructStub_Recording_DebugBreak, BUILTIN, DEBUG_BREAK, \ 2063ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch Code::kNoExtraICState) \ 2073ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch V(LoadIC_DebugBreak, LOAD_IC, DEBUG_BREAK, \ 2083ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch Code::kNoExtraICState) \ 2093ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch V(KeyedLoadIC_DebugBreak, KEYED_LOAD_IC, DEBUG_BREAK, \ 2103ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch Code::kNoExtraICState) \ 2113ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch V(StoreIC_DebugBreak, STORE_IC, DEBUG_BREAK, \ 2123ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch Code::kNoExtraICState) \ 2133ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch V(KeyedStoreIC_DebugBreak, KEYED_STORE_IC, DEBUG_BREAK, \ 2143ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch Code::kNoExtraICState) \ 2153ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch V(Slot_DebugBreak, BUILTIN, DEBUG_BREAK, \ 2163ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch Code::kNoExtraICState) \ 2173ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch V(PlainReturn_LiveEdit, BUILTIN, DEBUG_BREAK, \ 2183ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch Code::kNoExtraICState) \ 2193ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch V(FrameDropper_LiveEdit, BUILTIN, DEBUG_BREAK, \ 2203ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch Code::kNoExtraICState) 221a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block#else 222a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block#define BUILTIN_LIST_DEBUG_A(V) 223a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block#endif 224a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 225a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// Define list of builtins implemented in JavaScript. 226a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block#define BUILTINS_LIST_JS(V) \ 227a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block V(EQUALS, 1) \ 228a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block V(STRICT_EQUALS, 1) \ 229a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block V(COMPARE, 2) \ 230a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block V(ADD, 1) \ 231a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block V(SUB, 1) \ 232a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block V(MUL, 1) \ 233a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block V(DIV, 1) \ 234a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block V(MOD, 1) \ 235a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block V(BIT_OR, 1) \ 236a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block V(BIT_AND, 1) \ 237a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block V(BIT_XOR, 1) \ 238a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block V(UNARY_MINUS, 0) \ 239a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block V(BIT_NOT, 0) \ 240a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block V(SHL, 1) \ 241a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block V(SAR, 1) \ 242a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block V(SHR, 1) \ 243e0cee9b3ed82e2391fd85d118aeaa4ea361c687dBen Murdoch V(DELETE, 2) \ 244a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block V(IN, 1) \ 245a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block V(INSTANCE_OF, 1) \ 246a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block V(FILTER_KEY, 1) \ 247a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block V(CALL_NON_FUNCTION, 0) \ 248a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block V(CALL_NON_FUNCTION_AS_CONSTRUCTOR, 0) \ 249589d6979ff2ef66fca2d8fa51404c369ca5e9250Ben Murdoch V(CALL_FUNCTION_PROXY, 1) \ 250589d6979ff2ef66fca2d8fa51404c369ca5e9250Ben Murdoch V(CALL_FUNCTION_PROXY_AS_CONSTRUCTOR, 1) \ 251a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block V(TO_OBJECT, 0) \ 252a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block V(TO_NUMBER, 0) \ 253a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block V(TO_STRING, 0) \ 254a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block V(STRING_ADD_LEFT, 1) \ 255a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block V(STRING_ADD_RIGHT, 1) \ 256a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block V(APPLY_PREPARE, 1) \ 2576ded16be15dd865a9b21ea304d5273c8be299c87Steve Block V(APPLY_OVERFLOW, 1) 258a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 259a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 26044f0eee88ff00398ff7f715fab053374d808c90dSteve Blockclass BuiltinFunctionTable; 261a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockclass ObjectVisitor; 262a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 263a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 26444f0eee88ff00398ff7f715fab053374d808c90dSteve Blockclass Builtins { 265a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block public: 26644f0eee88ff00398ff7f715fab053374d808c90dSteve Block ~Builtins(); 26744f0eee88ff00398ff7f715fab053374d808c90dSteve Block 268a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block // Generate all builtin code objects. Should be called once during 26944f0eee88ff00398ff7f715fab053374d808c90dSteve Block // isolate initialization. 2703ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch void SetUp(bool create_heap_objects); 27144f0eee88ff00398ff7f715fab053374d808c90dSteve Block void TearDown(); 272a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 273a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block // Garbage collection support. 27444f0eee88ff00398ff7f715fab053374d808c90dSteve Block void IterateBuiltins(ObjectVisitor* v); 275a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 276a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block // Disassembler support. 27744f0eee88ff00398ff7f715fab053374d808c90dSteve Block const char* Lookup(byte* pc); 278a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 279a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block enum Name { 28044f0eee88ff00398ff7f715fab053374d808c90dSteve Block#define DEF_ENUM_C(name, ignore) k##name, 28144f0eee88ff00398ff7f715fab053374d808c90dSteve Block#define DEF_ENUM_A(name, kind, state, extra) k##name, 282a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block BUILTIN_LIST_C(DEF_ENUM_C) 283a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block BUILTIN_LIST_A(DEF_ENUM_A) 284a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block BUILTIN_LIST_DEBUG_A(DEF_ENUM_A) 285a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block#undef DEF_ENUM_C 286a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block#undef DEF_ENUM_A 287a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block builtin_count 288a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block }; 289a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 290a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block enum CFunctionId { 291e46be819fca9468a0cd4e74859ce0f778eb8ca60Leon Clarke#define DEF_ENUM_C(name, ignore) c_##name, 292a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block BUILTIN_LIST_C(DEF_ENUM_C) 293a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block#undef DEF_ENUM_C 294a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block cfunction_count 295a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block }; 296a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 297a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block enum JavaScript { 298a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block#define DEF_ENUM(name, ignore) name, 299a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block BUILTINS_LIST_JS(DEF_ENUM) 300a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block#undef DEF_ENUM 301a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block id_count 302a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block }; 303a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 30444f0eee88ff00398ff7f715fab053374d808c90dSteve Block#define DECLARE_BUILTIN_ACCESSOR_C(name, ignore) Handle<Code> name(); 30544f0eee88ff00398ff7f715fab053374d808c90dSteve Block#define DECLARE_BUILTIN_ACCESSOR_A(name, kind, state, extra) \ 30644f0eee88ff00398ff7f715fab053374d808c90dSteve Block Handle<Code> name(); 30744f0eee88ff00398ff7f715fab053374d808c90dSteve Block BUILTIN_LIST_C(DECLARE_BUILTIN_ACCESSOR_C) 30844f0eee88ff00398ff7f715fab053374d808c90dSteve Block BUILTIN_LIST_A(DECLARE_BUILTIN_ACCESSOR_A) 30944f0eee88ff00398ff7f715fab053374d808c90dSteve Block BUILTIN_LIST_DEBUG_A(DECLARE_BUILTIN_ACCESSOR_A) 31044f0eee88ff00398ff7f715fab053374d808c90dSteve Block#undef DECLARE_BUILTIN_ACCESSOR_C 31144f0eee88ff00398ff7f715fab053374d808c90dSteve Block#undef DECLARE_BUILTIN_ACCESSOR_A 31244f0eee88ff00398ff7f715fab053374d808c90dSteve Block 31344f0eee88ff00398ff7f715fab053374d808c90dSteve Block Code* builtin(Name name) { 314a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block // Code::cast cannot be used here since we access builtins 315a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block // during the marking phase of mark sweep. See IC::Clear. 316a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block return reinterpret_cast<Code*>(builtins_[name]); 317a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block } 318a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 31944f0eee88ff00398ff7f715fab053374d808c90dSteve Block Address builtin_address(Name name) { 320a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block return reinterpret_cast<Address>(&builtins_[name]); 321a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block } 322a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 323a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block static Address c_function_address(CFunctionId id) { 324a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block return c_functions_[id]; 325a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block } 326a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 327a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block static const char* GetName(JavaScript id) { return javascript_names_[id]; } 328a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block static int GetArgumentsCount(JavaScript id) { return javascript_argc_[id]; } 32944f0eee88ff00398ff7f715fab053374d808c90dSteve Block Handle<Code> GetCode(JavaScript id, bool* resolved); 330a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block static int NumberOfJavaScriptBuiltins() { return id_count; } 331a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 33244f0eee88ff00398ff7f715fab053374d808c90dSteve Block bool is_initialized() const { return initialized_; } 33344f0eee88ff00398ff7f715fab053374d808c90dSteve Block 334a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block private: 33544f0eee88ff00398ff7f715fab053374d808c90dSteve Block Builtins(); 33644f0eee88ff00398ff7f715fab053374d808c90dSteve Block 337a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block // The external C++ functions called from the code. 33844f0eee88ff00398ff7f715fab053374d808c90dSteve Block static Address const c_functions_[cfunction_count]; 339a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 340a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block // Note: These are always Code objects, but to conform with 341a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block // IterateBuiltins() above which assumes Object**'s for the callback 342a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block // function f, we use an Object* array here. 34344f0eee88ff00398ff7f715fab053374d808c90dSteve Block Object* builtins_[builtin_count]; 34444f0eee88ff00398ff7f715fab053374d808c90dSteve Block const char* names_[builtin_count]; 34544f0eee88ff00398ff7f715fab053374d808c90dSteve Block static const char* const javascript_names_[id_count]; 34644f0eee88ff00398ff7f715fab053374d808c90dSteve Block static int const javascript_argc_[id_count]; 347a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 348e46be819fca9468a0cd4e74859ce0f778eb8ca60Leon Clarke static void Generate_Adaptor(MacroAssembler* masm, 349e46be819fca9468a0cd4e74859ce0f778eb8ca60Leon Clarke CFunctionId id, 350e46be819fca9468a0cd4e74859ce0f778eb8ca60Leon Clarke BuiltinExtraArguments extra_args); 3510d5e116f6aee03185f237311a943491bb079a768Kristian Monsen static void Generate_JSConstructStubCountdown(MacroAssembler* masm); 352a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block static void Generate_JSConstructStubGeneric(MacroAssembler* masm); 353e46be819fca9468a0cd4e74859ce0f778eb8ca60Leon Clarke static void Generate_JSConstructStubApi(MacroAssembler* masm); 354a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block static void Generate_JSEntryTrampoline(MacroAssembler* masm); 355a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block static void Generate_JSConstructEntryTrampoline(MacroAssembler* masm); 356756813857a4c2a4d8ad2e805969d5768d3cf43a0Iain Merrick static void Generate_LazyCompile(MacroAssembler* masm); 357b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch static void Generate_LazyRecompile(MacroAssembler* masm); 358b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch static void Generate_NotifyDeoptimized(MacroAssembler* masm); 359b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch static void Generate_NotifyLazyDeoptimized(MacroAssembler* masm); 360b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch static void Generate_NotifyOSR(MacroAssembler* masm); 361a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block static void Generate_ArgumentsAdaptorTrampoline(MacroAssembler* masm); 362a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 363a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block static void Generate_FunctionCall(MacroAssembler* masm); 364a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block static void Generate_FunctionApply(MacroAssembler* masm); 365a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 3663ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch static void Generate_InternalArrayCode(MacroAssembler* masm); 367a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block static void Generate_ArrayCode(MacroAssembler* masm); 368a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block static void Generate_ArrayConstructCode(MacroAssembler* masm); 36980d68eab642096c1a48b6474d6ec33064b0ad1f5Kristian Monsen 37080d68eab642096c1a48b6474d6ec33064b0ad1f5Kristian Monsen static void Generate_StringConstructCode(MacroAssembler* masm); 371b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch static void Generate_OnStackReplacement(MacroAssembler* masm); 37244f0eee88ff00398ff7f715fab053374d808c90dSteve Block 37344f0eee88ff00398ff7f715fab053374d808c90dSteve Block static void InitBuiltinFunctionTable(); 37444f0eee88ff00398ff7f715fab053374d808c90dSteve Block 37544f0eee88ff00398ff7f715fab053374d808c90dSteve Block bool initialized_; 37644f0eee88ff00398ff7f715fab053374d808c90dSteve Block 37744f0eee88ff00398ff7f715fab053374d808c90dSteve Block friend class BuiltinFunctionTable; 37844f0eee88ff00398ff7f715fab053374d808c90dSteve Block friend class Isolate; 37944f0eee88ff00398ff7f715fab053374d808c90dSteve Block 38044f0eee88ff00398ff7f715fab053374d808c90dSteve Block DISALLOW_COPY_AND_ASSIGN(Builtins); 381a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block}; 382a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 383a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block} } // namespace v8::internal 384a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 385a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block#endif // V8_BUILTINS_H_ 386