1 // Copyright 2017 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef V8_BUILTINS_BUILTINS_DEFINITIONS_H_
6 #define V8_BUILTINS_BUILTINS_DEFINITIONS_H_
7 
8 #include "builtins-generated/bytecodes-builtins-list.h"
9 
10 // include generated header
11 #include "torque-generated/builtin-definitions.h"
12 
13 namespace v8 {
14 namespace internal {
15 
16 // CPP: Builtin in C++. Entered via BUILTIN_EXIT frame.
17 //      Args: name
18 // TFJ: Builtin in Turbofan, with JS linkage (callable as Javascript function).
19 //      Args: name, arguments count, explicit argument names...
20 // TFS: Builtin in Turbofan, with CodeStub linkage.
21 //      Args: name, explicit argument names...
22 // TFC: Builtin in Turbofan, with CodeStub linkage and custom descriptor.
23 //      Args: name, interface descriptor
24 // TFH: Handlers in Turbofan, with CodeStub linkage.
25 //      Args: name, interface descriptor
26 // BCH: Bytecode Handlers, with bytecode dispatch linkage.
27 //      Args: name, OperandScale, Bytecode
28 // ASM: Builtin in platform-dependent assembly.
29 //      Args: name, interface descriptor
30 
31 // TODO(jgruber): Remove DummyDescriptor once all ASM builtins have been
32 // properly associated with their descriptor.
33 
34 #define BUILTIN_LIST_BASE(CPP, TFJ, TFC, TFS, TFH, ASM)                        \
35   /* GC write barrirer */                                                      \
36   TFC(RecordWrite, RecordWrite)                                                \
37   TFC(EphemeronKeyBarrier, EphemeronKeyBarrier)                                \
38                                                                                \
39   /* Adaptor for CPP builtin */                                                \
40   TFC(AdaptorWithBuiltinExitFrame, CppBuiltinAdaptor)                          \
41                                                                                \
42   /* Calls */                                                                  \
43   ASM(ArgumentsAdaptorTrampoline, ArgumentsAdaptor)                            \
44   /* ES6 section 9.2.1 [[Call]] ( thisArgument, argumentsList) */              \
45   ASM(CallFunction_ReceiverIsNullOrUndefined, CallTrampoline)                  \
46   ASM(CallFunction_ReceiverIsNotNullOrUndefined, CallTrampoline)               \
47   ASM(CallFunction_ReceiverIsAny, CallTrampoline)                              \
48   /* ES6 section 9.4.1.1 [[Call]] ( thisArgument, argumentsList) */            \
49   ASM(CallBoundFunction, CallTrampoline)                                       \
50   /* ES6 section 7.3.12 Call(F, V, [argumentsList]) */                         \
51   ASM(Call_ReceiverIsNullOrUndefined, CallTrampoline)                          \
52   ASM(Call_ReceiverIsNotNullOrUndefined, CallTrampoline)                       \
53   ASM(Call_ReceiverIsAny, CallTrampoline)                                      \
54   TFC(Call_ReceiverIsNullOrUndefined_WithFeedback,                             \
55       CallTrampoline_WithFeedback)                                             \
56   TFC(Call_ReceiverIsNotNullOrUndefined_WithFeedback,                          \
57       CallTrampoline_WithFeedback)                                             \
58   TFC(Call_ReceiverIsAny_WithFeedback, CallTrampoline_WithFeedback)            \
59                                                                                \
60   /* ES6 section 9.5.12[[Call]] ( thisArgument, argumentsList ) */             \
61   TFC(CallProxy, CallTrampoline)                                               \
62   ASM(CallVarargs, CallVarargs)                                                \
63   TFC(CallWithSpread, CallWithSpread)                                          \
64   TFC(CallWithSpread_WithFeedback, CallWithSpread_WithFeedback)                \
65   TFC(CallWithArrayLike, CallWithArrayLike)                                    \
66   TFC(CallWithArrayLike_WithFeedback, CallWithArrayLike_WithFeedback)          \
67   ASM(CallForwardVarargs, CallForwardVarargs)                                  \
68   ASM(CallFunctionForwardVarargs, CallForwardVarargs)                          \
69   /* Call an API callback via a {FunctionTemplateInfo}, doing appropriate */   \
70   /* access and compatible receiver checks. */                                 \
71   TFC(CallFunctionTemplate_CheckAccess, CallFunctionTemplate)                  \
72   TFC(CallFunctionTemplate_CheckCompatibleReceiver, CallFunctionTemplate)      \
73   TFC(CallFunctionTemplate_CheckAccessAndCompatibleReceiver,                   \
74       CallFunctionTemplate)                                                    \
75                                                                                \
76   /* Construct */                                                              \
77   /* ES6 section 9.2.2 [[Construct]] ( argumentsList, newTarget) */            \
78   ASM(ConstructFunction, JSTrampoline)                                         \
79   /* ES6 section 9.4.1.2 [[Construct]] (argumentsList, newTarget) */           \
80   ASM(ConstructBoundFunction, JSTrampoline)                                    \
81   ASM(ConstructedNonConstructable, JSTrampoline)                               \
82   /* ES6 section 7.3.13 Construct (F, [argumentsList], [newTarget]) */         \
83   ASM(Construct, JSTrampoline)                                                 \
84   ASM(ConstructVarargs, ConstructVarargs)                                      \
85   TFC(ConstructWithSpread, ConstructWithSpread)                                \
86   TFC(ConstructWithSpread_WithFeedback, ConstructWithSpread_WithFeedback)      \
87   TFC(ConstructWithArrayLike, ConstructWithArrayLike)                          \
88   TFC(ConstructWithArrayLike_WithFeedback,                                     \
89       ConstructWithArrayLike_WithFeedback)                                     \
90   ASM(ConstructForwardVarargs, ConstructForwardVarargs)                        \
91   ASM(ConstructFunctionForwardVarargs, ConstructForwardVarargs)                \
92   TFC(Construct_WithFeedback, Construct_WithFeedback)                          \
93   ASM(JSConstructStubGeneric, Dummy)                                           \
94   ASM(JSBuiltinsConstructStub, Dummy)                                          \
95   TFC(FastNewObject, FastNewObject)                                            \
96   TFS(FastNewClosure, kSharedFunctionInfo, kFeedbackCell)                      \
97   /* ES6 section 9.5.14 [[Construct]] ( argumentsList, newTarget) */           \
98   TFC(ConstructProxy, JSTrampoline)                                            \
99                                                                                \
100   /* Apply and entries */                                                      \
101   ASM(JSEntry, Dummy)                                                          \
102   ASM(JSConstructEntry, Dummy)                                                 \
103   ASM(JSRunMicrotasksEntry, RunMicrotasksEntry)                                \
104   ASM(JSEntryTrampoline, JSTrampoline)                                         \
105   ASM(JSConstructEntryTrampoline, JSTrampoline)                                \
106   ASM(ResumeGeneratorTrampoline, ResumeGenerator)                              \
107                                                                                \
108   /* String helpers */                                                         \
109   TFC(StringCodePointAt, StringAt)                                             \
110   TFC(StringFromCodePointAt, StringAtAsString)                                 \
111   TFC(StringEqual, Compare)                                                    \
112   TFC(StringGreaterThan, Compare)                                              \
113   TFC(StringGreaterThanOrEqual, Compare)                                       \
114   TFS(StringIndexOf, kReceiver, kSearchString, kPosition)                      \
115   TFC(StringLessThan, Compare)                                                 \
116   TFC(StringLessThanOrEqual, Compare)                                          \
117   TFC(StringSubstring, StringSubstring)                                        \
118                                                                                \
119   /* OrderedHashTable helpers */                                               \
120   TFS(OrderedHashTableHealIndex, kTable, kIndex)                               \
121                                                                                \
122   /* Interpreter */                                                            \
123   ASM(InterpreterEntryTrampoline, JSTrampoline)                                \
124   ASM(InterpreterPushArgsThenCall, InterpreterPushArgsThenCall)                \
125   ASM(InterpreterPushUndefinedAndArgsThenCall, InterpreterPushArgsThenCall)    \
126   ASM(InterpreterPushArgsThenCallWithFinalSpread, InterpreterPushArgsThenCall) \
127   ASM(InterpreterPushArgsThenConstruct, InterpreterPushArgsThenConstruct)      \
128   ASM(InterpreterPushArgsThenConstructArrayFunction,                           \
129       InterpreterPushArgsThenConstruct)                                        \
130   ASM(InterpreterPushArgsThenConstructWithFinalSpread,                         \
131       InterpreterPushArgsThenConstruct)                                        \
132   ASM(InterpreterEnterBytecodeAdvance, Dummy)                                  \
133   ASM(InterpreterEnterBytecodeDispatch, Dummy)                                 \
134   ASM(InterpreterOnStackReplacement, ContextOnly)                              \
135                                                                                \
136   /* Code life-cycle */                                                        \
137   TFC(CompileLazy, JSTrampoline)                                               \
138   TFC(CompileLazyDeoptimizedCode, JSTrampoline)                                \
139   TFC(InstantiateAsmJs, JSTrampoline)                                          \
140   ASM(NotifyDeoptimized, Dummy)                                                \
141   ASM(DeoptimizationEntry_Eager, DeoptimizationEntry)                          \
142   ASM(DeoptimizationEntry_Soft, DeoptimizationEntry)                           \
143   ASM(DeoptimizationEntry_Bailout, DeoptimizationEntry)                        \
144   ASM(DeoptimizationEntry_Lazy, DeoptimizationEntry)                           \
145                                                                                \
146   /* Trampolines called when returning from a deoptimization that expects   */ \
147   /* to continue in a JavaScript builtin to finish the functionality of a   */ \
148   /* an TF-inlined version of builtin that has side-effects.                */ \
149   /*                                                                        */ \
150   /* The trampolines work as follows:                                       */ \
151   /*   1. Trampoline restores input register values that                    */ \
152   /*      the builtin expects from a BuiltinContinuationFrame.              */ \
153   /*   2. Trampoline tears down BuiltinContinuationFrame.                   */ \
154   /*   3. Trampoline jumps to the builtin's address.                        */ \
155   /*   4. Builtin executes as if invoked by the frame above it.             */ \
156   /*   5. When the builtin returns, execution resumes normally in the       */ \
157   /*      calling frame, processing any return result from the JavaScript   */ \
158   /*      builtin as if it had called the builtin directly.                 */ \
159   /*                                                                        */ \
160   /* There are two variants of the stub that differ in their handling of a  */ \
161   /* value returned by the next frame deeper on the stack. For LAZY deopts, */ \
162   /* the return value (e.g. rax on x64) is explicitly passed as an extra    */ \
163   /* stack parameter to the JavaScript builtin by the "WithResult"          */ \
164   /* trampoline variant. The plain variant is used in EAGER deopt contexts  */ \
165   /* and has no such special handling. */                                      \
166   ASM(ContinueToCodeStubBuiltin, Dummy)                                        \
167   ASM(ContinueToCodeStubBuiltinWithResult, Dummy)                              \
168   ASM(ContinueToJavaScriptBuiltin, Dummy)                                      \
169   ASM(ContinueToJavaScriptBuiltinWithResult, Dummy)                            \
170                                                                                \
171   /* API callback handling */                                                  \
172   ASM(CallApiCallback, ApiCallback)                                            \
173   ASM(CallApiGetter, ApiGetter)                                                \
174   CPP(HandleApiCall)                                                           \
175   CPP(HandleApiCallAsFunction)                                                 \
176   CPP(HandleApiCallAsConstructor)                                              \
177                                                                                \
178   /* Adapters for Turbofan into runtime */                                     \
179   TFC(AllocateInYoungGeneration, Allocate)                                     \
180   TFC(AllocateRegularInYoungGeneration, Allocate)                              \
181   TFC(AllocateInOldGeneration, Allocate)                                       \
182   TFC(AllocateRegularInOldGeneration, Allocate)                                \
183                                                                                \
184   /* TurboFan support builtins */                                              \
185   TFS(CopyFastSmiOrObjectElements, kObject)                                    \
186   TFC(GrowFastDoubleElements, GrowArrayElements)                               \
187   TFC(GrowFastSmiOrObjectElements, GrowArrayElements)                          \
188                                                                                \
189   /* Debugger */                                                               \
190   TFJ(DebugBreakTrampoline, kDontAdaptArgumentsSentinel)                       \
191   ASM(FrameDropperTrampoline, FrameDropperTrampoline)                          \
192   ASM(HandleDebuggerStatement, ContextOnly)                                    \
193                                                                                \
194   /* Type conversions */                                                       \
195   TFC(ToNumber, TypeConversion)                                                \
196   TFC(PlainPrimitiveToNumber, TypeConversionNoContext)                         \
197   TFC(ToNumberConvertBigInt, TypeConversion)                                   \
198   TFC(Typeof, Typeof)                                                          \
199   TFC(BigIntToI64, BigIntToI64)                                                \
200   TFC(BigIntToI32Pair, BigIntToI32Pair)                                        \
201   TFC(I64ToBigInt, I64ToBigInt)                                                \
202   TFC(I32PairToBigInt, I32PairToBigInt)                                        \
203                                                                                \
204   /* Type conversions continuations */                                         \
205   TFC(ToBooleanLazyDeoptContinuation, TypeConversionStackParameter)            \
206                                                                                \
207   /* Handlers */                                                               \
208   TFH(KeyedLoadIC_PolymorphicName, LoadWithVector)                             \
209   TFH(KeyedStoreIC_Megamorphic, Store)                                         \
210   TFH(LoadGlobalIC_NoFeedback, LoadGlobalNoFeedback)                           \
211   TFH(LoadIC_FunctionPrototype, LoadWithVector)                                \
212   TFH(LoadIC_StringLength, LoadWithVector)                                     \
213   TFH(LoadIC_StringWrapperLength, LoadWithVector)                              \
214   TFH(LoadIC_NoFeedback, LoadNoFeedback)                                       \
215   TFH(StoreGlobalIC_Slow, StoreWithVector)                                     \
216   TFH(StoreIC_NoFeedback, Store)                                               \
217   TFH(KeyedLoadIC_SloppyArguments, LoadWithVector)                             \
218   TFH(LoadIndexedInterceptorIC, LoadWithVector)                                \
219   TFH(KeyedStoreIC_SloppyArguments_Standard, StoreWithVector)                  \
220   TFH(KeyedStoreIC_SloppyArguments_GrowNoTransitionHandleCOW, StoreWithVector) \
221   TFH(KeyedStoreIC_SloppyArguments_NoTransitionIgnoreOOB, StoreWithVector)     \
222   TFH(KeyedStoreIC_SloppyArguments_NoTransitionHandleCOW, StoreWithVector)     \
223   TFH(StoreFastElementIC_Standard, StoreWithVector)                            \
224   TFH(StoreFastElementIC_GrowNoTransitionHandleCOW, StoreWithVector)           \
225   TFH(StoreFastElementIC_NoTransitionIgnoreOOB, StoreWithVector)               \
226   TFH(StoreFastElementIC_NoTransitionHandleCOW, StoreWithVector)               \
227   TFH(ElementsTransitionAndStore_Standard, StoreTransition)                    \
228   TFH(ElementsTransitionAndStore_GrowNoTransitionHandleCOW, StoreTransition)   \
229   TFH(ElementsTransitionAndStore_NoTransitionIgnoreOOB, StoreTransition)       \
230   TFH(ElementsTransitionAndStore_NoTransitionHandleCOW, StoreTransition)       \
231   TFH(KeyedHasIC_PolymorphicName, LoadWithVector)                              \
232   TFH(KeyedHasIC_SloppyArguments, LoadWithVector)                              \
233   TFH(HasIndexedInterceptorIC, LoadWithVector)                                 \
234                                                                                \
235   /* Microtask helpers */                                                      \
236   TFS(EnqueueMicrotask, kMicrotask)                                            \
237   ASM(RunMicrotasksTrampoline, RunMicrotasksEntry)                             \
238   TFC(RunMicrotasks, RunMicrotasks)                                            \
239                                                                                \
240   /* Object property helpers */                                                \
241   TFS(HasProperty, kObject, kKey)                                              \
242   TFS(DeleteProperty, kObject, kKey, kLanguageMode)                            \
243   /* ES #sec-copydataproperties */                                             \
244   TFS(CopyDataProperties, kTarget, kSource)                                    \
245   TFS(SetDataProperties, kTarget, kSource)                                     \
246                                                                                \
247   /* Abort */                                                                  \
248   TFC(Abort, Abort)                                                            \
249   TFC(AbortCSAAssert, Abort)                                                   \
250                                                                                \
251   /* Built-in functions for Javascript */                                      \
252   /* Special internal builtins */                                              \
253   CPP(EmptyFunction)                                                           \
254   CPP(Illegal)                                                                 \
255   CPP(StrictPoisonPillThrower)                                                 \
256   CPP(UnsupportedThrower)                                                      \
257   TFJ(ReturnReceiver, 0, kReceiver)                                            \
258                                                                                \
259   /* Array */                                                                  \
260   TFC(ArrayConstructor, JSTrampoline)                                          \
261   TFC(ArrayConstructorImpl, ArrayConstructor)                                  \
262   TFC(ArrayNoArgumentConstructor_PackedSmi_DontOverride,                       \
263       ArrayNoArgumentConstructor)                                              \
264   TFC(ArrayNoArgumentConstructor_HoleySmi_DontOverride,                        \
265       ArrayNoArgumentConstructor)                                              \
266   TFC(ArrayNoArgumentConstructor_PackedSmi_DisableAllocationSites,             \
267       ArrayNoArgumentConstructor)                                              \
268   TFC(ArrayNoArgumentConstructor_HoleySmi_DisableAllocationSites,              \
269       ArrayNoArgumentConstructor)                                              \
270   TFC(ArrayNoArgumentConstructor_Packed_DisableAllocationSites,                \
271       ArrayNoArgumentConstructor)                                              \
272   TFC(ArrayNoArgumentConstructor_Holey_DisableAllocationSites,                 \
273       ArrayNoArgumentConstructor)                                              \
274   TFC(ArrayNoArgumentConstructor_PackedDouble_DisableAllocationSites,          \
275       ArrayNoArgumentConstructor)                                              \
276   TFC(ArrayNoArgumentConstructor_HoleyDouble_DisableAllocationSites,           \
277       ArrayNoArgumentConstructor)                                              \
278   TFC(ArraySingleArgumentConstructor_PackedSmi_DontOverride,                   \
279       ArraySingleArgumentConstructor)                                          \
280   TFC(ArraySingleArgumentConstructor_HoleySmi_DontOverride,                    \
281       ArraySingleArgumentConstructor)                                          \
282   TFC(ArraySingleArgumentConstructor_PackedSmi_DisableAllocationSites,         \
283       ArraySingleArgumentConstructor)                                          \
284   TFC(ArraySingleArgumentConstructor_HoleySmi_DisableAllocationSites,          \
285       ArraySingleArgumentConstructor)                                          \
286   TFC(ArraySingleArgumentConstructor_Packed_DisableAllocationSites,            \
287       ArraySingleArgumentConstructor)                                          \
288   TFC(ArraySingleArgumentConstructor_Holey_DisableAllocationSites,             \
289       ArraySingleArgumentConstructor)                                          \
290   TFC(ArraySingleArgumentConstructor_PackedDouble_DisableAllocationSites,      \
291       ArraySingleArgumentConstructor)                                          \
292   TFC(ArraySingleArgumentConstructor_HoleyDouble_DisableAllocationSites,       \
293       ArraySingleArgumentConstructor)                                          \
294   TFC(ArrayNArgumentsConstructor, ArrayNArgumentsConstructor)                  \
295   CPP(ArrayConcat)                                                             \
296   /* ES6 #sec-array.prototype.fill */                                          \
297   CPP(ArrayPrototypeFill)                                                      \
298   /* ES7 #sec-array.prototype.includes */                                      \
299   TFS(ArrayIncludesSmiOrObject, kElements, kSearchElement, kLength,            \
300       kFromIndex)                                                              \
301   TFS(ArrayIncludesPackedDoubles, kElements, kSearchElement, kLength,          \
302       kFromIndex)                                                              \
303   TFS(ArrayIncludesHoleyDoubles, kElements, kSearchElement, kLength,           \
304       kFromIndex)                                                              \
305   TFJ(ArrayIncludes, kDontAdaptArgumentsSentinel)                              \
306   /* ES6 #sec-array.prototype.indexof */                                       \
307   TFS(ArrayIndexOfSmiOrObject, kElements, kSearchElement, kLength, kFromIndex) \
308   TFS(ArrayIndexOfPackedDoubles, kElements, kSearchElement, kLength,           \
309       kFromIndex)                                                              \
310   TFS(ArrayIndexOfHoleyDoubles, kElements, kSearchElement, kLength,            \
311       kFromIndex)                                                              \
312   TFJ(ArrayIndexOf, kDontAdaptArgumentsSentinel)                               \
313   /* ES6 #sec-array.prototype.pop */                                           \
314   CPP(ArrayPop)                                                                \
315   TFJ(ArrayPrototypePop, kDontAdaptArgumentsSentinel)                          \
316   /* ES6 #sec-array.prototype.push */                                          \
317   CPP(ArrayPush)                                                               \
318   TFJ(ArrayPrototypePush, kDontAdaptArgumentsSentinel)                         \
319   /* ES6 #sec-array.prototype.shift */                                         \
320   CPP(ArrayShift)                                                              \
321   /* ES6 #sec-array.prototype.unshift */                                       \
322   CPP(ArrayUnshift)                                                            \
323   /* Support for Array.from and other array-copying idioms */                  \
324   TFS(CloneFastJSArray, kSource)                                               \
325   TFS(CloneFastJSArrayFillingHoles, kSource)                                   \
326   TFS(ExtractFastJSArray, kSource, kBegin, kCount)                             \
327   /* ES6 #sec-array.prototype.entries */                                       \
328   TFJ(ArrayPrototypeEntries, 0, kReceiver)                                     \
329   /* ES6 #sec-array.prototype.keys */                                          \
330   TFJ(ArrayPrototypeKeys, 0, kReceiver)                                        \
331   /* ES6 #sec-array.prototype.values */                                        \
332   TFJ(ArrayPrototypeValues, 0, kReceiver)                                      \
333   /* ES6 #sec-%arrayiteratorprototype%.next */                                 \
334   TFJ(ArrayIteratorPrototypeNext, 0, kReceiver)                                \
335   /* https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray */          \
336   TFS(FlattenIntoArray, kTarget, kSource, kSourceLength, kStart, kDepth)       \
337   TFS(FlatMapIntoArray, kTarget, kSource, kSourceLength, kStart, kDepth,       \
338       kMapperFunction, kThisArg)                                               \
339   /* https://tc39.github.io/proposal-flatMap/#sec-Array.prototype.flat */      \
340   TFJ(ArrayPrototypeFlat, kDontAdaptArgumentsSentinel)                         \
341   /* https://tc39.github.io/proposal-flatMap/#sec-Array.prototype.flatMap */   \
342   TFJ(ArrayPrototypeFlatMap, kDontAdaptArgumentsSentinel)                      \
343                                                                                \
344   /* ArrayBuffer */                                                            \
345   /* ES #sec-arraybuffer-constructor */                                        \
346   CPP(ArrayBufferConstructor)                                                  \
347   CPP(ArrayBufferConstructor_DoNotInitialize)                                  \
348   CPP(ArrayBufferPrototypeSlice)                                               \
349                                                                                \
350   /* AsyncFunction */                                                          \
351   TFS(AsyncFunctionEnter, kClosure, kReceiver)                                 \
352   TFS(AsyncFunctionReject, kAsyncFunctionObject, kReason, kCanSuspend)         \
353   TFS(AsyncFunctionResolve, kAsyncFunctionObject, kValue, kCanSuspend)         \
354   TFC(AsyncFunctionLazyDeoptContinuation, AsyncFunctionStackParameter)         \
355   TFS(AsyncFunctionAwaitCaught, kAsyncFunctionObject, kValue)                  \
356   TFS(AsyncFunctionAwaitUncaught, kAsyncFunctionObject, kValue)                \
357   TFJ(AsyncFunctionAwaitRejectClosure, 1, kReceiver, kSentError)               \
358   TFJ(AsyncFunctionAwaitResolveClosure, 1, kReceiver, kSentValue)              \
359                                                                                \
360   /* BigInt */                                                                 \
361   CPP(BigIntConstructor)                                                       \
362   CPP(BigIntAsUintN)                                                           \
363   CPP(BigIntAsIntN)                                                            \
364   CPP(BigIntPrototypeToLocaleString)                                           \
365   CPP(BigIntPrototypeToString)                                                 \
366   CPP(BigIntPrototypeValueOf)                                                  \
367                                                                                \
368   /* CallSite */                                                               \
369   CPP(CallSitePrototypeGetColumnNumber)                                        \
370   CPP(CallSitePrototypeGetEvalOrigin)                                          \
371   CPP(CallSitePrototypeGetFileName)                                            \
372   CPP(CallSitePrototypeGetFunction)                                            \
373   CPP(CallSitePrototypeGetFunctionName)                                        \
374   CPP(CallSitePrototypeGetLineNumber)                                          \
375   CPP(CallSitePrototypeGetMethodName)                                          \
376   CPP(CallSitePrototypeGetPosition)                                            \
377   CPP(CallSitePrototypeGetPromiseIndex)                                        \
378   CPP(CallSitePrototypeGetScriptNameOrSourceURL)                               \
379   CPP(CallSitePrototypeGetThis)                                                \
380   CPP(CallSitePrototypeGetTypeName)                                            \
381   CPP(CallSitePrototypeIsAsync)                                                \
382   CPP(CallSitePrototypeIsConstructor)                                          \
383   CPP(CallSitePrototypeIsEval)                                                 \
384   CPP(CallSitePrototypeIsNative)                                               \
385   CPP(CallSitePrototypeIsPromiseAll)                                           \
386   CPP(CallSitePrototypeIsToplevel)                                             \
387   CPP(CallSitePrototypeToString)                                               \
388                                                                                \
389   /* Console */                                                                \
390   CPP(ConsoleDebug)                                                            \
391   CPP(ConsoleError)                                                            \
392   CPP(ConsoleInfo)                                                             \
393   CPP(ConsoleLog)                                                              \
394   CPP(ConsoleWarn)                                                             \
395   CPP(ConsoleDir)                                                              \
396   CPP(ConsoleDirXml)                                                           \
397   CPP(ConsoleTable)                                                            \
398   CPP(ConsoleTrace)                                                            \
399   CPP(ConsoleGroup)                                                            \
400   CPP(ConsoleGroupCollapsed)                                                   \
401   CPP(ConsoleGroupEnd)                                                         \
402   CPP(ConsoleClear)                                                            \
403   CPP(ConsoleCount)                                                            \
404   CPP(ConsoleCountReset)                                                       \
405   CPP(ConsoleAssert)                                                           \
406   CPP(ConsoleProfile)                                                          \
407   CPP(ConsoleProfileEnd)                                                       \
408   CPP(ConsoleTime)                                                             \
409   CPP(ConsoleTimeLog)                                                          \
410   CPP(ConsoleTimeEnd)                                                          \
411   CPP(ConsoleTimeStamp)                                                        \
412   CPP(ConsoleContext)                                                          \
413                                                                                \
414   /* DataView */                                                               \
415   /* ES #sec-dataview-constructor */                                           \
416   CPP(DataViewConstructor)                                                     \
417                                                                                \
418   /* Date */                                                                   \
419   /* ES #sec-date-constructor */                                               \
420   CPP(DateConstructor)                                                         \
421   /* ES6 #sec-date.prototype.getdate */                                        \
422   TFJ(DatePrototypeGetDate, 0, kReceiver)                                      \
423   /* ES6 #sec-date.prototype.getday */                                         \
424   TFJ(DatePrototypeGetDay, 0, kReceiver)                                       \
425   /* ES6 #sec-date.prototype.getfullyear */                                    \
426   TFJ(DatePrototypeGetFullYear, 0, kReceiver)                                  \
427   /* ES6 #sec-date.prototype.gethours */                                       \
428   TFJ(DatePrototypeGetHours, 0, kReceiver)                                     \
429   /* ES6 #sec-date.prototype.getmilliseconds */                                \
430   TFJ(DatePrototypeGetMilliseconds, 0, kReceiver)                              \
431   /* ES6 #sec-date.prototype.getminutes */                                     \
432   TFJ(DatePrototypeGetMinutes, 0, kReceiver)                                   \
433   /* ES6 #sec-date.prototype.getmonth */                                       \
434   TFJ(DatePrototypeGetMonth, 0, kReceiver)                                     \
435   /* ES6 #sec-date.prototype.getseconds */                                     \
436   TFJ(DatePrototypeGetSeconds, 0, kReceiver)                                   \
437   /* ES6 #sec-date.prototype.gettime */                                        \
438   TFJ(DatePrototypeGetTime, 0, kReceiver)                                      \
439   /* ES6 #sec-date.prototype.gettimezoneoffset */                              \
440   TFJ(DatePrototypeGetTimezoneOffset, 0, kReceiver)                            \
441   /* ES6 #sec-date.prototype.getutcdate */                                     \
442   TFJ(DatePrototypeGetUTCDate, 0, kReceiver)                                   \
443   /* ES6 #sec-date.prototype.getutcday */                                      \
444   TFJ(DatePrototypeGetUTCDay, 0, kReceiver)                                    \
445   /* ES6 #sec-date.prototype.getutcfullyear */                                 \
446   TFJ(DatePrototypeGetUTCFullYear, 0, kReceiver)                               \
447   /* ES6 #sec-date.prototype.getutchours */                                    \
448   TFJ(DatePrototypeGetUTCHours, 0, kReceiver)                                  \
449   /* ES6 #sec-date.prototype.getutcmilliseconds */                             \
450   TFJ(DatePrototypeGetUTCMilliseconds, 0, kReceiver)                           \
451   /* ES6 #sec-date.prototype.getutcminutes */                                  \
452   TFJ(DatePrototypeGetUTCMinutes, 0, kReceiver)                                \
453   /* ES6 #sec-date.prototype.getutcmonth */                                    \
454   TFJ(DatePrototypeGetUTCMonth, 0, kReceiver)                                  \
455   /* ES6 #sec-date.prototype.getutcseconds */                                  \
456   TFJ(DatePrototypeGetUTCSeconds, 0, kReceiver)                                \
457   /* ES6 #sec-date.prototype.valueof */                                        \
458   TFJ(DatePrototypeValueOf, 0, kReceiver)                                      \
459   /* ES6 #sec-date.prototype-@@toprimitive */                                  \
460   TFJ(DatePrototypeToPrimitive, 1, kReceiver, kHint)                           \
461   CPP(DatePrototypeGetYear)                                                    \
462   CPP(DatePrototypeSetYear)                                                    \
463   CPP(DateNow)                                                                 \
464   CPP(DateParse)                                                               \
465   CPP(DatePrototypeSetDate)                                                    \
466   CPP(DatePrototypeSetFullYear)                                                \
467   CPP(DatePrototypeSetHours)                                                   \
468   CPP(DatePrototypeSetMilliseconds)                                            \
469   CPP(DatePrototypeSetMinutes)                                                 \
470   CPP(DatePrototypeSetMonth)                                                   \
471   CPP(DatePrototypeSetSeconds)                                                 \
472   CPP(DatePrototypeSetTime)                                                    \
473   CPP(DatePrototypeSetUTCDate)                                                 \
474   CPP(DatePrototypeSetUTCFullYear)                                             \
475   CPP(DatePrototypeSetUTCHours)                                                \
476   CPP(DatePrototypeSetUTCMilliseconds)                                         \
477   CPP(DatePrototypeSetUTCMinutes)                                              \
478   CPP(DatePrototypeSetUTCMonth)                                                \
479   CPP(DatePrototypeSetUTCSeconds)                                              \
480   CPP(DatePrototypeToDateString)                                               \
481   CPP(DatePrototypeToISOString)                                                \
482   CPP(DatePrototypeToUTCString)                                                \
483   CPP(DatePrototypeToString)                                                   \
484   CPP(DatePrototypeToTimeString)                                               \
485   CPP(DatePrototypeToJson)                                                     \
486   CPP(DateUTC)                                                                 \
487                                                                                \
488   /* Error */                                                                  \
489   CPP(ErrorConstructor)                                                        \
490   CPP(ErrorCaptureStackTrace)                                                  \
491   CPP(ErrorPrototypeToString)                                                  \
492                                                                                \
493   /* Function */                                                               \
494   CPP(FunctionConstructor)                                                     \
495   ASM(FunctionPrototypeApply, JSTrampoline)                                    \
496   CPP(FunctionPrototypeBind)                                                   \
497   ASM(FunctionPrototypeCall, JSTrampoline)                                     \
498   /* ES6 #sec-function.prototype.tostring */                                   \
499   CPP(FunctionPrototypeToString)                                               \
500                                                                                \
501   /* Belongs to Objects but is a dependency of GeneratorPrototypeResume */     \
502   TFS(CreateIterResultObject, kValue, kDone)                                   \
503                                                                                \
504   /* Generator and Async */                                                    \
505   TFS(CreateGeneratorObject, kClosure, kReceiver)                              \
506   CPP(GeneratorFunctionConstructor)                                            \
507   /* ES6 #sec-generator.prototype.next */                                      \
508   TFJ(GeneratorPrototypeNext, kDontAdaptArgumentsSentinel)                     \
509   /* ES6 #sec-generator.prototype.return */                                    \
510   TFJ(GeneratorPrototypeReturn, kDontAdaptArgumentsSentinel)                   \
511   /* ES6 #sec-generator.prototype.throw */                                     \
512   TFJ(GeneratorPrototypeThrow, kDontAdaptArgumentsSentinel)                    \
513   CPP(AsyncFunctionConstructor)                                                \
514                                                                                \
515   /* Iterator Protocol */                                                      \
516   TFC(GetIteratorWithFeedbackLazyDeoptContinuation, GetIteratorStackParameter) \
517                                                                                \
518   /* Global object */                                                          \
519   CPP(GlobalDecodeURI)                                                         \
520   CPP(GlobalDecodeURIComponent)                                                \
521   CPP(GlobalEncodeURI)                                                         \
522   CPP(GlobalEncodeURIComponent)                                                \
523   CPP(GlobalEscape)                                                            \
524   CPP(GlobalUnescape)                                                          \
525   CPP(GlobalEval)                                                              \
526   /* ES6 #sec-isfinite-number */                                               \
527   TFJ(GlobalIsFinite, 1, kReceiver, kNumber)                                   \
528   /* ES6 #sec-isnan-number */                                                  \
529   TFJ(GlobalIsNaN, 1, kReceiver, kNumber)                                      \
530                                                                                \
531   /* JSON */                                                                   \
532   CPP(JsonParse)                                                               \
533   CPP(JsonStringify)                                                           \
534                                                                                \
535   /* ICs */                                                                    \
536   TFH(LoadIC, LoadWithVector)                                                  \
537   TFH(LoadIC_Megamorphic, LoadWithVector)                                      \
538   TFH(LoadIC_Noninlined, LoadWithVector)                                       \
539   TFH(LoadICTrampoline, Load)                                                  \
540   TFH(LoadICTrampoline_Megamorphic, Load)                                      \
541   TFH(LoadSuperIC, LoadWithReceiverAndVector)                                  \
542   TFH(KeyedLoadIC, LoadWithVector)                                             \
543   TFH(KeyedLoadIC_Megamorphic, LoadWithVector)                                 \
544   TFH(KeyedLoadICTrampoline, Load)                                             \
545   TFH(KeyedLoadICTrampoline_Megamorphic, Load)                                 \
546   TFH(StoreGlobalIC, StoreGlobalWithVector)                                    \
547   TFH(StoreGlobalICTrampoline, StoreGlobal)                                    \
548   TFH(StoreIC, StoreWithVector)                                                \
549   TFH(StoreICTrampoline, Store)                                                \
550   TFH(KeyedStoreIC, StoreWithVector)                                           \
551   TFH(KeyedStoreICTrampoline, Store)                                           \
552   TFH(StoreInArrayLiteralIC, StoreWithVector)                                  \
553   TFH(LoadGlobalIC, LoadGlobalWithVector)                                      \
554   TFH(LoadGlobalICInsideTypeof, LoadGlobalWithVector)                          \
555   TFH(LoadGlobalICTrampoline, LoadGlobal)                                      \
556   TFH(LoadGlobalICInsideTypeofTrampoline, LoadGlobal)                          \
557   TFH(CloneObjectIC, CloneObjectWithVector)                                    \
558   TFH(CloneObjectIC_Slow, CloneObjectWithVector)                               \
559   TFH(KeyedHasIC, LoadWithVector)                                              \
560   TFH(KeyedHasIC_Megamorphic, LoadWithVector)                                  \
561                                                                                \
562   /* IterableToList */                                                         \
563   /* ES #sec-iterabletolist */                                                 \
564   TFS(IterableToList, kIterable, kIteratorFn)                                  \
565   TFS(IterableToFixedArray, kIterable, kIteratorFn)                            \
566   TFS(IterableToListWithSymbolLookup, kIterable)                               \
567   TFS(IterableToFixedArrayWithSymbolLookupSlow, kIterable)                     \
568   TFS(IterableToListMayPreserveHoles, kIterable, kIteratorFn)                  \
569   TFS(IterableToFixedArrayForWasm, kIterable, kExpectedLength)                 \
570                                                                                \
571   /* #sec-createstringlistfromiterable */                                      \
572   TFS(StringListFromIterable, kIterable)                                       \
573                                                                                \
574   /* Map */                                                                    \
575   TFS(FindOrderedHashMapEntry, kTable, kKey)                                   \
576   TFJ(MapConstructor, kDontAdaptArgumentsSentinel)                             \
577   TFJ(MapPrototypeSet, 2, kReceiver, kKey, kValue)                             \
578   TFJ(MapPrototypeDelete, 1, kReceiver, kKey)                                  \
579   TFJ(MapPrototypeGet, 1, kReceiver, kKey)                                     \
580   TFJ(MapPrototypeHas, 1, kReceiver, kKey)                                     \
581   CPP(MapPrototypeClear)                                                       \
582   /* ES #sec-map.prototype.entries */                                          \
583   TFJ(MapPrototypeEntries, 0, kReceiver)                                       \
584   /* ES #sec-get-map.prototype.size */                                         \
585   TFJ(MapPrototypeGetSize, 0, kReceiver)                                       \
586   /* ES #sec-map.prototype.forEach */                                          \
587   TFJ(MapPrototypeForEach, kDontAdaptArgumentsSentinel)                        \
588   /* ES #sec-map.prototype.keys */                                             \
589   TFJ(MapPrototypeKeys, 0, kReceiver)                                          \
590   /* ES #sec-map.prototype.values */                                           \
591   TFJ(MapPrototypeValues, 0, kReceiver)                                        \
592   /* ES #sec-%mapiteratorprototype%.next */                                    \
593   TFJ(MapIteratorPrototypeNext, 0, kReceiver)                                  \
594   TFS(MapIteratorToList, kSource)                                              \
595                                                                                \
596   /* ES #sec-number-constructor */                                             \
597   CPP(NumberPrototypeToExponential)                                            \
598   CPP(NumberPrototypeToFixed)                                                  \
599   CPP(NumberPrototypeToLocaleString)                                           \
600   CPP(NumberPrototypeToPrecision)                                              \
601   TFC(SameValue, Compare)                                                      \
602   TFC(SameValueNumbersOnly, Compare)                                           \
603                                                                                \
604   /* Binary ops with feedback collection */                                    \
605   TFC(Add_WithFeedback, BinaryOp_WithFeedback)                                 \
606   TFC(Subtract_WithFeedback, BinaryOp_WithFeedback)                            \
607   TFC(Multiply_WithFeedback, BinaryOp_WithFeedback)                            \
608   TFC(Divide_WithFeedback, BinaryOp_WithFeedback)                              \
609   TFC(Modulus_WithFeedback, BinaryOp_WithFeedback)                             \
610   TFC(Exponentiate_WithFeedback, BinaryOp_WithFeedback)                        \
611   TFC(BitwiseAnd_WithFeedback, BinaryOp_WithFeedback)                          \
612   TFC(BitwiseOr_WithFeedback, BinaryOp_WithFeedback)                           \
613   TFC(BitwiseXor_WithFeedback, BinaryOp_WithFeedback)                          \
614   TFC(ShiftLeft_WithFeedback, BinaryOp_WithFeedback)                           \
615   TFC(ShiftRight_WithFeedback, BinaryOp_WithFeedback)                          \
616   TFC(ShiftRightLogical_WithFeedback, BinaryOp_WithFeedback)                   \
617                                                                                \
618   /* Compare ops with feedback collection */                                   \
619   TFC(Equal_WithFeedback, Compare_WithFeedback)                                \
620   TFC(StrictEqual_WithFeedback, Compare_WithFeedback)                          \
621   TFC(LessThan_WithFeedback, Compare_WithFeedback)                             \
622   TFC(GreaterThan_WithFeedback, Compare_WithFeedback)                          \
623   TFC(LessThanOrEqual_WithFeedback, Compare_WithFeedback)                      \
624   TFC(GreaterThanOrEqual_WithFeedback, Compare_WithFeedback)                   \
625                                                                                \
626   /* Unary ops with feedback collection */                                     \
627   TFC(BitwiseNot_WithFeedback, UnaryOp_WithFeedback)                           \
628   TFC(Decrement_WithFeedback, UnaryOp_WithFeedback)                            \
629   TFC(Increment_WithFeedback, UnaryOp_WithFeedback)                            \
630   TFC(Negate_WithFeedback, UnaryOp_WithFeedback)                               \
631                                                                                \
632   /* Object */                                                                 \
633   /* ES #sec-object-constructor */                                             \
634   TFJ(ObjectAssign, kDontAdaptArgumentsSentinel)                               \
635   /* ES #sec-object.create */                                                  \
636   TFJ(ObjectCreate, kDontAdaptArgumentsSentinel)                               \
637   CPP(ObjectDefineGetter)                                                      \
638   CPP(ObjectDefineProperties)                                                  \
639   CPP(ObjectDefineProperty)                                                    \
640   CPP(ObjectDefineSetter)                                                      \
641   TFJ(ObjectEntries, 1, kReceiver, kObject)                                    \
642   CPP(ObjectFreeze)                                                            \
643   TFJ(ObjectGetOwnPropertyDescriptor, kDontAdaptArgumentsSentinel)             \
644   CPP(ObjectGetOwnPropertyDescriptors)                                         \
645   TFJ(ObjectGetOwnPropertyNames, 1, kReceiver, kObject)                        \
646   CPP(ObjectGetOwnPropertySymbols)                                             \
647   TFJ(ObjectIs, 2, kReceiver, kLeft, kRight)                                   \
648   CPP(ObjectIsFrozen)                                                          \
649   CPP(ObjectIsSealed)                                                          \
650   TFJ(ObjectKeys, 1, kReceiver, kObject)                                       \
651   CPP(ObjectLookupGetter)                                                      \
652   CPP(ObjectLookupSetter)                                                      \
653   /* ES6 #sec-object.prototype.hasownproperty */                               \
654   TFJ(ObjectPrototypeHasOwnProperty, 1, kReceiver, kKey)                       \
655   TFJ(ObjectPrototypeIsPrototypeOf, 1, kReceiver, kValue)                      \
656   CPP(ObjectPrototypePropertyIsEnumerable)                                     \
657   CPP(ObjectPrototypeGetProto)                                                 \
658   CPP(ObjectPrototypeSetProto)                                                 \
659   CPP(ObjectSeal)                                                              \
660   TFS(ObjectToString, kReceiver)                                               \
661   TFJ(ObjectValues, 1, kReceiver, kObject)                                     \
662                                                                                \
663   /* instanceof */                                                             \
664   TFC(OrdinaryHasInstance, Compare)                                            \
665   TFC(InstanceOf, Compare)                                                     \
666   TFC(InstanceOf_WithFeedback, Compare_WithFeedback)                           \
667                                                                                \
668   /* for-in */                                                                 \
669   TFS(ForInEnumerate, kReceiver)                                               \
670   TFS(ForInFilter, kKey, kObject)                                              \
671                                                                                \
672   /* Reflect */                                                                \
673   ASM(ReflectApply, JSTrampoline)                                              \
674   ASM(ReflectConstruct, JSTrampoline)                                          \
675   CPP(ReflectDefineProperty)                                                   \
676   CPP(ReflectGetOwnPropertyDescriptor)                                         \
677   CPP(ReflectOwnKeys)                                                          \
678   CPP(ReflectSet)                                                              \
679                                                                                \
680   /* RegExp */                                                                 \
681   CPP(RegExpCapture1Getter)                                                    \
682   CPP(RegExpCapture2Getter)                                                    \
683   CPP(RegExpCapture3Getter)                                                    \
684   CPP(RegExpCapture4Getter)                                                    \
685   CPP(RegExpCapture5Getter)                                                    \
686   CPP(RegExpCapture6Getter)                                                    \
687   CPP(RegExpCapture7Getter)                                                    \
688   CPP(RegExpCapture8Getter)                                                    \
689   CPP(RegExpCapture9Getter)                                                    \
690   /* ES #sec-regexp-pattern-flags */                                           \
691   TFJ(RegExpConstructor, 2, kReceiver, kPattern, kFlags)                       \
692   CPP(RegExpInputGetter)                                                       \
693   CPP(RegExpInputSetter)                                                       \
694   CPP(RegExpLastMatchGetter)                                                   \
695   CPP(RegExpLastParenGetter)                                                   \
696   CPP(RegExpLeftContextGetter)                                                 \
697   /* ES #sec-regexp.prototype.compile */                                       \
698   TFJ(RegExpPrototypeCompile, 2, kReceiver, kPattern, kFlags)                  \
699   CPP(RegExpPrototypeToString)                                                 \
700   CPP(RegExpRightContextGetter)                                                \
701                                                                                \
702   /* RegExp helpers */                                                         \
703   TFS(RegExpExecAtom, kRegExp, kString, kLastIndex, kMatchInfo)                \
704   TFS(RegExpExecInternal, kRegExp, kString, kLastIndex, kMatchInfo)            \
705   ASM(RegExpInterpreterTrampoline, CCall)                                      \
706   ASM(RegExpExperimentalTrampoline, CCall)                                     \
707                                                                                \
708   /* Set */                                                                    \
709   TFJ(SetConstructor, kDontAdaptArgumentsSentinel)                             \
710   TFJ(SetPrototypeHas, 1, kReceiver, kKey)                                     \
711   TFJ(SetPrototypeAdd, 1, kReceiver, kKey)                                     \
712   TFJ(SetPrototypeDelete, 1, kReceiver, kKey)                                  \
713   CPP(SetPrototypeClear)                                                       \
714   /* ES #sec-set.prototype.entries */                                          \
715   TFJ(SetPrototypeEntries, 0, kReceiver)                                       \
716   /* ES #sec-get-set.prototype.size */                                         \
717   TFJ(SetPrototypeGetSize, 0, kReceiver)                                       \
718   /* ES #sec-set.prototype.foreach */                                          \
719   TFJ(SetPrototypeForEach, kDontAdaptArgumentsSentinel)                        \
720   /* ES #sec-set.prototype.values */                                           \
721   TFJ(SetPrototypeValues, 0, kReceiver)                                        \
722   /* ES #sec-%setiteratorprototype%.next */                                    \
723   TFJ(SetIteratorPrototypeNext, 0, kReceiver)                                  \
724   TFS(SetOrSetIteratorToList, kSource)                                         \
725                                                                                \
726   /* SharedArrayBuffer */                                                      \
727   CPP(SharedArrayBufferPrototypeSlice)                                         \
728   TFJ(AtomicsLoad, 2, kReceiver, kArray, kIndex)                               \
729   TFJ(AtomicsStore, 3, kReceiver, kArray, kIndex, kValue)                      \
730   TFJ(AtomicsExchange, 3, kReceiver, kArray, kIndex, kValue)                   \
731   TFJ(AtomicsCompareExchange, 4, kReceiver, kArray, kIndex, kOldValue,         \
732       kNewValue)                                                               \
733   TFJ(AtomicsAdd, 3, kReceiver, kArray, kIndex, kValue)                        \
734   TFJ(AtomicsSub, 3, kReceiver, kArray, kIndex, kValue)                        \
735   TFJ(AtomicsAnd, 3, kReceiver, kArray, kIndex, kValue)                        \
736   TFJ(AtomicsOr, 3, kReceiver, kArray, kIndex, kValue)                         \
737   TFJ(AtomicsXor, 3, kReceiver, kArray, kIndex, kValue)                        \
738   CPP(AtomicsNotify)                                                           \
739   CPP(AtomicsIsLockFree)                                                       \
740   CPP(AtomicsWait)                                                             \
741   CPP(AtomicsWaitAsync)                                                        \
742                                                                                \
743   /* String */                                                                 \
744   /* ES #sec-string.fromcodepoint */                                           \
745   CPP(StringFromCodePoint)                                                     \
746   /* ES6 #sec-string.fromcharcode */                                           \
747   TFJ(StringFromCharCode, kDontAdaptArgumentsSentinel)                         \
748   /* ES6 #sec-string.prototype.includes */                                     \
749   TFJ(StringPrototypeIncludes, kDontAdaptArgumentsSentinel)                    \
750   /* ES6 #sec-string.prototype.indexof */                                      \
751   TFJ(StringPrototypeIndexOf, kDontAdaptArgumentsSentinel)                     \
752   /* ES6 #sec-string.prototype.lastindexof */                                  \
753   CPP(StringPrototypeLastIndexOf)                                              \
754   /* ES6 #sec-string.prototype.match */                                        \
755   TFJ(StringPrototypeMatch, 1, kReceiver, kRegexp)                             \
756   /* ES #sec-string.prototype.matchAll */                                      \
757   TFJ(StringPrototypeMatchAll, 1, kReceiver, kRegexp)                          \
758   /* ES6 #sec-string.prototype.localecompare */                                \
759   CPP(StringPrototypeLocaleCompare)                                            \
760   /* ES6 #sec-string.prototype.replace */                                      \
761   TFJ(StringPrototypeReplace, 2, kReceiver, kSearch, kReplace)                 \
762   /* ES6 #sec-string.prototype.search */                                       \
763   TFJ(StringPrototypeSearch, 1, kReceiver, kRegexp)                            \
764   /* ES6 #sec-string.prototype.split */                                        \
765   TFJ(StringPrototypeSplit, kDontAdaptArgumentsSentinel)                       \
766   /* ES6 #sec-string.raw */                                                    \
767   CPP(StringRaw)                                                               \
768                                                                                \
769   /* Symbol */                                                                 \
770   /* ES #sec-symbol-constructor */                                             \
771   CPP(SymbolConstructor)                                                       \
772   /* ES6 #sec-symbol.for */                                                    \
773   CPP(SymbolFor)                                                               \
774   /* ES6 #sec-symbol.keyfor */                                                 \
775   CPP(SymbolKeyFor)                                                            \
776                                                                                \
777   /* TypedArray */                                                             \
778   /* ES #sec-typedarray-constructors */                                        \
779   TFJ(TypedArrayBaseConstructor, 0, kReceiver)                                 \
780   TFJ(TypedArrayConstructor, kDontAdaptArgumentsSentinel)                      \
781   CPP(TypedArrayPrototypeBuffer)                                               \
782   /* ES6 #sec-get-%typedarray%.prototype.bytelength */                         \
783   TFJ(TypedArrayPrototypeByteLength, 0, kReceiver)                             \
784   /* ES6 #sec-get-%typedarray%.prototype.byteoffset */                         \
785   TFJ(TypedArrayPrototypeByteOffset, 0, kReceiver)                             \
786   /* ES6 #sec-get-%typedarray%.prototype.length */                             \
787   TFJ(TypedArrayPrototypeLength, 0, kReceiver)                                 \
788   /* ES6 #sec-%typedarray%.prototype.copywithin */                             \
789   CPP(TypedArrayPrototypeCopyWithin)                                           \
790   /* ES6 #sec-%typedarray%.prototype.fill */                                   \
791   CPP(TypedArrayPrototypeFill)                                                 \
792   /* ES7 #sec-%typedarray%.prototype.includes */                               \
793   CPP(TypedArrayPrototypeIncludes)                                             \
794   /* ES6 #sec-%typedarray%.prototype.indexof */                                \
795   CPP(TypedArrayPrototypeIndexOf)                                              \
796   /* ES6 #sec-%typedarray%.prototype.lastindexof */                            \
797   CPP(TypedArrayPrototypeLastIndexOf)                                          \
798   /* ES6 #sec-%typedarray%.prototype.reverse */                                \
799   CPP(TypedArrayPrototypeReverse)                                              \
800   /* ES6 #sec-get-%typedarray%.prototype-@@tostringtag */                      \
801   TFJ(TypedArrayPrototypeToStringTag, 0, kReceiver)                            \
802   /* ES6 %TypedArray%.prototype.map */                                         \
803   TFJ(TypedArrayPrototypeMap, kDontAdaptArgumentsSentinel)                     \
804                                                                                \
805   /* Wasm */                                                                   \
806   ASM(GenericJSToWasmWrapper, Dummy)                                           \
807   ASM(WasmCompileLazy, Dummy)                                                  \
808   ASM(WasmDebugBreak, Dummy)                                                   \
809   TFC(WasmFloat32ToNumber, WasmFloat32ToNumber)                                \
810   TFC(WasmFloat64ToNumber, WasmFloat64ToNumber)                                \
811   TFS(WasmAllocateArrayWithRtt, kMap, kLength, kElementSize)                   \
812   TFC(WasmI32AtomicWait32, WasmI32AtomicWait32)                                \
813   TFC(WasmI64AtomicWait32, WasmI64AtomicWait32)                                \
814   TFS(WasmAllocatePair, kValue1, kValue2)                                      \
815                                                                                \
816   /* WeakMap */                                                                \
817   TFJ(WeakMapConstructor, kDontAdaptArgumentsSentinel)                         \
818   TFS(WeakMapLookupHashIndex, kTable, kKey)                                    \
819   TFJ(WeakMapGet, 1, kReceiver, kKey)                                          \
820   TFJ(WeakMapPrototypeHas, 1, kReceiver, kKey)                                 \
821   TFJ(WeakMapPrototypeSet, 2, kReceiver, kKey, kValue)                         \
822   TFJ(WeakMapPrototypeDelete, 1, kReceiver, kKey)                              \
823                                                                                \
824   /* WeakSet */                                                                \
825   TFJ(WeakSetConstructor, kDontAdaptArgumentsSentinel)                         \
826   TFJ(WeakSetPrototypeHas, 1, kReceiver, kKey)                                 \
827   TFJ(WeakSetPrototypeAdd, 1, kReceiver, kValue)                               \
828   TFJ(WeakSetPrototypeDelete, 1, kReceiver, kValue)                            \
829                                                                                \
830   /* WeakSet / WeakMap Helpers */                                              \
831   TFS(WeakCollectionDelete, kCollection, kKey)                                 \
832   TFS(WeakCollectionSet, kCollection, kKey, kValue)                            \
833                                                                                \
834   /* AsyncGenerator */                                                         \
835                                                                                \
836   TFS(AsyncGeneratorResolve, kGenerator, kValue, kDone)                        \
837   TFS(AsyncGeneratorReject, kGenerator, kValue)                                \
838   TFS(AsyncGeneratorYield, kGenerator, kValue, kIsCaught)                      \
839   TFS(AsyncGeneratorReturn, kGenerator, kValue, kIsCaught)                     \
840   TFS(AsyncGeneratorResumeNext, kGenerator)                                    \
841                                                                                \
842   /* AsyncGeneratorFunction( p1, p2, ... pn, body ) */                         \
843   /* proposal-async-iteration/#sec-asyncgeneratorfunction-constructor */       \
844   CPP(AsyncGeneratorFunctionConstructor)                                       \
845   /* AsyncGenerator.prototype.next ( value ) */                                \
846   /* proposal-async-iteration/#sec-asyncgenerator-prototype-next */            \
847   TFJ(AsyncGeneratorPrototypeNext, kDontAdaptArgumentsSentinel)                \
848   /* AsyncGenerator.prototype.return ( value ) */                              \
849   /* proposal-async-iteration/#sec-asyncgenerator-prototype-return */          \
850   TFJ(AsyncGeneratorPrototypeReturn, kDontAdaptArgumentsSentinel)              \
851   /* AsyncGenerator.prototype.throw ( exception ) */                           \
852   /* proposal-async-iteration/#sec-asyncgenerator-prototype-throw */           \
853   TFJ(AsyncGeneratorPrototypeThrow, kDontAdaptArgumentsSentinel)               \
854                                                                                \
855   /* Await (proposal-async-iteration/#await), with resume behaviour */         \
856   /* specific to Async Generators. Internal / Not exposed to JS code. */       \
857   TFS(AsyncGeneratorAwaitCaught, kAsyncGeneratorObject, kValue)                \
858   TFS(AsyncGeneratorAwaitUncaught, kAsyncGeneratorObject, kValue)              \
859   TFJ(AsyncGeneratorAwaitResolveClosure, 1, kReceiver, kValue)                 \
860   TFJ(AsyncGeneratorAwaitRejectClosure, 1, kReceiver, kValue)                  \
861   TFJ(AsyncGeneratorYieldResolveClosure, 1, kReceiver, kValue)                 \
862   TFJ(AsyncGeneratorReturnClosedResolveClosure, 1, kReceiver, kValue)          \
863   TFJ(AsyncGeneratorReturnClosedRejectClosure, 1, kReceiver, kValue)           \
864   TFJ(AsyncGeneratorReturnResolveClosure, 1, kReceiver, kValue)                \
865                                                                                \
866   /* Async-from-Sync Iterator */                                               \
867                                                                                \
868   /* %AsyncFromSyncIteratorPrototype% */                                       \
869   /* See tc39.github.io/proposal-async-iteration/ */                           \
870   /* #sec-%asyncfromsynciteratorprototype%-object) */                          \
871   TFJ(AsyncFromSyncIteratorPrototypeNext, kDontAdaptArgumentsSentinel)         \
872   /* #sec-%asyncfromsynciteratorprototype%.throw */                            \
873   TFJ(AsyncFromSyncIteratorPrototypeThrow, kDontAdaptArgumentsSentinel)        \
874   /* #sec-%asyncfromsynciteratorprototype%.return */                           \
875   TFJ(AsyncFromSyncIteratorPrototypeReturn, kDontAdaptArgumentsSentinel)       \
876   /* #sec-async-iterator-value-unwrap-functions */                             \
877   TFJ(AsyncIteratorValueUnwrap, 1, kReceiver, kValue)                          \
878                                                                                \
879   /* CEntry */                                                                 \
880   ASM(CEntry_Return1_DontSaveFPRegs_ArgvOnStack_NoBuiltinExit, Dummy)          \
881   ASM(CEntry_Return1_DontSaveFPRegs_ArgvOnStack_BuiltinExit, Dummy)            \
882   ASM(CEntry_Return1_DontSaveFPRegs_ArgvInRegister_NoBuiltinExit, Dummy)       \
883   ASM(CEntry_Return1_SaveFPRegs_ArgvOnStack_NoBuiltinExit, Dummy)              \
884   ASM(CEntry_Return1_SaveFPRegs_ArgvOnStack_BuiltinExit, Dummy)                \
885   ASM(CEntry_Return2_DontSaveFPRegs_ArgvOnStack_NoBuiltinExit, Dummy)          \
886   ASM(CEntry_Return2_DontSaveFPRegs_ArgvOnStack_BuiltinExit, Dummy)            \
887   ASM(CEntry_Return2_DontSaveFPRegs_ArgvInRegister_NoBuiltinExit, Dummy)       \
888   ASM(CEntry_Return2_SaveFPRegs_ArgvOnStack_NoBuiltinExit, Dummy)              \
889   ASM(CEntry_Return2_SaveFPRegs_ArgvOnStack_BuiltinExit, Dummy)                \
890   ASM(DirectCEntry, Dummy)                                                     \
891                                                                                \
892   /* String helpers */                                                         \
893   TFS(StringAdd_CheckNone, kLeft, kRight)                                      \
894   TFS(SubString, kString, kFrom, kTo)                                          \
895                                                                                \
896   /* Miscellaneous */                                                          \
897   ASM(StackCheck, Dummy)                                                       \
898   ASM(DoubleToI, Dummy)                                                        \
899   TFC(GetProperty, GetProperty)                                                \
900   TFS(GetPropertyWithReceiver, kObject, kKey, kReceiver, kOnNonExistent)       \
901   TFS(SetProperty, kReceiver, kKey, kValue)                                    \
902   TFS(SetPropertyInLiteral, kReceiver, kKey, kValue)                           \
903   ASM(MemCopyUint8Uint8, CCall)                                                \
904   ASM(MemMove, CCall)                                                          \
905                                                                                \
906   /* Trace */                                                                  \
907   CPP(IsTraceCategoryEnabled)                                                  \
908   CPP(Trace)                                                                   \
909                                                                                \
910   /* Weak refs */                                                              \
911   CPP(FinalizationRegistryUnregister)                                          \
912                                                                                \
913   /* Async modules */                                                          \
914   TFJ(AsyncModuleEvaluate, kDontAdaptArgumentsSentinel)                        \
915                                                                                \
916   /* CallAsyncModule* are spec anonymyous functions */                         \
917   CPP(CallAsyncModuleFulfilled)                                                \
918   CPP(CallAsyncModuleRejected)
919 
920 #ifdef V8_INTL_SUPPORT
921 #define BUILTIN_LIST_INTL(CPP, TFJ, TFS)                               \
922   /* ecma402 #sec-intl.collator */                                     \
923   CPP(CollatorConstructor)                                             \
924   /* ecma 402 #sec-collator-compare-functions*/                        \
925   CPP(CollatorInternalCompare)                                         \
926   /* ecma402 #sec-intl.collator.prototype.compare */                   \
927   CPP(CollatorPrototypeCompare)                                        \
928   /* ecma402 #sec-intl.collator.supportedlocalesof */                  \
929   CPP(CollatorSupportedLocalesOf)                                      \
930   CPP(CollatorPrototypeResolvedOptions)                                \
931   /* ecma402 #sup-date.prototype.tolocaledatestring */                 \
932   CPP(DatePrototypeToLocaleDateString)                                 \
933   /* ecma402 #sup-date.prototype.tolocalestring */                     \
934   CPP(DatePrototypeToLocaleString)                                     \
935   /* ecma402 #sup-date.prototype.tolocaletimestring */                 \
936   CPP(DatePrototypeToLocaleTimeString)                                 \
937   /* ecma402 #sec-intl.datetimeformat */                               \
938   CPP(DateTimeFormatConstructor)                                       \
939   /* ecma402 #sec-datetime-format-functions */                         \
940   CPP(DateTimeFormatInternalFormat)                                    \
941   /* ecma402 #sec-intl.datetimeformat.prototype.format */              \
942   CPP(DateTimeFormatPrototypeFormat)                                   \
943   /* ecma402 #sec-intl.datetimeformat.prototype.formatrange */         \
944   CPP(DateTimeFormatPrototypeFormatRange)                              \
945   /* ecma402 #sec-intl.datetimeformat.prototype.formatrangetoparts */  \
946   CPP(DateTimeFormatPrototypeFormatRangeToParts)                       \
947   /* ecma402 #sec-intl.datetimeformat.prototype.formattoparts */       \
948   CPP(DateTimeFormatPrototypeFormatToParts)                            \
949   /* ecma402 #sec-intl.datetimeformat.prototype.resolvedoptions */     \
950   CPP(DateTimeFormatPrototypeResolvedOptions)                          \
951   /* ecma402 #sec-intl.datetimeformat.supportedlocalesof */            \
952   CPP(DateTimeFormatSupportedLocalesOf)                                \
953   /* ecma402 #sec-Intl.DisplayNames */                                 \
954   CPP(DisplayNamesConstructor)                                         \
955   /* ecma402 #sec-Intl.DisplayNames.prototype.of */                    \
956   CPP(DisplayNamesPrototypeOf)                                         \
957   /* ecma402 #sec-Intl.DisplayNames.prototype.resolvedOptions */       \
958   CPP(DisplayNamesPrototypeResolvedOptions)                            \
959   /* ecma402 #sec-Intl.DisplayNames.supportedLocalesOf */              \
960   CPP(DisplayNamesSupportedLocalesOf)                                  \
961   /* ecma402 #sec-intl.getcanonicallocales */                          \
962   CPP(IntlGetCanonicalLocales)                                         \
963   /* ecma402 #sec-intl-listformat-constructor */                       \
964   CPP(ListFormatConstructor)                                           \
965   /* ecma402 #sec-intl-list-format.prototype.format */                 \
966   TFJ(ListFormatPrototypeFormat, kDontAdaptArgumentsSentinel)          \
967   /* ecma402 #sec-intl-list-format.prototype.formattoparts */          \
968   TFJ(ListFormatPrototypeFormatToParts, kDontAdaptArgumentsSentinel)   \
969   /* ecma402 #sec-intl.listformat.prototype.resolvedoptions */         \
970   CPP(ListFormatPrototypeResolvedOptions)                              \
971   /* ecma402 #sec-intl.ListFormat.supportedlocalesof */                \
972   CPP(ListFormatSupportedLocalesOf)                                    \
973   /* ecma402 #sec-intl-locale-constructor */                           \
974   CPP(LocaleConstructor)                                               \
975   CPP(LocalePrototypeBaseName)                                         \
976   CPP(LocalePrototypeCalendar)                                         \
977   CPP(LocalePrototypeCaseFirst)                                        \
978   CPP(LocalePrototypeCollation)                                        \
979   CPP(LocalePrototypeHourCycle)                                        \
980   CPP(LocalePrototypeLanguage)                                         \
981   /* ecma402 #sec-Intl.Locale.prototype.maximize */                    \
982   CPP(LocalePrototypeMaximize)                                         \
983   /* ecma402 #sec-Intl.Locale.prototype.minimize */                    \
984   CPP(LocalePrototypeMinimize)                                         \
985   CPP(LocalePrototypeNumeric)                                          \
986   CPP(LocalePrototypeNumberingSystem)                                  \
987   CPP(LocalePrototypeRegion)                                           \
988   CPP(LocalePrototypeScript)                                           \
989   CPP(LocalePrototypeToString)                                         \
990   /* ecma402 #sec-intl.numberformat */                                 \
991   CPP(NumberFormatConstructor)                                         \
992   /* ecma402 #sec-number-format-functions */                           \
993   CPP(NumberFormatInternalFormatNumber)                                \
994   /* ecma402 #sec-intl.numberformat.prototype.format */                \
995   CPP(NumberFormatPrototypeFormatNumber)                               \
996   /* ecma402 #sec-intl.numberformat.prototype.formattoparts */         \
997   CPP(NumberFormatPrototypeFormatToParts)                              \
998   /* ecma402 #sec-intl.numberformat.prototype.resolvedoptions */       \
999   CPP(NumberFormatPrototypeResolvedOptions)                            \
1000   /* ecma402 #sec-intl.numberformat.supportedlocalesof */              \
1001   CPP(NumberFormatSupportedLocalesOf)                                  \
1002   /* ecma402 #sec-intl.pluralrules */                                  \
1003   CPP(PluralRulesConstructor)                                          \
1004   CPP(PluralRulesPrototypeResolvedOptions)                             \
1005   /* ecma402 #sec-intl.pluralrules.prototype.select */                 \
1006   CPP(PluralRulesPrototypeSelect)                                      \
1007   /* ecma402 #sec-intl.pluralrules.supportedlocalesof */               \
1008   CPP(PluralRulesSupportedLocalesOf)                                   \
1009   /* ecma402 #sec-intl.RelativeTimeFormat.constructor */               \
1010   CPP(RelativeTimeFormatConstructor)                                   \
1011   /* ecma402 #sec-intl.RelativeTimeFormat.prototype.format */          \
1012   CPP(RelativeTimeFormatPrototypeFormat)                               \
1013   /* ecma402 #sec-intl.RelativeTimeFormat.prototype.formatToParts */   \
1014   CPP(RelativeTimeFormatPrototypeFormatToParts)                        \
1015   /* ecma402 #sec-intl.RelativeTimeFormat.prototype.resolvedOptions */ \
1016   CPP(RelativeTimeFormatPrototypeResolvedOptions)                      \
1017   /* ecma402 #sec-intl.RelativeTimeFormat.supportedlocalesof */        \
1018   CPP(RelativeTimeFormatSupportedLocalesOf)                            \
1019   /* ecma402 #sec-Intl.Segmenter */                                    \
1020   CPP(SegmenterConstructor)                                            \
1021   /* ecma402 #sec-Intl.Segmenter.prototype.resolvedOptions */          \
1022   CPP(SegmenterPrototypeResolvedOptions)                               \
1023   /* ecma402 #sec-Intl.Segmenter.prototype.segment  */                 \
1024   CPP(SegmenterPrototypeSegment)                                       \
1025   /* ecma402  #sec-Intl.Segmenter.supportedLocalesOf */                \
1026   CPP(SegmenterSupportedLocalesOf)                                     \
1027   /* ecma402 #sec-segment-iterator-prototype-next */                   \
1028   CPP(SegmentIteratorPrototypeNext)                                    \
1029   /* ecma402 #sec-%segmentsprototype%.containing */                    \
1030   CPP(SegmentsPrototypeContaining)                                     \
1031   /* ecma402 #sec-%segmentsprototype%-@@iterator */                    \
1032   CPP(SegmentsPrototypeIterator)                                       \
1033   /* ES #sec-string.prototype.normalize */                             \
1034   CPP(StringPrototypeNormalizeIntl)                                    \
1035   /* ecma402 #sup-string.prototype.tolocalelowercase */                \
1036   CPP(StringPrototypeToLocaleLowerCase)                                \
1037   /* ecma402 #sup-string.prototype.tolocaleuppercase */                \
1038   CPP(StringPrototypeToLocaleUpperCase)                                \
1039   /* ES #sec-string.prototype.tolowercase */                           \
1040   TFJ(StringPrototypeToLowerCaseIntl, 0, kReceiver)                    \
1041   /* ES #sec-string.prototype.touppercase */                           \
1042   CPP(StringPrototypeToUpperCaseIntl)                                  \
1043   TFS(StringToLowerCaseIntl, kString)                                  \
1044   CPP(V8BreakIteratorConstructor)                                      \
1045   CPP(V8BreakIteratorInternalAdoptText)                                \
1046   CPP(V8BreakIteratorInternalBreakType)                                \
1047   CPP(V8BreakIteratorInternalCurrent)                                  \
1048   CPP(V8BreakIteratorInternalFirst)                                    \
1049   CPP(V8BreakIteratorInternalNext)                                     \
1050   CPP(V8BreakIteratorPrototypeAdoptText)                               \
1051   CPP(V8BreakIteratorPrototypeBreakType)                               \
1052   CPP(V8BreakIteratorPrototypeCurrent)                                 \
1053   CPP(V8BreakIteratorPrototypeFirst)                                   \
1054   CPP(V8BreakIteratorPrototypeNext)                                    \
1055   CPP(V8BreakIteratorPrototypeResolvedOptions)                         \
1056   CPP(V8BreakIteratorSupportedLocalesOf)
1057 #else
1058 #define BUILTIN_LIST_INTL(CPP, TFJ, TFS)      \
1059   /* no-op fallback version */                \
1060   CPP(StringPrototypeNormalize)               \
1061   /* same as toLowercase; fallback version */ \
1062   CPP(StringPrototypeToLocaleLowerCase)       \
1063   /* same as toUppercase; fallback version */ \
1064   CPP(StringPrototypeToLocaleUpperCase)       \
1065   /* (obsolete) Unibrow version */            \
1066   CPP(StringPrototypeToLowerCase)             \
1067   /* (obsolete) Unibrow version */            \
1068   CPP(StringPrototypeToUpperCase)
1069 #endif  // V8_INTL_SUPPORT
1070 
1071 #define BUILTIN_LIST(CPP, TFJ, TFC, TFS, TFH, BCH, ASM)  \
1072   BUILTIN_LIST_BASE(CPP, TFJ, TFC, TFS, TFH, ASM)        \
1073   BUILTIN_LIST_FROM_TORQUE(CPP, TFJ, TFC, TFS, TFH, ASM) \
1074   BUILTIN_LIST_INTL(CPP, TFJ, TFS)                       \
1075   BUILTIN_LIST_BYTECODE_HANDLERS(BCH)
1076 
1077 // The exception thrown in the following builtins are caught
1078 // internally and result in a promise rejection.
1079 #define BUILTIN_PROMISE_REJECTION_PREDICTION_LIST(V) \
1080   V(AsyncFromSyncIteratorPrototypeNext)              \
1081   V(AsyncFromSyncIteratorPrototypeReturn)            \
1082   V(AsyncFromSyncIteratorPrototypeThrow)             \
1083   V(AsyncFunctionAwaitCaught)                        \
1084   V(AsyncFunctionAwaitUncaught)                      \
1085   V(AsyncGeneratorResolve)                           \
1086   V(AsyncGeneratorAwaitCaught)                       \
1087   V(AsyncGeneratorAwaitUncaught)                     \
1088   V(PromiseAll)                                      \
1089   V(PromiseAny)                                      \
1090   V(PromiseConstructor)                              \
1091   V(PromiseConstructorLazyDeoptContinuation)         \
1092   V(PromiseFulfillReactionJob)                       \
1093   V(PromiseRace)                                     \
1094   V(ResolvePromise)
1095 
1096 // The exception thrown in the following builtins are caught internally and will
1097 // not be propagated further or re-thrown
1098 #define BUILTIN_EXCEPTION_CAUGHT_PREDICTION_LIST(V) V(PromiseRejectReactionJob)
1099 
1100 #define IGNORE_BUILTIN(...)
1101 
1102 #define BUILTIN_LIST_C(V)                                         \
1103   BUILTIN_LIST(V, IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, \
1104                IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN)
1105 
1106 #define BUILTIN_LIST_A(V)                                                      \
1107   BUILTIN_LIST(IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, \
1108                IGNORE_BUILTIN, IGNORE_BUILTIN, V)
1109 
1110 #define BUILTIN_LIST_TFS(V)                                       \
1111   BUILTIN_LIST(IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, V, \
1112                IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN)
1113 
1114 #define BUILTIN_LIST_TFJ(V)                                       \
1115   BUILTIN_LIST(IGNORE_BUILTIN, V, IGNORE_BUILTIN, IGNORE_BUILTIN, \
1116                IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN)
1117 
1118 #define BUILTIN_LIST_TFC(V)                                       \
1119   BUILTIN_LIST(IGNORE_BUILTIN, IGNORE_BUILTIN, V, IGNORE_BUILTIN, \
1120                IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN)
1121 
1122 }  // namespace internal
1123 }  // namespace v8
1124 
1125 #endif  // V8_BUILTINS_BUILTINS_DEFINITIONS_H_
1126