V8 API Reference, 7.2.502.16 (for Deno 0.2.4)
builtins-definitions.h
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-from-dsl.h"
12 
13 namespace v8 {
14 namespace internal {
15 
16 // CPP: Builtin in C++. Entered via BUILTIN_EXIT frame.
17 // Args: name
18 // API: Builtin in C++ for API callbacks. Entered via EXIT frame.
19 // Args: name
20 // TFJ: Builtin in Turbofan, with JS linkage (callable as Javascript function).
21 // Args: name, arguments count, explicit argument names...
22 // TFS: Builtin in Turbofan, with CodeStub linkage.
23 // Args: name, explicit argument names...
24 // TFC: Builtin in Turbofan, with CodeStub linkage and custom descriptor.
25 // Args: name, interface descriptor, return_size
26 // TFH: Handlers in Turbofan, with CodeStub linkage.
27 // Args: name, interface descriptor
28 // BCH: Bytecode Handlers, with bytecode dispatch linkage.
29 // Args: name, OperandScale, Bytecode
30 // ASM: Builtin in platform-dependent assembly.
31 // Args: name
32 
33 #define BUILTIN_LIST_BASE(CPP, API, TFJ, TFC, TFS, TFH, ASM) \
34  /* GC write barrirer */ \
35  TFC(RecordWrite, RecordWrite, 1) \
36  \
37  /* Adaptors for CPP/API builtin */ \
38  TFC(AdaptorWithExitFrame, CppBuiltinAdaptor, 1) \
39  TFC(AdaptorWithBuiltinExitFrame, CppBuiltinAdaptor, 1) \
40  \
41  /* Calls */ \
42  ASM(ArgumentsAdaptorTrampoline) \
43  /* ES6 section 9.2.1 [[Call]] ( thisArgument, argumentsList) */ \
44  ASM(CallFunction_ReceiverIsNullOrUndefined) \
45  ASM(CallFunction_ReceiverIsNotNullOrUndefined) \
46  ASM(CallFunction_ReceiverIsAny) \
47  /* ES6 section 9.4.1.1 [[Call]] ( thisArgument, argumentsList) */ \
48  ASM(CallBoundFunction) \
49  /* ES6 section 7.3.12 Call(F, V, [argumentsList]) */ \
50  ASM(Call_ReceiverIsNullOrUndefined) \
51  ASM(Call_ReceiverIsNotNullOrUndefined) \
52  ASM(Call_ReceiverIsAny) \
53  \
54  /* ES6 section 9.5.12[[Call]] ( thisArgument, argumentsList ) */ \
55  TFC(CallProxy, CallTrampoline, 1) \
56  ASM(CallVarargs) \
57  TFC(CallWithSpread, CallWithSpread, 1) \
58  TFC(CallWithArrayLike, CallWithArrayLike, 1) \
59  ASM(CallForwardVarargs) \
60  ASM(CallFunctionForwardVarargs) \
61  \
62  /* Construct */ \
63  /* ES6 section 9.2.2 [[Construct]] ( argumentsList, newTarget) */ \
64  ASM(ConstructFunction) \
65  /* ES6 section 9.4.1.2 [[Construct]] (argumentsList, newTarget) */ \
66  ASM(ConstructBoundFunction) \
67  ASM(ConstructedNonConstructable) \
68  /* ES6 section 7.3.13 Construct (F, [argumentsList], [newTarget]) */ \
69  ASM(Construct) \
70  ASM(ConstructVarargs) \
71  TFC(ConstructWithSpread, ConstructWithSpread, 1) \
72  TFC(ConstructWithArrayLike, ConstructWithArrayLike, 1) \
73  ASM(ConstructForwardVarargs) \
74  ASM(ConstructFunctionForwardVarargs) \
75  ASM(JSConstructStubGeneric) \
76  ASM(JSBuiltinsConstructStub) \
77  TFC(FastNewObject, FastNewObject, 1) \
78  TFS(FastNewClosure, kSharedFunctionInfo, kFeedbackCell) \
79  TFC(FastNewFunctionContextEval, FastNewFunctionContext, 1) \
80  TFC(FastNewFunctionContextFunction, FastNewFunctionContext, 1) \
81  TFS(CreateRegExpLiteral, kFeedbackVector, kSlot, kPattern, kFlags) \
82  TFS(CreateEmptyArrayLiteral, kFeedbackVector, kSlot) \
83  TFS(CreateShallowArrayLiteral, kFeedbackVector, kSlot, kConstantElements) \
84  TFS(CreateShallowObjectLiteral, kFeedbackVector, kSlot, \
85  kObjectBoilerplateDescription, kFlags) \
86  /* ES6 section 9.5.14 [[Construct]] ( argumentsList, newTarget) */ \
87  TFC(ConstructProxy, JSTrampoline, 1) \
88  \
89  /* Apply and entries */ \
90  ASM(JSEntryTrampoline) \
91  ASM(JSConstructEntryTrampoline) \
92  ASM(ResumeGeneratorTrampoline) \
93  \
94  /* Stack and interrupt check */ \
95  ASM(InterruptCheck) \
96  ASM(StackCheck) \
97  \
98  /* String helpers */ \
99  TFC(StringCharAt, StringAt, 1) \
100  TFC(StringCodePointAtUTF16, StringAt, 1) \
101  TFC(StringCodePointAtUTF32, StringAt, 1) \
102  TFC(StringEqual, Compare, 1) \
103  TFC(StringGreaterThan, Compare, 1) \
104  TFC(StringGreaterThanOrEqual, Compare, 1) \
105  TFS(StringIndexOf, kReceiver, kSearchString, kPosition) \
106  TFC(StringLessThan, Compare, 1) \
107  TFC(StringLessThanOrEqual, Compare, 1) \
108  TFS(StringRepeat, kString, kCount) \
109  TFC(StringSubstring, StringSubstring, 1) \
110  \
111  /* OrderedHashTable helpers */ \
112  TFS(OrderedHashTableHealIndex, kTable, kIndex) \
113  \
114  /* Interpreter */ \
115  ASM(InterpreterEntryTrampoline) \
116  ASM(InterpreterPushArgsThenCall) \
117  ASM(InterpreterPushUndefinedAndArgsThenCall) \
118  ASM(InterpreterPushArgsThenCallWithFinalSpread) \
119  ASM(InterpreterPushArgsThenConstruct) \
120  ASM(InterpreterPushArgsThenConstructArrayFunction) \
121  ASM(InterpreterPushArgsThenConstructWithFinalSpread) \
122  ASM(InterpreterEnterBytecodeAdvance) \
123  ASM(InterpreterEnterBytecodeDispatch) \
124  ASM(InterpreterOnStackReplacement) \
125  \
126  /* Code life-cycle */ \
127  TFC(CompileLazy, JSTrampoline, 1) \
128  TFC(CompileLazyDeoptimizedCode, JSTrampoline, 1) \
129  ASM(InstantiateAsmJs) \
130  ASM(NotifyDeoptimized) \
131  \
132  /* Trampolines called when returning from a deoptimization that expects */ \
133  /* to continue in a JavaScript builtin to finish the functionality of a */ \
134  /* an TF-inlined version of builtin that has side-effects. */ \
135  /* */ \
136  /* The trampolines work as follows: */ \
137  /* 1. Trampoline restores input register values that */ \
138  /* the builtin expects from a BuiltinContinuationFrame. */ \
139  /* 2. Trampoline tears down BuiltinContinuationFrame. */ \
140  /* 3. Trampoline jumps to the builtin's address. */ \
141  /* 4. Builtin executes as if invoked by the frame above it. */ \
142  /* 5. When the builtin returns, execution resumes normally in the */ \
143  /* calling frame, processing any return result from the JavaScript */ \
144  /* builtin as if it had called the builtin directly. */ \
145  /* */ \
146  /* There are two variants of the stub that differ in their handling of a */ \
147  /* value returned by the next frame deeper on the stack. For LAZY deopts, */ \
148  /* the return value (e.g. rax on x64) is explicitly passed as an extra */ \
149  /* stack parameter to the JavaScript builtin by the "WithResult" */ \
150  /* trampoline variant. The plain variant is used in EAGER deopt contexts */ \
151  /* and has no such special handling. */ \
152  ASM(ContinueToCodeStubBuiltin) \
153  ASM(ContinueToCodeStubBuiltinWithResult) \
154  ASM(ContinueToJavaScriptBuiltin) \
155  ASM(ContinueToJavaScriptBuiltinWithResult) \
156  \
157  /* API callback handling */ \
158  API(HandleApiCall) \
159  API(HandleApiCallAsFunction) \
160  API(HandleApiCallAsConstructor) \
161  \
162  /* Adapters for Turbofan into runtime */ \
163  TFC(AllocateInNewSpace, Allocate, 1) \
164  TFC(AllocateInOldSpace, Allocate, 1) \
165  \
166  /* TurboFan support builtins */ \
167  TFS(CopyFastSmiOrObjectElements, kObject) \
168  TFC(GrowFastDoubleElements, GrowArrayElements, 1) \
169  TFC(GrowFastSmiOrObjectElements, GrowArrayElements, 1) \
170  TFC(NewArgumentsElements, NewArgumentsElements, 1) \
171  \
172  /* Debugger */ \
173  TFJ(DebugBreakTrampoline, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
174  ASM(FrameDropperTrampoline) \
175  ASM(HandleDebuggerStatement) \
176  \
177  /* Type conversions */ \
178  TFC(ToObject, TypeConversion, 1) \
179  TFC(ToBoolean, TypeConversion, 1) \
180  TFC(OrdinaryToPrimitive_Number, TypeConversion, 1) \
181  TFC(OrdinaryToPrimitive_String, TypeConversion, 1) \
182  TFC(NonPrimitiveToPrimitive_Default, TypeConversion, 1) \
183  TFC(NonPrimitiveToPrimitive_Number, TypeConversion, 1) \
184  TFC(NonPrimitiveToPrimitive_String, TypeConversion, 1) \
185  TFC(StringToNumber, TypeConversion, 1) \
186  TFC(ToName, TypeConversion, 1) \
187  TFC(NonNumberToNumber, TypeConversion, 1) \
188  TFC(NonNumberToNumeric, TypeConversion, 1) \
189  TFC(ToNumber, TypeConversion, 1) \
190  TFC(ToNumberConvertBigInt, TypeConversion, 1) \
191  TFC(ToNumeric, TypeConversion, 1) \
192  TFC(NumberToString, TypeConversion, 1) \
193  TFC(ToString, TypeConversion, 1) \
194  TFC(ToInteger, TypeConversion, 1) \
195  TFC(ToInteger_TruncateMinusZero, TypeConversion, 1) \
196  TFC(ToLength, TypeConversion, 1) \
197  TFC(Typeof, Typeof, 1) \
198  TFC(GetSuperConstructor, Typeof, 1) \
199  \
200  /* Type conversions continuations */ \
201  TFC(ToBooleanLazyDeoptContinuation, TypeConversionStackParameter, 1) \
202  \
203  /* Handlers */ \
204  TFH(KeyedLoadIC_PolymorphicName, LoadWithVector) \
205  TFH(KeyedLoadIC_Slow, LoadWithVector) \
206  TFH(KeyedStoreIC_Megamorphic, StoreWithVector) \
207  TFH(KeyedStoreIC_Slow, StoreWithVector) \
208  TFH(LoadGlobalIC_Slow, LoadWithVector) \
209  TFH(LoadIC_FunctionPrototype, LoadWithVector) \
210  TFH(LoadIC_Slow, LoadWithVector) \
211  TFH(LoadIC_StringLength, LoadWithVector) \
212  TFH(LoadIC_StringWrapperLength, LoadWithVector) \
213  TFH(LoadIC_Uninitialized, LoadWithVector) \
214  TFH(StoreGlobalIC_Slow, StoreWithVector) \
215  TFH(StoreIC_Uninitialized, StoreWithVector) \
216  TFH(StoreInArrayLiteralIC_Slow, StoreWithVector) \
217  TFH(KeyedLoadIC_SloppyArguments, LoadWithVector) \
218  TFH(LoadIndexedInterceptorIC, LoadWithVector) \
219  TFH(StoreInterceptorIC, StoreWithVector) \
220  TFH(KeyedStoreIC_SloppyArguments_Standard, StoreWithVector) \
221  TFH(KeyedStoreIC_SloppyArguments_GrowNoTransitionHandleCOW, StoreWithVector) \
222  TFH(KeyedStoreIC_SloppyArguments_NoTransitionIgnoreOOB, StoreWithVector) \
223  TFH(KeyedStoreIC_SloppyArguments_NoTransitionHandleCOW, StoreWithVector) \
224  TFH(StoreInArrayLiteralIC_Slow_Standard, StoreWithVector) \
225  TFH(StoreFastElementIC_Standard, StoreWithVector) \
226  TFH(StoreFastElementIC_GrowNoTransitionHandleCOW, StoreWithVector) \
227  TFH(StoreFastElementIC_NoTransitionIgnoreOOB, StoreWithVector) \
228  TFH(StoreFastElementIC_NoTransitionHandleCOW, StoreWithVector) \
229  TFH(StoreInArrayLiteralIC_Slow_GrowNoTransitionHandleCOW, StoreWithVector) \
230  TFH(StoreInArrayLiteralIC_Slow_NoTransitionIgnoreOOB, StoreWithVector) \
231  TFH(StoreInArrayLiteralIC_Slow_NoTransitionHandleCOW, StoreWithVector) \
232  TFH(KeyedStoreIC_Slow_Standard, StoreWithVector) \
233  TFH(KeyedStoreIC_Slow_GrowNoTransitionHandleCOW, StoreWithVector) \
234  TFH(KeyedStoreIC_Slow_NoTransitionIgnoreOOB, StoreWithVector) \
235  TFH(KeyedStoreIC_Slow_NoTransitionHandleCOW, StoreWithVector) \
236  TFH(ElementsTransitionAndStore_Standard, StoreTransition) \
237  TFH(ElementsTransitionAndStore_GrowNoTransitionHandleCOW, StoreTransition) \
238  TFH(ElementsTransitionAndStore_NoTransitionIgnoreOOB, StoreTransition) \
239  TFH(ElementsTransitionAndStore_NoTransitionHandleCOW, StoreTransition) \
240  \
241  /* Microtask helpers */ \
242  TFS(EnqueueMicrotask, kMicrotask) \
243  TFC(RunMicrotasks, RunMicrotasks, 1) \
244  \
245  /* Object property helpers */ \
246  TFS(HasProperty, kObject, kKey) \
247  TFS(DeleteProperty, kObject, kKey, kLanguageMode) \
248  \
249  /* Abort */ \
250  TFC(Abort, Abort, 1) \
251  TFC(AbortJS, Abort, 1) \
252  \
253  /* Built-in functions for Javascript */ \
254  /* Special internal builtins */ \
255  CPP(EmptyFunction) \
256  CPP(Illegal) \
257  CPP(StrictPoisonPillThrower) \
258  CPP(UnsupportedThrower) \
259  TFJ(ReturnReceiver, 0, kReceiver) \
260  \
261  /* Array */ \
262  TFC(ArrayConstructor, JSTrampoline, 1) \
263  TFC(ArrayConstructorImpl, ArrayConstructor, 1) \
264  TFC(ArrayNoArgumentConstructor_PackedSmi_DontOverride, \
265  ArrayNoArgumentConstructor, 1) \
266  TFC(ArrayNoArgumentConstructor_HoleySmi_DontOverride, \
267  ArrayNoArgumentConstructor, 1) \
268  TFC(ArrayNoArgumentConstructor_PackedSmi_DisableAllocationSites, \
269  ArrayNoArgumentConstructor, 1) \
270  TFC(ArrayNoArgumentConstructor_HoleySmi_DisableAllocationSites, \
271  ArrayNoArgumentConstructor, 1) \
272  TFC(ArrayNoArgumentConstructor_Packed_DisableAllocationSites, \
273  ArrayNoArgumentConstructor, 1) \
274  TFC(ArrayNoArgumentConstructor_Holey_DisableAllocationSites, \
275  ArrayNoArgumentConstructor, 1) \
276  TFC(ArrayNoArgumentConstructor_PackedDouble_DisableAllocationSites, \
277  ArrayNoArgumentConstructor, 1) \
278  TFC(ArrayNoArgumentConstructor_HoleyDouble_DisableAllocationSites, \
279  ArrayNoArgumentConstructor, 1) \
280  TFC(ArraySingleArgumentConstructor_PackedSmi_DontOverride, \
281  ArraySingleArgumentConstructor, 1) \
282  TFC(ArraySingleArgumentConstructor_HoleySmi_DontOverride, \
283  ArraySingleArgumentConstructor, 1) \
284  TFC(ArraySingleArgumentConstructor_PackedSmi_DisableAllocationSites, \
285  ArraySingleArgumentConstructor, 1) \
286  TFC(ArraySingleArgumentConstructor_HoleySmi_DisableAllocationSites, \
287  ArraySingleArgumentConstructor, 1) \
288  TFC(ArraySingleArgumentConstructor_Packed_DisableAllocationSites, \
289  ArraySingleArgumentConstructor, 1) \
290  TFC(ArraySingleArgumentConstructor_Holey_DisableAllocationSites, \
291  ArraySingleArgumentConstructor, 1) \
292  TFC(ArraySingleArgumentConstructor_PackedDouble_DisableAllocationSites, \
293  ArraySingleArgumentConstructor, 1) \
294  TFC(ArraySingleArgumentConstructor_HoleyDouble_DisableAllocationSites, \
295  ArraySingleArgumentConstructor, 1) \
296  TFC(ArrayNArgumentsConstructor, ArrayNArgumentsConstructor, 1) \
297  ASM(InternalArrayConstructor) \
298  ASM(InternalArrayConstructorImpl) \
299  TFC(InternalArrayNoArgumentConstructor_Packed, ArrayNoArgumentConstructor, \
300  1) \
301  TFC(InternalArrayNoArgumentConstructor_Holey, ArrayNoArgumentConstructor, 1) \
302  TFC(InternalArraySingleArgumentConstructor_Packed, \
303  ArraySingleArgumentConstructor, 1) \
304  TFC(InternalArraySingleArgumentConstructor_Holey, \
305  ArraySingleArgumentConstructor, 1) \
306  CPP(ArrayConcat) \
307  /* ES6 #sec-array.isarray */ \
308  TFJ(ArrayIsArray, 1, kReceiver, kArg) \
309  /* ES6 #sec-array.prototype.fill */ \
310  CPP(ArrayPrototypeFill) \
311  /* ES6 #sec-array.from */ \
312  TFJ(ArrayFrom, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
313  /* ES7 #sec-array.prototype.includes */ \
314  TFS(ArrayIncludesSmiOrObject, kElements, kSearchElement, kLength, \
315  kFromIndex) \
316  TFS(ArrayIncludesPackedDoubles, kElements, kSearchElement, kLength, \
317  kFromIndex) \
318  TFS(ArrayIncludesHoleyDoubles, kElements, kSearchElement, kLength, \
319  kFromIndex) \
320  TFJ(ArrayIncludes, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
321  /* ES6 #sec-array.prototype.indexof */ \
322  TFS(ArrayIndexOfSmiOrObject, kElements, kSearchElement, kLength, kFromIndex) \
323  TFS(ArrayIndexOfPackedDoubles, kElements, kSearchElement, kLength, \
324  kFromIndex) \
325  TFS(ArrayIndexOfHoleyDoubles, kElements, kSearchElement, kLength, \
326  kFromIndex) \
327  TFJ(ArrayIndexOf, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
328  /* ES6 #sec-array.prototype.pop */ \
329  CPP(ArrayPop) \
330  TFJ(ArrayPrototypePop, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
331  /* ES6 #sec-array.prototype.push */ \
332  CPP(ArrayPush) \
333  TFJ(ArrayPrototypePush, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
334  /* ES6 #sec-array.prototype.shift */ \
335  CPP(ArrayShift) \
336  TFJ(ArrayPrototypeShift, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
337  /* ES6 #sec-array.prototype.unshift */ \
338  CPP(ArrayUnshift) \
339  /* Support for Array.from and other array-copying idioms */ \
340  TFS(CloneFastJSArray, kSource) \
341  TFS(CloneFastJSArrayFillingHoles, kSource) \
342  TFS(ExtractFastJSArray, kSource, kBegin, kCount) \
343  /* ES6 #sec-array.prototype.every */ \
344  TFS(ArrayEveryLoopContinuation, kReceiver, kCallbackFn, kThisArg, kArray, \
345  kObject, kInitialK, kLength, kTo) \
346  TFJ(ArrayEveryLoopEagerDeoptContinuation, 4, kReceiver, kCallbackFn, \
347  kThisArg, kInitialK, kLength) \
348  TFJ(ArrayEveryLoopLazyDeoptContinuation, 5, kReceiver, kCallbackFn, \
349  kThisArg, kInitialK, kLength, kResult) \
350  TFJ(ArrayEvery, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
351  /* ES6 #sec-array.prototype.some */ \
352  TFS(ArraySomeLoopContinuation, kReceiver, kCallbackFn, kThisArg, kArray, \
353  kObject, kInitialK, kLength, kTo) \
354  TFJ(ArraySomeLoopEagerDeoptContinuation, 4, kReceiver, kCallbackFn, \
355  kThisArg, kInitialK, kLength) \
356  TFJ(ArraySomeLoopLazyDeoptContinuation, 5, kReceiver, kCallbackFn, kThisArg, \
357  kInitialK, kLength, kResult) \
358  TFJ(ArraySome, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
359  /* ES6 #sec-array.prototype.filter */ \
360  TFS(ArrayFilterLoopContinuation, kReceiver, kCallbackFn, kThisArg, kArray, \
361  kObject, kInitialK, kLength, kTo) \
362  TFJ(ArrayFilter, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
363  TFJ(ArrayFilterLoopEagerDeoptContinuation, 6, kReceiver, kCallbackFn, \
364  kThisArg, kArray, kInitialK, kLength, kTo) \
365  TFJ(ArrayFilterLoopLazyDeoptContinuation, 8, kReceiver, kCallbackFn, \
366  kThisArg, kArray, kInitialK, kLength, kValueK, kTo, kResult) \
367  /* ES6 #sec-array.prototype.foreach */ \
368  TFS(ArrayMapLoopContinuation, kReceiver, kCallbackFn, kThisArg, kArray, \
369  kObject, kInitialK, kLength, kTo) \
370  TFJ(ArrayMapLoopEagerDeoptContinuation, 5, kReceiver, kCallbackFn, kThisArg, \
371  kArray, kInitialK, kLength) \
372  TFJ(ArrayMapLoopLazyDeoptContinuation, 6, kReceiver, kCallbackFn, kThisArg, \
373  kArray, kInitialK, kLength, kResult) \
374  TFJ(ArrayMap, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
375  /* ES6 #sec-array.prototype.reduce */ \
376  TFS(ArrayReduceLoopContinuation, kReceiver, kCallbackFn, kThisArg, \
377  kAccumulator, kObject, kInitialK, kLength, kTo) \
378  TFJ(ArrayReducePreLoopEagerDeoptContinuation, 2, kReceiver, kCallbackFn, \
379  kLength) \
380  TFJ(ArrayReduceLoopEagerDeoptContinuation, 4, kReceiver, kCallbackFn, \
381  kInitialK, kLength, kAccumulator) \
382  TFJ(ArrayReduceLoopLazyDeoptContinuation, 4, kReceiver, kCallbackFn, \
383  kInitialK, kLength, kResult) \
384  TFJ(ArrayReduce, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
385  /* ES6 #sec-array.prototype.reduceRight */ \
386  TFS(ArrayReduceRightLoopContinuation, kReceiver, kCallbackFn, kThisArg, \
387  kAccumulator, kObject, kInitialK, kLength, kTo) \
388  TFJ(ArrayReduceRightPreLoopEagerDeoptContinuation, 2, kReceiver, \
389  kCallbackFn, kLength) \
390  TFJ(ArrayReduceRightLoopEagerDeoptContinuation, 4, kReceiver, kCallbackFn, \
391  kInitialK, kLength, kAccumulator) \
392  TFJ(ArrayReduceRightLoopLazyDeoptContinuation, 4, kReceiver, kCallbackFn, \
393  kInitialK, kLength, kResult) \
394  TFJ(ArrayReduceRight, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
395  /* ES6 #sec-array.prototype.entries */ \
396  TFJ(ArrayPrototypeEntries, 0, kReceiver) \
397  /* ES6 #sec-array.prototype.find */ \
398  TFS(ArrayFindLoopContinuation, kReceiver, kCallbackFn, kThisArg, kArray, \
399  kObject, kInitialK, kLength, kTo) \
400  TFJ(ArrayFindLoopEagerDeoptContinuation, 4, kReceiver, kCallbackFn, \
401  kThisArg, kInitialK, kLength) \
402  TFJ(ArrayFindLoopLazyDeoptContinuation, 5, kReceiver, kCallbackFn, kThisArg, \
403  kInitialK, kLength, kResult) \
404  TFJ(ArrayFindLoopAfterCallbackLazyDeoptContinuation, 6, kReceiver, \
405  kCallbackFn, kThisArg, kInitialK, kLength, kFoundValue, kIsFound) \
406  TFJ(ArrayPrototypeFind, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
407  /* ES6 #sec-array.prototype.findIndex */ \
408  TFS(ArrayFindIndexLoopContinuation, kReceiver, kCallbackFn, kThisArg, \
409  kArray, kObject, kInitialK, kLength, kTo) \
410  TFJ(ArrayFindIndexLoopEagerDeoptContinuation, 4, kReceiver, kCallbackFn, \
411  kThisArg, kInitialK, kLength) \
412  TFJ(ArrayFindIndexLoopLazyDeoptContinuation, 5, kReceiver, kCallbackFn, \
413  kThisArg, kInitialK, kLength, kResult) \
414  TFJ(ArrayFindIndexLoopAfterCallbackLazyDeoptContinuation, 6, kReceiver, \
415  kCallbackFn, kThisArg, kInitialK, kLength, kFoundValue, kIsFound) \
416  TFJ(ArrayPrototypeFindIndex, \
417  SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
418  /* ES6 #sec-array.prototype.keys */ \
419  TFJ(ArrayPrototypeKeys, 0, kReceiver) \
420  /* ES6 #sec-array.prototype.values */ \
421  TFJ(ArrayPrototypeValues, 0, kReceiver) \
422  /* ES6 #sec-%arrayiteratorprototype%.next */ \
423  TFJ(ArrayIteratorPrototypeNext, 0, kReceiver) \
424  /* https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray */ \
425  TFS(FlattenIntoArray, kTarget, kSource, kSourceLength, kStart, kDepth) \
426  TFS(FlatMapIntoArray, kTarget, kSource, kSourceLength, kStart, kDepth, \
427  kMapperFunction, kThisArg) \
428  /* https://tc39.github.io/proposal-flatMap/#sec-Array.prototype.flat */ \
429  TFJ(ArrayPrototypeFlat, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
430  /* https://tc39.github.io/proposal-flatMap/#sec-Array.prototype.flatMap */ \
431  TFJ(ArrayPrototypeFlatMap, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
432  \
433  /* ArrayBuffer */ \
434  /* ES #sec-arraybuffer-constructor */ \
435  CPP(ArrayBufferConstructor) \
436  CPP(ArrayBufferConstructor_DoNotInitialize) \
437  CPP(ArrayBufferPrototypeGetByteLength) \
438  CPP(ArrayBufferIsView) \
439  CPP(ArrayBufferPrototypeSlice) \
440  \
441  /* AsyncFunction */ \
442  TFS(AsyncFunctionEnter, kClosure, kReceiver) \
443  TFS(AsyncFunctionReject, kAsyncFunctionObject, kReason, kCanSuspend) \
444  TFS(AsyncFunctionResolve, kAsyncFunctionObject, kValue, kCanSuspend) \
445  TFC(AsyncFunctionLazyDeoptContinuation, AsyncFunctionStackParameter, 1) \
446  TFS(AsyncFunctionAwaitCaught, kAsyncFunctionObject, kValue) \
447  TFS(AsyncFunctionAwaitUncaught, kAsyncFunctionObject, kValue) \
448  TFJ(AsyncFunctionAwaitRejectClosure, 1, kReceiver, kSentError) \
449  TFJ(AsyncFunctionAwaitResolveClosure, 1, kReceiver, kSentValue) \
450  \
451  /* BigInt */ \
452  CPP(BigIntConstructor) \
453  CPP(BigIntAsUintN) \
454  CPP(BigIntAsIntN) \
455  CPP(BigIntPrototypeToLocaleString) \
456  CPP(BigIntPrototypeToString) \
457  CPP(BigIntPrototypeValueOf) \
458  \
459  /* Boolean */ \
460  /* ES #sec-boolean-constructor */ \
461  CPP(BooleanConstructor) \
462  /* ES6 #sec-boolean.prototype.tostring */ \
463  TFJ(BooleanPrototypeToString, 0, kReceiver) \
464  /* ES6 #sec-boolean.prototype.valueof */ \
465  TFJ(BooleanPrototypeValueOf, 0, kReceiver) \
466  \
467  /* CallSite */ \
468  CPP(CallSitePrototypeGetColumnNumber) \
469  CPP(CallSitePrototypeGetEvalOrigin) \
470  CPP(CallSitePrototypeGetFileName) \
471  CPP(CallSitePrototypeGetFunction) \
472  CPP(CallSitePrototypeGetFunctionName) \
473  CPP(CallSitePrototypeGetLineNumber) \
474  CPP(CallSitePrototypeGetMethodName) \
475  CPP(CallSitePrototypeGetPosition) \
476  CPP(CallSitePrototypeGetPromiseIndex) \
477  CPP(CallSitePrototypeGetScriptNameOrSourceURL) \
478  CPP(CallSitePrototypeGetThis) \
479  CPP(CallSitePrototypeGetTypeName) \
480  CPP(CallSitePrototypeIsAsync) \
481  CPP(CallSitePrototypeIsConstructor) \
482  CPP(CallSitePrototypeIsEval) \
483  CPP(CallSitePrototypeIsNative) \
484  CPP(CallSitePrototypeIsPromiseAll) \
485  CPP(CallSitePrototypeIsToplevel) \
486  CPP(CallSitePrototypeToString) \
487  \
488  /* Console */ \
489  CPP(ConsoleDebug) \
490  CPP(ConsoleError) \
491  CPP(ConsoleInfo) \
492  CPP(ConsoleLog) \
493  CPP(ConsoleWarn) \
494  CPP(ConsoleDir) \
495  CPP(ConsoleDirXml) \
496  CPP(ConsoleTable) \
497  CPP(ConsoleTrace) \
498  CPP(ConsoleGroup) \
499  CPP(ConsoleGroupCollapsed) \
500  CPP(ConsoleGroupEnd) \
501  CPP(ConsoleClear) \
502  CPP(ConsoleCount) \
503  CPP(ConsoleCountReset) \
504  CPP(ConsoleAssert) \
505  TFJ(FastConsoleAssert, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
506  CPP(ConsoleProfile) \
507  CPP(ConsoleProfileEnd) \
508  CPP(ConsoleTime) \
509  CPP(ConsoleTimeLog) \
510  CPP(ConsoleTimeEnd) \
511  CPP(ConsoleTimeStamp) \
512  CPP(ConsoleContext) \
513  \
514  /* DataView */ \
515  /* ES #sec-dataview-constructor */ \
516  CPP(DataViewConstructor) \
517  \
518  /* Date */ \
519  /* ES #sec-date-constructor */ \
520  CPP(DateConstructor) \
521  /* ES6 #sec-date.prototype.getdate */ \
522  TFJ(DatePrototypeGetDate, 0, kReceiver) \
523  /* ES6 #sec-date.prototype.getday */ \
524  TFJ(DatePrototypeGetDay, 0, kReceiver) \
525  /* ES6 #sec-date.prototype.getfullyear */ \
526  TFJ(DatePrototypeGetFullYear, 0, kReceiver) \
527  /* ES6 #sec-date.prototype.gethours */ \
528  TFJ(DatePrototypeGetHours, 0, kReceiver) \
529  /* ES6 #sec-date.prototype.getmilliseconds */ \
530  TFJ(DatePrototypeGetMilliseconds, 0, kReceiver) \
531  /* ES6 #sec-date.prototype.getminutes */ \
532  TFJ(DatePrototypeGetMinutes, 0, kReceiver) \
533  /* ES6 #sec-date.prototype.getmonth */ \
534  TFJ(DatePrototypeGetMonth, 0, kReceiver) \
535  /* ES6 #sec-date.prototype.getseconds */ \
536  TFJ(DatePrototypeGetSeconds, 0, kReceiver) \
537  /* ES6 #sec-date.prototype.gettime */ \
538  TFJ(DatePrototypeGetTime, 0, kReceiver) \
539  /* ES6 #sec-date.prototype.gettimezoneoffset */ \
540  TFJ(DatePrototypeGetTimezoneOffset, 0, kReceiver) \
541  /* ES6 #sec-date.prototype.getutcdate */ \
542  TFJ(DatePrototypeGetUTCDate, 0, kReceiver) \
543  /* ES6 #sec-date.prototype.getutcday */ \
544  TFJ(DatePrototypeGetUTCDay, 0, kReceiver) \
545  /* ES6 #sec-date.prototype.getutcfullyear */ \
546  TFJ(DatePrototypeGetUTCFullYear, 0, kReceiver) \
547  /* ES6 #sec-date.prototype.getutchours */ \
548  TFJ(DatePrototypeGetUTCHours, 0, kReceiver) \
549  /* ES6 #sec-date.prototype.getutcmilliseconds */ \
550  TFJ(DatePrototypeGetUTCMilliseconds, 0, kReceiver) \
551  /* ES6 #sec-date.prototype.getutcminutes */ \
552  TFJ(DatePrototypeGetUTCMinutes, 0, kReceiver) \
553  /* ES6 #sec-date.prototype.getutcmonth */ \
554  TFJ(DatePrototypeGetUTCMonth, 0, kReceiver) \
555  /* ES6 #sec-date.prototype.getutcseconds */ \
556  TFJ(DatePrototypeGetUTCSeconds, 0, kReceiver) \
557  /* ES6 #sec-date.prototype.valueof */ \
558  TFJ(DatePrototypeValueOf, 0, kReceiver) \
559  /* ES6 #sec-date.prototype-@@toprimitive */ \
560  TFJ(DatePrototypeToPrimitive, 1, kReceiver, kHint) \
561  CPP(DatePrototypeGetYear) \
562  CPP(DatePrototypeSetYear) \
563  CPP(DateNow) \
564  CPP(DateParse) \
565  CPP(DatePrototypeSetDate) \
566  CPP(DatePrototypeSetFullYear) \
567  CPP(DatePrototypeSetHours) \
568  CPP(DatePrototypeSetMilliseconds) \
569  CPP(DatePrototypeSetMinutes) \
570  CPP(DatePrototypeSetMonth) \
571  CPP(DatePrototypeSetSeconds) \
572  CPP(DatePrototypeSetTime) \
573  CPP(DatePrototypeSetUTCDate) \
574  CPP(DatePrototypeSetUTCFullYear) \
575  CPP(DatePrototypeSetUTCHours) \
576  CPP(DatePrototypeSetUTCMilliseconds) \
577  CPP(DatePrototypeSetUTCMinutes) \
578  CPP(DatePrototypeSetUTCMonth) \
579  CPP(DatePrototypeSetUTCSeconds) \
580  CPP(DatePrototypeToDateString) \
581  CPP(DatePrototypeToISOString) \
582  CPP(DatePrototypeToUTCString) \
583  CPP(DatePrototypeToString) \
584  CPP(DatePrototypeToTimeString) \
585  CPP(DatePrototypeToJson) \
586  CPP(DateUTC) \
587  \
588  /* Error */ \
589  CPP(ErrorConstructor) \
590  CPP(ErrorCaptureStackTrace) \
591  CPP(ErrorPrototypeToString) \
592  CPP(MakeError) \
593  CPP(MakeRangeError) \
594  CPP(MakeSyntaxError) \
595  CPP(MakeTypeError) \
596  CPP(MakeURIError) \
597  \
598  /* Function */ \
599  CPP(FunctionConstructor) \
600  ASM(FunctionPrototypeApply) \
601  CPP(FunctionPrototypeBind) \
602  /* ES6 #sec-function.prototype.bind */ \
603  TFJ(FastFunctionPrototypeBind, \
604  SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
605  ASM(FunctionPrototypeCall) \
606  /* ES6 #sec-function.prototype-@@hasinstance */ \
607  TFJ(FunctionPrototypeHasInstance, 1, kReceiver, kV) \
608  /* ES6 #sec-function.prototype.tostring */ \
609  CPP(FunctionPrototypeToString) \
610  \
611  /* Belongs to Objects but is a dependency of GeneratorPrototypeResume */ \
612  TFS(CreateIterResultObject, kValue, kDone) \
613  \
614  /* Generator and Async */ \
615  TFS(CreateGeneratorObject, kClosure, kReceiver) \
616  CPP(GeneratorFunctionConstructor) \
617  /* ES6 #sec-generator.prototype.next */ \
618  TFJ(GeneratorPrototypeNext, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
619  /* ES6 #sec-generator.prototype.return */ \
620  TFJ(GeneratorPrototypeReturn, \
621  SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
622  /* ES6 #sec-generator.prototype.throw */ \
623  TFJ(GeneratorPrototypeThrow, \
624  SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
625  CPP(AsyncFunctionConstructor) \
626  \
627  /* Global object */ \
628  CPP(GlobalDecodeURI) \
629  CPP(GlobalDecodeURIComponent) \
630  CPP(GlobalEncodeURI) \
631  CPP(GlobalEncodeURIComponent) \
632  CPP(GlobalEscape) \
633  CPP(GlobalUnescape) \
634  CPP(GlobalEval) \
635  /* ES6 #sec-isfinite-number */ \
636  TFJ(GlobalIsFinite, 1, kReceiver, kNumber) \
637  /* ES6 #sec-isnan-number */ \
638  TFJ(GlobalIsNaN, 1, kReceiver, kNumber) \
639  \
640  /* JSON */ \
641  CPP(JsonParse) \
642  CPP(JsonStringify) \
643  \
644  /* ICs */ \
645  TFH(LoadIC, LoadWithVector) \
646  TFH(LoadIC_Megamorphic, LoadWithVector) \
647  TFH(LoadIC_Noninlined, LoadWithVector) \
648  TFH(LoadICTrampoline, Load) \
649  TFH(LoadICTrampoline_Megamorphic, Load) \
650  TFH(KeyedLoadIC, LoadWithVector) \
651  TFH(KeyedLoadIC_Megamorphic, LoadWithVector) \
652  TFH(KeyedLoadICTrampoline, Load) \
653  TFH(KeyedLoadICTrampoline_Megamorphic, Load) \
654  TFH(StoreGlobalIC, StoreGlobalWithVector) \
655  TFH(StoreGlobalICTrampoline, StoreGlobal) \
656  TFH(StoreIC, StoreWithVector) \
657  TFH(StoreICTrampoline, Store) \
658  TFH(KeyedStoreIC, StoreWithVector) \
659  TFH(KeyedStoreICTrampoline, Store) \
660  TFH(StoreInArrayLiteralIC, StoreWithVector) \
661  TFH(LoadGlobalIC, LoadGlobalWithVector) \
662  TFH(LoadGlobalICInsideTypeof, LoadGlobalWithVector) \
663  TFH(LoadGlobalICTrampoline, LoadGlobal) \
664  TFH(LoadGlobalICInsideTypeofTrampoline, LoadGlobal) \
665  TFH(CloneObjectIC, CloneObjectWithVector) \
666  TFH(CloneObjectIC_Slow, CloneObjectWithVector) \
667  \
668  /* IterableToList */ \
669  /* ES #sec-iterabletolist */ \
670  TFS(IterableToList, kIterable, kIteratorFn) \
671  TFS(IterableToListWithSymbolLookup, kIterable) \
672  TFS(IterableToListMayPreserveHoles, kIterable, kIteratorFn) \
673  \
674  /* Map */ \
675  TFS(FindOrderedHashMapEntry, kTable, kKey) \
676  TFJ(MapConstructor, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
677  TFJ(MapPrototypeSet, 2, kReceiver, kKey, kValue) \
678  TFJ(MapPrototypeDelete, 1, kReceiver, kKey) \
679  TFJ(MapPrototypeGet, 1, kReceiver, kKey) \
680  TFJ(MapPrototypeHas, 1, kReceiver, kKey) \
681  CPP(MapPrototypeClear) \
682  /* ES #sec-map.prototype.entries */ \
683  TFJ(MapPrototypeEntries, 0, kReceiver) \
684  /* ES #sec-get-map.prototype.size */ \
685  TFJ(MapPrototypeGetSize, 0, kReceiver) \
686  /* ES #sec-map.prototype.forEach */ \
687  TFJ(MapPrototypeForEach, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
688  /* ES #sec-map.prototype.keys */ \
689  TFJ(MapPrototypeKeys, 0, kReceiver) \
690  /* ES #sec-map.prototype.values */ \
691  TFJ(MapPrototypeValues, 0, kReceiver) \
692  /* ES #sec-%mapiteratorprototype%.next */ \
693  TFJ(MapIteratorPrototypeNext, 0, kReceiver) \
694  TFS(MapIteratorToList, kSource) \
695  \
696  /* Math */ \
697  /* ES6 #sec-math.abs */ \
698  TFJ(MathAbs, 1, kReceiver, kX) \
699  /* ES6 #sec-math.acos */ \
700  TFJ(MathAcos, 1, kReceiver, kX) \
701  /* ES6 #sec-math.acosh */ \
702  TFJ(MathAcosh, 1, kReceiver, kX) \
703  /* ES6 #sec-math.asin */ \
704  TFJ(MathAsin, 1, kReceiver, kX) \
705  /* ES6 #sec-math.asinh */ \
706  TFJ(MathAsinh, 1, kReceiver, kX) \
707  /* ES6 #sec-math.atan */ \
708  TFJ(MathAtan, 1, kReceiver, kX) \
709  /* ES6 #sec-math.atanh */ \
710  TFJ(MathAtanh, 1, kReceiver, kX) \
711  /* ES6 #sec-math.atan2 */ \
712  TFJ(MathAtan2, 2, kReceiver, kY, kX) \
713  /* ES6 #sec-math.cbrt */ \
714  TFJ(MathCbrt, 1, kReceiver, kX) \
715  /* ES6 #sec-math.ceil */ \
716  TFJ(MathCeil, 1, kReceiver, kX) \
717  /* ES6 #sec-math.clz32 */ \
718  TFJ(MathClz32, 1, kReceiver, kX) \
719  /* ES6 #sec-math.cos */ \
720  TFJ(MathCos, 1, kReceiver, kX) \
721  /* ES6 #sec-math.cosh */ \
722  TFJ(MathCosh, 1, kReceiver, kX) \
723  /* ES6 #sec-math.exp */ \
724  TFJ(MathExp, 1, kReceiver, kX) \
725  /* ES6 #sec-math.expm1 */ \
726  TFJ(MathExpm1, 1, kReceiver, kX) \
727  /* ES6 #sec-math.floor */ \
728  TFJ(MathFloor, 1, kReceiver, kX) \
729  /* ES6 #sec-math.fround */ \
730  TFJ(MathFround, 1, kReceiver, kX) \
731  /* ES6 #sec-math.hypot */ \
732  CPP(MathHypot) \
733  /* ES6 #sec-math.imul */ \
734  TFJ(MathImul, 2, kReceiver, kX, kY) \
735  /* ES6 #sec-math.log */ \
736  TFJ(MathLog, 1, kReceiver, kX) \
737  /* ES6 #sec-math.log1p */ \
738  TFJ(MathLog1p, 1, kReceiver, kX) \
739  /* ES6 #sec-math.log10 */ \
740  TFJ(MathLog10, 1, kReceiver, kX) \
741  /* ES6 #sec-math.log2 */ \
742  TFJ(MathLog2, 1, kReceiver, kX) \
743  /* ES6 #sec-math.max */ \
744  TFJ(MathMax, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
745  /* ES6 #sec-math.min */ \
746  TFJ(MathMin, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
747  /* ES6 #sec-math.pow */ \
748  TFJ(MathPow, 2, kReceiver, kBase, kExponent) \
749  /* ES6 #sec-math.random */ \
750  TFJ(MathRandom, 0, kReceiver) \
751  /* ES6 #sec-math.round */ \
752  TFJ(MathRound, 1, kReceiver, kX) \
753  /* ES6 #sec-math.sign */ \
754  TFJ(MathSign, 1, kReceiver, kX) \
755  /* ES6 #sec-math.sin */ \
756  TFJ(MathSin, 1, kReceiver, kX) \
757  /* ES6 #sec-math.sinh */ \
758  TFJ(MathSinh, 1, kReceiver, kX) \
759  /* ES6 #sec-math.sqrt */ \
760  TFJ(MathTan, 1, kReceiver, kX) \
761  /* ES6 #sec-math.tan */ \
762  TFJ(MathTanh, 1, kReceiver, kX) \
763  /* ES6 #sec-math.tanh */ \
764  TFJ(MathSqrt, 1, kReceiver, kX) \
765  /* ES6 #sec-math.trunc */ \
766  TFJ(MathTrunc, 1, kReceiver, kX) \
767  \
768  /* Number */ \
769  TFC(AllocateHeapNumber, AllocateHeapNumber, 1) \
770  /* ES #sec-number-constructor */ \
771  TFJ(NumberConstructor, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
772  /* ES6 #sec-number.isfinite */ \
773  TFJ(NumberIsFinite, 1, kReceiver, kNumber) \
774  /* ES6 #sec-number.isinteger */ \
775  TFJ(NumberIsInteger, 1, kReceiver, kNumber) \
776  /* ES6 #sec-number.isnan */ \
777  TFJ(NumberIsNaN, 1, kReceiver, kNumber) \
778  /* ES6 #sec-number.issafeinteger */ \
779  TFJ(NumberIsSafeInteger, 1, kReceiver, kNumber) \
780  /* ES6 #sec-number.parsefloat */ \
781  TFJ(NumberParseFloat, 1, kReceiver, kString) \
782  /* ES6 #sec-number.parseint */ \
783  TFJ(NumberParseInt, 2, kReceiver, kString, kRadix) \
784  TFS(ParseInt, kString, kRadix) \
785  CPP(NumberPrototypeToExponential) \
786  CPP(NumberPrototypeToFixed) \
787  CPP(NumberPrototypeToLocaleString) \
788  CPP(NumberPrototypeToPrecision) \
789  CPP(NumberPrototypeToString) \
790  /* ES6 #sec-number.prototype.valueof */ \
791  TFJ(NumberPrototypeValueOf, 0, kReceiver) \
792  TFC(Add, BinaryOp, 1) \
793  TFC(Subtract, BinaryOp, 1) \
794  TFC(Multiply, BinaryOp, 1) \
795  TFC(Divide, BinaryOp, 1) \
796  TFC(Modulus, BinaryOp, 1) \
797  TFC(Exponentiate, BinaryOp, 1) \
798  TFC(BitwiseAnd, BinaryOp, 1) \
799  TFC(BitwiseOr, BinaryOp, 1) \
800  TFC(BitwiseXor, BinaryOp, 1) \
801  TFC(ShiftLeft, BinaryOp, 1) \
802  TFC(ShiftRight, BinaryOp, 1) \
803  TFC(ShiftRightLogical, BinaryOp, 1) \
804  TFC(LessThan, Compare, 1) \
805  TFC(LessThanOrEqual, Compare, 1) \
806  TFC(GreaterThan, Compare, 1) \
807  TFC(GreaterThanOrEqual, Compare, 1) \
808  TFC(Equal, Compare, 1) \
809  TFC(SameValue, Compare, 1) \
810  TFC(StrictEqual, Compare, 1) \
811  TFS(BitwiseNot, kValue) \
812  TFS(Decrement, kValue) \
813  TFS(Increment, kValue) \
814  TFS(Negate, kValue) \
815  \
816  /* Object */ \
817  /* ES #sec-object-constructor */ \
818  TFJ(ObjectConstructor, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
819  TFJ(ObjectAssign, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
820  /* ES #sec-object.create */ \
821  TFJ(ObjectCreate, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
822  TFS(CreateObjectWithoutProperties, kPrototypeArg) \
823  CPP(ObjectDefineGetter) \
824  CPP(ObjectDefineProperties) \
825  CPP(ObjectDefineProperty) \
826  CPP(ObjectDefineSetter) \
827  TFJ(ObjectEntries, 1, kReceiver, kObject) \
828  CPP(ObjectFreeze) \
829  TFJ(ObjectGetOwnPropertyDescriptor, \
830  SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
831  CPP(ObjectGetOwnPropertyDescriptors) \
832  TFJ(ObjectGetOwnPropertyNames, 1, kReceiver, kObject) \
833  CPP(ObjectGetOwnPropertySymbols) \
834  CPP(ObjectGetPrototypeOf) \
835  CPP(ObjectSetPrototypeOf) \
836  TFJ(ObjectIs, 2, kReceiver, kLeft, kRight) \
837  CPP(ObjectIsExtensible) \
838  CPP(ObjectIsFrozen) \
839  CPP(ObjectIsSealed) \
840  TFJ(ObjectKeys, 1, kReceiver, kObject) \
841  CPP(ObjectLookupGetter) \
842  CPP(ObjectLookupSetter) \
843  CPP(ObjectPreventExtensions) \
844  /* ES6 #sec-object.prototype.tostring */ \
845  TFJ(ObjectPrototypeToString, 0, kReceiver) \
846  /* ES6 #sec-object.prototype.valueof */ \
847  TFJ(ObjectPrototypeValueOf, 0, kReceiver) \
848  /* ES6 #sec-object.prototype.hasownproperty */ \
849  TFJ(ObjectPrototypeHasOwnProperty, 1, kReceiver, kKey) \
850  TFJ(ObjectPrototypeIsPrototypeOf, 1, kReceiver, kValue) \
851  CPP(ObjectPrototypePropertyIsEnumerable) \
852  CPP(ObjectPrototypeGetProto) \
853  CPP(ObjectPrototypeSetProto) \
854  /* ES #sec-object.prototype.tolocalestring */ \
855  TFJ(ObjectPrototypeToLocaleString, 0, kReceiver) \
856  CPP(ObjectSeal) \
857  TFS(ObjectToString, kReceiver) \
858  TFJ(ObjectValues, 1, kReceiver, kObject) \
859  \
860  /* instanceof */ \
861  TFC(OrdinaryHasInstance, Compare, 1) \
862  TFC(InstanceOf, Compare, 1) \
863  \
864  /* for-in */ \
865  TFS(ForInEnumerate, kReceiver) \
866  TFS(ForInFilter, kKey, kObject) \
867  \
868  /* Promise */ \
869  /* ES #sec-fulfillpromise */ \
870  TFS(FulfillPromise, kPromise, kValue) \
871  /* ES #sec-rejectpromise */ \
872  TFS(RejectPromise, kPromise, kReason, kDebugEvent) \
873  /* ES #sec-promise-resolve-functions */ \
874  /* Starting at step 6 of "Promise Resolve Functions" */ \
875  TFS(ResolvePromise, kPromise, kResolution) \
876  /* ES #sec-promise-reject-functions */ \
877  TFJ(PromiseCapabilityDefaultReject, 1, kReceiver, kReason) \
878  /* ES #sec-promise-resolve-functions */ \
879  TFJ(PromiseCapabilityDefaultResolve, 1, kReceiver, kResolution) \
880  /* ES6 #sec-getcapabilitiesexecutor-functions */ \
881  TFJ(PromiseGetCapabilitiesExecutor, 2, kReceiver, kResolve, kReject) \
882  /* ES6 #sec-newpromisecapability */ \
883  TFS(NewPromiseCapability, kConstructor, kDebugEvent) \
884  TFJ(PromiseConstructorLazyDeoptContinuation, 4, kReceiver, kPromise, \
885  kReject, kException, kResult) \
886  /* ES6 #sec-promise-executor */ \
887  TFJ(PromiseConstructor, 1, kReceiver, kExecutor) \
888  CPP(IsPromise) \
889  /* ES #sec-promise.prototype.then */ \
890  TFJ(PromisePrototypeThen, 2, kReceiver, kOnFulfilled, kOnRejected) \
891  /* ES #sec-performpromisethen */ \
892  TFS(PerformPromiseThen, kPromise, kOnFulfilled, kOnRejected, kResultPromise) \
893  /* ES #sec-promise.prototype.catch */ \
894  TFJ(PromisePrototypeCatch, 1, kReceiver, kOnRejected) \
895  /* ES #sec-promisereactionjob */ \
896  TFS(PromiseRejectReactionJob, kReason, kHandler, kPromiseOrCapability) \
897  TFS(PromiseFulfillReactionJob, kValue, kHandler, kPromiseOrCapability) \
898  /* ES #sec-promiseresolvethenablejob */ \
899  TFS(PromiseResolveThenableJob, kPromiseToResolve, kThenable, kThen) \
900  /* ES #sec-promise.resolve */ \
901  TFJ(PromiseResolveTrampoline, 1, kReceiver, kValue) \
902  /* ES #sec-promise-resolve */ \
903  TFS(PromiseResolve, kConstructor, kValue) \
904  /* ES #sec-promise.reject */ \
905  TFJ(PromiseReject, 1, kReceiver, kReason) \
906  TFJ(PromisePrototypeFinally, 1, kReceiver, kOnFinally) \
907  TFJ(PromiseThenFinally, 1, kReceiver, kValue) \
908  TFJ(PromiseCatchFinally, 1, kReceiver, kReason) \
909  TFJ(PromiseValueThunkFinally, 0, kReceiver) \
910  TFJ(PromiseThrowerFinally, 0, kReceiver) \
911  /* ES #sec-promise.all */ \
912  TFJ(PromiseAll, 1, kReceiver, kIterable) \
913  TFJ(PromiseAllResolveElementClosure, 1, kReceiver, kValue) \
914  /* ES #sec-promise.race */ \
915  TFJ(PromiseRace, 1, kReceiver, kIterable) \
916  /* V8 Extras: v8.createPromise(parent) */ \
917  TFJ(PromiseInternalConstructor, 1, kReceiver, kParent) \
918  /* V8 Extras: v8.rejectPromise(promise, reason) */ \
919  TFJ(PromiseInternalReject, 2, kReceiver, kPromise, kReason) \
920  /* V8 Extras: v8.resolvePromise(promise, resolution) */ \
921  TFJ(PromiseInternalResolve, 2, kReceiver, kPromise, kResolution) \
922  \
923  /* Proxy */ \
924  TFJ(ProxyConstructor, 2, kReceiver, kTarget, kHandler) \
925  TFJ(ProxyRevocable, 2, kReceiver, kTarget, kHandler) \
926  TFJ(ProxyRevoke, 0, kReceiver) \
927  TFS(ProxyGetProperty, kProxy, kName, kReceiverValue, kOnNonExistent) \
928  TFS(ProxyHasProperty, kProxy, kName) \
929  TFS(ProxySetProperty, kProxy, kName, kValue, kReceiverValue, kLanguageMode) \
930  \
931  /* Reflect */ \
932  ASM(ReflectApply) \
933  ASM(ReflectConstruct) \
934  CPP(ReflectDefineProperty) \
935  CPP(ReflectDeleteProperty) \
936  CPP(ReflectGet) \
937  CPP(ReflectGetOwnPropertyDescriptor) \
938  CPP(ReflectGetPrototypeOf) \
939  TFJ(ReflectHas, 2, kReceiver, kTarget, kKey) \
940  CPP(ReflectIsExtensible) \
941  CPP(ReflectOwnKeys) \
942  CPP(ReflectPreventExtensions) \
943  CPP(ReflectSet) \
944  CPP(ReflectSetPrototypeOf) \
945  \
946  /* RegExp */ \
947  CPP(RegExpCapture1Getter) \
948  CPP(RegExpCapture2Getter) \
949  CPP(RegExpCapture3Getter) \
950  CPP(RegExpCapture4Getter) \
951  CPP(RegExpCapture5Getter) \
952  CPP(RegExpCapture6Getter) \
953  CPP(RegExpCapture7Getter) \
954  CPP(RegExpCapture8Getter) \
955  CPP(RegExpCapture9Getter) \
956  /* ES #sec-regexp-pattern-flags */ \
957  TFJ(RegExpConstructor, 2, kReceiver, kPattern, kFlags) \
958  TFJ(RegExpInternalMatch, 2, kReceiver, kRegExp, kString) \
959  CPP(RegExpInputGetter) \
960  CPP(RegExpInputSetter) \
961  CPP(RegExpLastMatchGetter) \
962  CPP(RegExpLastParenGetter) \
963  CPP(RegExpLeftContextGetter) \
964  /* ES #sec-regexp.prototype.compile */ \
965  TFJ(RegExpPrototypeCompile, 2, kReceiver, kPattern, kFlags) \
966  /* ES #sec-regexp.prototype.exec */ \
967  TFJ(RegExpPrototypeExec, 1, kReceiver, kString) \
968  /* ES #sec-get-regexp.prototype.dotAll */ \
969  TFJ(RegExpPrototypeDotAllGetter, 0, kReceiver) \
970  /* ES #sec-get-regexp.prototype.flags */ \
971  TFJ(RegExpPrototypeFlagsGetter, 0, kReceiver) \
972  /* ES #sec-get-regexp.prototype.global */ \
973  TFJ(RegExpPrototypeGlobalGetter, 0, kReceiver) \
974  /* ES #sec-get-regexp.prototype.ignorecase */ \
975  TFJ(RegExpPrototypeIgnoreCaseGetter, 0, kReceiver) \
976  /* ES #sec-regexp.prototype-@@match */ \
977  TFJ(RegExpPrototypeMatch, 1, kReceiver, kString) \
978  /* https://tc39.github.io/proposal-string-matchall/ */ \
979  TFJ(RegExpPrototypeMatchAll, 1, kReceiver, kString) \
980  /* ES #sec-get-regexp.prototype.multiline */ \
981  TFJ(RegExpPrototypeMultilineGetter, 0, kReceiver) \
982  /* ES #sec-regexp.prototype-@@search */ \
983  TFJ(RegExpPrototypeSearch, 1, kReceiver, kString) \
984  /* ES #sec-get-regexp.prototype.source */ \
985  TFJ(RegExpPrototypeSourceGetter, 0, kReceiver) \
986  /* ES #sec-get-regexp.prototype.sticky */ \
987  TFJ(RegExpPrototypeStickyGetter, 0, kReceiver) \
988  /* ES #sec-regexp.prototype.test */ \
989  TFJ(RegExpPrototypeTest, 1, kReceiver, kString) \
990  TFS(RegExpPrototypeTestFast, kReceiver, kString) \
991  CPP(RegExpPrototypeToString) \
992  /* ES #sec-get-regexp.prototype.unicode */ \
993  TFJ(RegExpPrototypeUnicodeGetter, 0, kReceiver) \
994  CPP(RegExpRightContextGetter) \
995  \
996  /* ES #sec-regexp.prototype-@@replace */ \
997  TFJ(RegExpPrototypeReplace, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
998  /* ES #sec-regexp.prototype-@@split */ \
999  TFJ(RegExpPrototypeSplit, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1000  /* RegExp helpers */ \
1001  TFS(RegExpExecAtom, kRegExp, kString, kLastIndex, kMatchInfo) \
1002  TFS(RegExpExecInternal, kRegExp, kString, kLastIndex, kMatchInfo) \
1003  TFS(RegExpMatchFast, kReceiver, kPattern) \
1004  TFS(RegExpPrototypeExecSlow, kReceiver, kString) \
1005  TFS(RegExpReplace, kRegExp, kString, kReplaceValue) \
1006  TFS(RegExpSearchFast, kReceiver, kPattern) \
1007  TFS(RegExpSplit, kRegExp, kString, kLimit) \
1008  \
1009  /* RegExp String Iterator */ \
1010  /* https://tc39.github.io/proposal-string-matchall/ */ \
1011  TFJ(RegExpStringIteratorPrototypeNext, 0, kReceiver) \
1012  \
1013  /* Set */ \
1014  TFJ(SetConstructor, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1015  TFJ(SetPrototypeHas, 1, kReceiver, kKey) \
1016  TFJ(SetPrototypeAdd, 1, kReceiver, kKey) \
1017  TFJ(SetPrototypeDelete, 1, kReceiver, kKey) \
1018  CPP(SetPrototypeClear) \
1019  /* ES #sec-set.prototype.entries */ \
1020  TFJ(SetPrototypeEntries, 0, kReceiver) \
1021  /* ES #sec-get-set.prototype.size */ \
1022  TFJ(SetPrototypeGetSize, 0, kReceiver) \
1023  /* ES #sec-set.prototype.foreach */ \
1024  TFJ(SetPrototypeForEach, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1025  /* ES #sec-set.prototype.values */ \
1026  TFJ(SetPrototypeValues, 0, kReceiver) \
1027  /* ES #sec-%setiteratorprototype%.next */ \
1028  TFJ(SetIteratorPrototypeNext, 0, kReceiver) \
1029  TFS(SetOrSetIteratorToList, kSource) \
1030  \
1031  /* SharedArrayBuffer */ \
1032  CPP(SharedArrayBufferPrototypeGetByteLength) \
1033  CPP(SharedArrayBufferPrototypeSlice) \
1034  TFJ(AtomicsLoad, 2, kReceiver, kArray, kIndex) \
1035  TFJ(AtomicsStore, 3, kReceiver, kArray, kIndex, kValue) \
1036  TFJ(AtomicsExchange, 3, kReceiver, kArray, kIndex, kValue) \
1037  TFJ(AtomicsCompareExchange, 4, kReceiver, kArray, kIndex, kOldValue, \
1038  kNewValue) \
1039  TFJ(AtomicsAdd, 3, kReceiver, kArray, kIndex, kValue) \
1040  TFJ(AtomicsSub, 3, kReceiver, kArray, kIndex, kValue) \
1041  TFJ(AtomicsAnd, 3, kReceiver, kArray, kIndex, kValue) \
1042  TFJ(AtomicsOr, 3, kReceiver, kArray, kIndex, kValue) \
1043  TFJ(AtomicsXor, 3, kReceiver, kArray, kIndex, kValue) \
1044  CPP(AtomicsNotify) \
1045  CPP(AtomicsIsLockFree) \
1046  CPP(AtomicsWait) \
1047  CPP(AtomicsWake) \
1048  \
1049  /* String */ \
1050  /* ES #sec-string-constructor */ \
1051  TFJ(StringConstructor, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1052  /* ES #sec-string.fromcodepoint */ \
1053  CPP(StringFromCodePoint) \
1054  /* ES6 #sec-string.fromcharcode */ \
1055  TFJ(StringFromCharCode, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1056  /* ES6 #sec-string.prototype.anchor */ \
1057  TFJ(StringPrototypeAnchor, 1, kReceiver, kValue) \
1058  /* ES6 #sec-string.prototype.big */ \
1059  TFJ(StringPrototypeBig, 0, kReceiver) \
1060  /* ES6 #sec-string.prototype.blink */ \
1061  TFJ(StringPrototypeBlink, 0, kReceiver) \
1062  /* ES6 #sec-string.prototype.bold */ \
1063  TFJ(StringPrototypeBold, 0, kReceiver) \
1064  /* ES6 #sec-string.prototype.charat */ \
1065  TFJ(StringPrototypeCharAt, 1, kReceiver, kPosition) \
1066  /* ES6 #sec-string.prototype.charcodeat */ \
1067  TFJ(StringPrototypeCharCodeAt, 1, kReceiver, kPosition) \
1068  /* ES6 #sec-string.prototype.codepointat */ \
1069  TFJ(StringPrototypeCodePointAt, 1, kReceiver, kPosition) \
1070  /* ES6 #sec-string.prototype.concat */ \
1071  TFJ(StringPrototypeConcat, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1072  /* ES6 #sec-string.prototype.endswith */ \
1073  CPP(StringPrototypeEndsWith) \
1074  /* ES6 #sec-string.prototype.fontcolor */ \
1075  TFJ(StringPrototypeFontcolor, 1, kReceiver, kValue) \
1076  /* ES6 #sec-string.prototype.fontsize */ \
1077  TFJ(StringPrototypeFontsize, 1, kReceiver, kValue) \
1078  /* ES6 #sec-string.prototype.fixed */ \
1079  TFJ(StringPrototypeFixed, 0, kReceiver) \
1080  /* ES6 #sec-string.prototype.includes */ \
1081  TFJ(StringPrototypeIncludes, \
1082  SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1083  /* ES6 #sec-string.prototype.indexof */ \
1084  TFJ(StringPrototypeIndexOf, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1085  /* ES6 #sec-string.prototype.italics */ \
1086  TFJ(StringPrototypeItalics, 0, kReceiver) \
1087  /* ES6 #sec-string.prototype.lastindexof */ \
1088  CPP(StringPrototypeLastIndexOf) \
1089  /* ES6 #sec-string.prototype.link */ \
1090  TFJ(StringPrototypeLink, 1, kReceiver, kValue) \
1091  /* ES6 #sec-string.prototype.match */ \
1092  TFJ(StringPrototypeMatch, 1, kReceiver, kRegexp) \
1093  /* ES #sec-string.prototype.matchAll */ \
1094  TFJ(StringPrototypeMatchAll, 1, kReceiver, kRegexp) \
1095  /* ES6 #sec-string.prototype.localecompare */ \
1096  CPP(StringPrototypeLocaleCompare) \
1097  /* ES6 #sec-string.prototype.padEnd */ \
1098  TFJ(StringPrototypePadEnd, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1099  /* ES6 #sec-string.prototype.padStart */ \
1100  TFJ(StringPrototypePadStart, \
1101  SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1102  /* ES6 #sec-string.prototype.repeat */ \
1103  TFJ(StringPrototypeRepeat, 1, kReceiver, kCount) \
1104  /* ES6 #sec-string.prototype.replace */ \
1105  TFJ(StringPrototypeReplace, 2, kReceiver, kSearch, kReplace) \
1106  /* ES6 #sec-string.prototype.search */ \
1107  TFJ(StringPrototypeSearch, 1, kReceiver, kRegexp) \
1108  /* ES6 #sec-string.prototype.slice */ \
1109  TFJ(StringPrototypeSlice, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1110  /* ES6 #sec-string.prototype.small */ \
1111  TFJ(StringPrototypeSmall, 0, kReceiver) \
1112  /* ES6 #sec-string.prototype.split */ \
1113  TFJ(StringPrototypeSplit, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1114  /* ES6 #sec-string.prototype.strike */ \
1115  TFJ(StringPrototypeStrike, 0, kReceiver) \
1116  /* ES6 #sec-string.prototype.sub */ \
1117  TFJ(StringPrototypeSub, 0, kReceiver) \
1118  /* ES6 #sec-string.prototype.substr */ \
1119  TFJ(StringPrototypeSubstr, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1120  /* ES6 #sec-string.prototype.substring */ \
1121  TFJ(StringPrototypeSubstring, \
1122  SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1123  /* ES6 #sec-string.prototype.sup */ \
1124  TFJ(StringPrototypeSup, 0, kReceiver) \
1125  /* ES6 #sec-string.prototype.startswith */ \
1126  CPP(StringPrototypeStartsWith) \
1127  /* ES6 #sec-string.prototype.tostring */ \
1128  TFJ(StringPrototypeToString, 0, kReceiver) \
1129  TFJ(StringPrototypeTrim, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1130  TFJ(StringPrototypeTrimEnd, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1131  TFJ(StringPrototypeTrimStart, \
1132  SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1133  /* ES6 #sec-string.prototype.valueof */ \
1134  TFJ(StringPrototypeValueOf, 0, kReceiver) \
1135  /* ES6 #sec-string.raw */ \
1136  CPP(StringRaw) \
1137  /* ES6 #sec-string.prototype-@@iterator */ \
1138  TFJ(StringPrototypeIterator, 0, kReceiver) \
1139  \
1140  /* StringIterator */ \
1141  /* ES6 #sec-%stringiteratorprototype%.next */ \
1142  TFJ(StringIteratorPrototypeNext, 0, kReceiver) \
1143  TFS(StringToList, kSource) \
1144  \
1145  /* Symbol */ \
1146  /* ES #sec-symbol-constructor */ \
1147  CPP(SymbolConstructor) \
1148  /* ES6 #sec-symbol.for */ \
1149  CPP(SymbolFor) \
1150  /* ES6 #sec-symbol.keyfor */ \
1151  CPP(SymbolKeyFor) \
1152  /* ES #sec-symbol.prototype.description */ \
1153  TFJ(SymbolPrototypeDescriptionGetter, 0, kReceiver) \
1154  /* ES6 #sec-symbol.prototype-@@toprimitive */ \
1155  TFJ(SymbolPrototypeToPrimitive, 1, kReceiver, kHint) \
1156  /* ES6 #sec-symbol.prototype.tostring */ \
1157  TFJ(SymbolPrototypeToString, 0, kReceiver) \
1158  /* ES6 #sec-symbol.prototype.valueof */ \
1159  TFJ(SymbolPrototypeValueOf, 0, kReceiver) \
1160  \
1161  /* TypedArray */ \
1162  TFS(TypedArrayInitialize, kHolder, kLength, kElementSize, kInitialize, \
1163  kBufferConstructor) \
1164  TFS(TypedArrayInitializeWithBuffer, kHolder, kLength, kBuffer, kElementSize, \
1165  kByteOffset) \
1166  /* ES #sec-typedarray-constructors */ \
1167  TFS(CreateTypedArray, kTarget, kNewTarget, kArg1, kArg2, kArg3) \
1168  TFJ(TypedArrayBaseConstructor, 0, kReceiver) \
1169  TFJ(GenericConstructorLazyDeoptContinuation, 1, kReceiver, kResult) \
1170  TFJ(TypedArrayConstructor, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1171  CPP(TypedArrayPrototypeBuffer) \
1172  /* ES6 #sec-get-%typedarray%.prototype.bytelength */ \
1173  TFJ(TypedArrayPrototypeByteLength, 0, kReceiver) \
1174  /* ES6 #sec-get-%typedarray%.prototype.byteoffset */ \
1175  TFJ(TypedArrayPrototypeByteOffset, 0, kReceiver) \
1176  /* ES6 #sec-get-%typedarray%.prototype.length */ \
1177  TFJ(TypedArrayPrototypeLength, 0, kReceiver) \
1178  /* ES6 #sec-%typedarray%.prototype.entries */ \
1179  TFJ(TypedArrayPrototypeEntries, 0, kReceiver) \
1180  /* ES6 #sec-%typedarray%.prototype.keys */ \
1181  TFJ(TypedArrayPrototypeKeys, 0, kReceiver) \
1182  /* ES6 #sec-%typedarray%.prototype.values */ \
1183  TFJ(TypedArrayPrototypeValues, 0, kReceiver) \
1184  /* ES6 #sec-%typedarray%.prototype.copywithin */ \
1185  CPP(TypedArrayPrototypeCopyWithin) \
1186  /* ES6 #sec-%typedarray%.prototype.fill */ \
1187  CPP(TypedArrayPrototypeFill) \
1188  /* ES6 #sec-%typedarray%.prototype.filter */ \
1189  TFJ(TypedArrayPrototypeFilter, \
1190  SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1191  /* ES6 %TypedArray%.prototype.find */ \
1192  TFJ(TypedArrayPrototypeFind, \
1193  SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1194  /* ES6 %TypedArray%.prototype.findIndex */ \
1195  TFJ(TypedArrayPrototypeFindIndex, \
1196  SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1197  /* ES7 #sec-%typedarray%.prototype.includes */ \
1198  CPP(TypedArrayPrototypeIncludes) \
1199  /* ES6 #sec-%typedarray%.prototype.indexof */ \
1200  CPP(TypedArrayPrototypeIndexOf) \
1201  /* ES6 #sec-%typedarray%.prototype.lastindexof */ \
1202  CPP(TypedArrayPrototypeLastIndexOf) \
1203  /* ES6 #sec-%typedarray%.prototype.reverse */ \
1204  CPP(TypedArrayPrototypeReverse) \
1205  /* ES6 %TypedArray%.prototype.set */ \
1206  TFJ(TypedArrayPrototypeSet, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1207  /* ES6 #sec-%typedarray%.prototype.slice */ \
1208  TFJ(TypedArrayPrototypeSlice, \
1209  SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1210  /* ES6 %TypedArray%.prototype.subarray */ \
1211  TFJ(TypedArrayPrototypeSubArray, \
1212  SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1213  /* ES6 #sec-get-%typedarray%.prototype-@@tostringtag */ \
1214  TFJ(TypedArrayPrototypeToStringTag, 0, kReceiver) \
1215  /* ES6 %TypedArray%.prototype.every */ \
1216  TFJ(TypedArrayPrototypeEvery, \
1217  SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1218  /* ES6 %TypedArray%.prototype.some */ \
1219  TFJ(TypedArrayPrototypeSome, \
1220  SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1221  /* ES6 %TypedArray%.prototype.reduce */ \
1222  TFJ(TypedArrayPrototypeReduce, \
1223  SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1224  /* ES6 %TypedArray%.prototype.reduceRight */ \
1225  TFJ(TypedArrayPrototypeReduceRight, \
1226  SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1227  /* ES6 %TypedArray%.prototype.map */ \
1228  TFJ(TypedArrayPrototypeMap, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1229  /* ES6 %TypedArray%.prototype.forEach */ \
1230  TFJ(TypedArrayPrototypeForEach, \
1231  SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1232  /* ES6 %TypedArray%.of */ \
1233  TFJ(TypedArrayOf, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1234  /* ES6 %TypedArray%.from */ \
1235  TFJ(TypedArrayFrom, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1236  \
1237  /* Wasm */ \
1238  ASM(WasmCompileLazy) \
1239  TFC(WasmAllocateHeapNumber, AllocateHeapNumber, 1) \
1240  TFC(WasmAtomicWake, WasmAtomicWake, 1) \
1241  TFC(WasmI32AtomicWait, WasmI32AtomicWait, 1) \
1242  TFC(WasmCallJavaScript, CallTrampoline, 1) \
1243  TFC(WasmMemoryGrow, WasmMemoryGrow, 1) \
1244  TFC(WasmRecordWrite, RecordWrite, 1) \
1245  TFC(WasmStackGuard, NoContext, 1) \
1246  TFC(WasmToNumber, TypeConversion, 1) \
1247  TFC(WasmThrow, WasmThrow, 1) \
1248  TFS(ThrowWasmTrapUnreachable) \
1249  TFS(ThrowWasmTrapMemOutOfBounds) \
1250  TFS(ThrowWasmTrapUnalignedAccess) \
1251  TFS(ThrowWasmTrapDivByZero) \
1252  TFS(ThrowWasmTrapDivUnrepresentable) \
1253  TFS(ThrowWasmTrapRemByZero) \
1254  TFS(ThrowWasmTrapFloatUnrepresentable) \
1255  TFS(ThrowWasmTrapFuncInvalid) \
1256  TFS(ThrowWasmTrapFuncSigMismatch) \
1257  \
1258  /* WeakMap */ \
1259  TFJ(WeakMapConstructor, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1260  TFS(WeakMapLookupHashIndex, kTable, kKey) \
1261  TFJ(WeakMapGet, 1, kReceiver, kKey) \
1262  TFJ(WeakMapHas, 1, kReceiver, kKey) \
1263  TFJ(WeakMapPrototypeSet, 2, kReceiver, kKey, kValue) \
1264  TFJ(WeakMapPrototypeDelete, 1, kReceiver, kKey) \
1265  \
1266  /* WeakSet */ \
1267  TFJ(WeakSetConstructor, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1268  TFJ(WeakSetHas, 1, kReceiver, kKey) \
1269  TFJ(WeakSetPrototypeAdd, 1, kReceiver, kValue) \
1270  TFJ(WeakSetPrototypeDelete, 1, kReceiver, kValue) \
1271  \
1272  /* WeakSet / WeakMap Helpers */ \
1273  TFS(WeakCollectionDelete, kCollection, kKey) \
1274  TFS(WeakCollectionSet, kCollection, kKey, kValue) \
1275  \
1276  /* AsyncGenerator */ \
1277  \
1278  TFS(AsyncGeneratorResolve, kGenerator, kValue, kDone) \
1279  TFS(AsyncGeneratorReject, kGenerator, kValue) \
1280  TFS(AsyncGeneratorYield, kGenerator, kValue, kIsCaught) \
1281  TFS(AsyncGeneratorReturn, kGenerator, kValue, kIsCaught) \
1282  TFS(AsyncGeneratorResumeNext, kGenerator) \
1283  \
1284  /* AsyncGeneratorFunction( p1, p2, ... pn, body ) */ \
1285  /* proposal-async-iteration/#sec-asyncgeneratorfunction-constructor */ \
1286  CPP(AsyncGeneratorFunctionConstructor) \
1287  /* AsyncGenerator.prototype.next ( value ) */ \
1288  /* proposal-async-iteration/#sec-asyncgenerator-prototype-next */ \
1289  TFJ(AsyncGeneratorPrototypeNext, \
1290  SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1291  /* AsyncGenerator.prototype.return ( value ) */ \
1292  /* proposal-async-iteration/#sec-asyncgenerator-prototype-return */ \
1293  TFJ(AsyncGeneratorPrototypeReturn, \
1294  SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1295  /* AsyncGenerator.prototype.throw ( exception ) */ \
1296  /* proposal-async-iteration/#sec-asyncgenerator-prototype-throw */ \
1297  TFJ(AsyncGeneratorPrototypeThrow, \
1298  SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1299  \
1300  /* Await (proposal-async-iteration/#await), with resume behaviour */ \
1301  /* specific to Async Generators. Internal / Not exposed to JS code. */ \
1302  TFS(AsyncGeneratorAwaitCaught, kAsyncGeneratorObject, kValue) \
1303  TFS(AsyncGeneratorAwaitUncaught, kAsyncGeneratorObject, kValue) \
1304  TFJ(AsyncGeneratorAwaitResolveClosure, 1, kReceiver, kValue) \
1305  TFJ(AsyncGeneratorAwaitRejectClosure, 1, kReceiver, kValue) \
1306  TFJ(AsyncGeneratorYieldResolveClosure, 1, kReceiver, kValue) \
1307  TFJ(AsyncGeneratorReturnClosedResolveClosure, 1, kReceiver, kValue) \
1308  TFJ(AsyncGeneratorReturnClosedRejectClosure, 1, kReceiver, kValue) \
1309  TFJ(AsyncGeneratorReturnResolveClosure, 1, kReceiver, kValue) \
1310  \
1311  /* Async-from-Sync Iterator */ \
1312  \
1313  /* %AsyncFromSyncIteratorPrototype% */ \
1314  /* See tc39.github.io/proposal-async-iteration/ */ \
1315  /* #sec-%asyncfromsynciteratorprototype%-object) */ \
1316  TFJ(AsyncFromSyncIteratorPrototypeNext, 1, kReceiver, kValue) \
1317  /* #sec-%asyncfromsynciteratorprototype%.throw */ \
1318  TFJ(AsyncFromSyncIteratorPrototypeThrow, 1, kReceiver, kReason) \
1319  /* #sec-%asyncfromsynciteratorprototype%.return */ \
1320  TFJ(AsyncFromSyncIteratorPrototypeReturn, 1, kReceiver, kValue) \
1321  /* #sec-async-iterator-value-unwrap-functions */ \
1322  TFJ(AsyncIteratorValueUnwrap, 1, kReceiver, kValue) \
1323  \
1324  /* CEntry */ \
1325  ASM(CEntry_Return1_DontSaveFPRegs_ArgvOnStack_NoBuiltinExit) \
1326  ASM(CEntry_Return1_DontSaveFPRegs_ArgvOnStack_BuiltinExit) \
1327  ASM(CEntry_Return1_DontSaveFPRegs_ArgvInRegister_NoBuiltinExit) \
1328  ASM(CEntry_Return1_SaveFPRegs_ArgvOnStack_NoBuiltinExit) \
1329  ASM(CEntry_Return1_SaveFPRegs_ArgvOnStack_BuiltinExit) \
1330  ASM(CEntry_Return2_DontSaveFPRegs_ArgvOnStack_NoBuiltinExit) \
1331  ASM(CEntry_Return2_DontSaveFPRegs_ArgvOnStack_BuiltinExit) \
1332  ASM(CEntry_Return2_DontSaveFPRegs_ArgvInRegister_NoBuiltinExit) \
1333  ASM(CEntry_Return2_SaveFPRegs_ArgvOnStack_NoBuiltinExit) \
1334  ASM(CEntry_Return2_SaveFPRegs_ArgvOnStack_BuiltinExit) \
1335  \
1336  /* String helpers */ \
1337  TFS(StringAdd_CheckNone, kLeft, kRight) \
1338  TFS(StringAdd_ConvertLeft, kLeft, kRight) \
1339  TFS(StringAdd_ConvertRight, kLeft, kRight) \
1340  TFS(SubString, kString, kFrom, kTo) \
1341  \
1342  /* Miscellaneous */ \
1343  ASM(CallApiCallback_Argc0) \
1344  ASM(CallApiCallback_Argc1) \
1345  ASM(CallApiGetter) \
1346  ASM(DoubleToI) \
1347  TFC(GetProperty, GetProperty, 1) \
1348  TFS(SetProperty, kReceiver, kKey, kValue) \
1349  TFS(SetPropertyInLiteral, kReceiver, kKey, kValue) \
1350  ASM(MathPowInternal) \
1351  \
1352  /* Trace */ \
1353  CPP(IsTraceCategoryEnabled) \
1354  CPP(Trace) \
1355  \
1356  /* Weak refs */ \
1357  CPP(WeakCellClear) \
1358  CPP(WeakCellHoldingsGetter) \
1359  CPP(WeakFactoryCleanupIteratorNext) \
1360  CPP(WeakFactoryCleanupSome) \
1361  CPP(WeakFactoryConstructor) \
1362  CPP(WeakFactoryMakeCell) \
1363  CPP(WeakFactoryMakeRef) \
1364  CPP(WeakRefDeref)
1365 
1366 #ifdef V8_INTL_SUPPORT
1367 #define BUILTIN_LIST_INTL(CPP, TFJ, TFS) \
1368  /* ecma402 #sec-intl.collator */ \
1369  CPP(CollatorConstructor) \
1370  /* ecma 402 #sec-collator-compare-functions*/ \
1371  CPP(CollatorInternalCompare) \
1372  /* ecma402 #sec-intl.collator.prototype.compare */ \
1373  CPP(CollatorPrototypeCompare) \
1374  /* ecma402 #sec-intl.collator.supportedlocalesof */ \
1375  CPP(CollatorSupportedLocalesOf) \
1376  CPP(CollatorPrototypeResolvedOptions) \
1377  /* ecma402 #sup-date.prototype.tolocaledatestring */ \
1378  CPP(DatePrototypeToLocaleDateString) \
1379  /* ecma402 #sup-date.prototype.tolocalestring */ \
1380  CPP(DatePrototypeToLocaleString) \
1381  /* ecma402 #sup-date.prototype.tolocaletimestring */ \
1382  CPP(DatePrototypeToLocaleTimeString) \
1383  /* ecma402 #sec-intl.datetimeformat */ \
1384  CPP(DateTimeFormatConstructor) \
1385  /* ecma402 #sec-datetime-format-functions */ \
1386  CPP(DateTimeFormatInternalFormat) \
1387  /* ecma402 #sec-intl.datetimeformat.prototype.format */ \
1388  CPP(DateTimeFormatPrototypeFormat) \
1389  /* ecma402 #sec-intl.datetimeformat.prototype.formattoparts */ \
1390  CPP(DateTimeFormatPrototypeFormatToParts) \
1391  /* ecma402 #sec-intl.datetimeformat.prototype.resolvedoptions */ \
1392  CPP(DateTimeFormatPrototypeResolvedOptions) \
1393  /* ecma402 #sec-intl.datetimeformat.supportedlocalesof */ \
1394  CPP(DateTimeFormatSupportedLocalesOf) \
1395  /* ecma402 #sec-intl.getcanonicallocales */ \
1396  CPP(IntlGetCanonicalLocales) \
1397  /* ecma402 #sec-intl-listformat-constructor */ \
1398  CPP(ListFormatConstructor) \
1399  /* ecma402 #sec-intl-list-format.prototype.format */ \
1400  TFJ(ListFormatPrototypeFormat, \
1401  SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1402  /* ecma402 #sec-intl-list-format.prototype.formattoparts */ \
1403  TFJ(ListFormatPrototypeFormatToParts, \
1404  SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1405  /* ecma402 #sec-intl.listformat.prototype.resolvedoptions */ \
1406  CPP(ListFormatPrototypeResolvedOptions) \
1407  /* ecma402 #sec-intl.ListFormat.supportedlocalesof */ \
1408  CPP(ListFormatSupportedLocalesOf) \
1409  /* ecma402 #sec-intl-locale-constructor */ \
1410  CPP(LocaleConstructor) \
1411  CPP(LocalePrototypeBaseName) \
1412  CPP(LocalePrototypeCalendar) \
1413  CPP(LocalePrototypeCaseFirst) \
1414  CPP(LocalePrototypeCollation) \
1415  CPP(LocalePrototypeHourCycle) \
1416  CPP(LocalePrototypeLanguage) \
1417  /* ecma402 #sec-Intl.Locale.prototype.maximize */ \
1418  CPP(LocalePrototypeMaximize) \
1419  /* ecma402 #sec-Intl.Locale.prototype.minimize */ \
1420  CPP(LocalePrototypeMinimize) \
1421  CPP(LocalePrototypeNumeric) \
1422  CPP(LocalePrototypeNumberingSystem) \
1423  CPP(LocalePrototypeRegion) \
1424  CPP(LocalePrototypeScript) \
1425  CPP(LocalePrototypeToString) \
1426  /* ecma402 #sec-intl.numberformat */ \
1427  CPP(NumberFormatConstructor) \
1428  /* ecma402 #sec-number-format-functions */ \
1429  CPP(NumberFormatInternalFormatNumber) \
1430  /* ecma402 #sec-intl.numberformat.prototype.format */ \
1431  CPP(NumberFormatPrototypeFormatNumber) \
1432  /* ecma402 #sec-intl.numberformat.prototype.formattoparts */ \
1433  CPP(NumberFormatPrototypeFormatToParts) \
1434  /* ecma402 #sec-intl.numberformat.prototype.resolvedoptions */ \
1435  CPP(NumberFormatPrototypeResolvedOptions) \
1436  /* ecma402 #sec-intl.numberformat.supportedlocalesof */ \
1437  CPP(NumberFormatSupportedLocalesOf) \
1438  /* ecma402 #sec-intl.pluralrules */ \
1439  CPP(PluralRulesConstructor) \
1440  CPP(PluralRulesPrototypeResolvedOptions) \
1441  /* ecma402 #sec-intl.pluralrules.prototype.select */ \
1442  CPP(PluralRulesPrototypeSelect) \
1443  /* ecma402 #sec-intl.pluralrules.supportedlocalesof */ \
1444  CPP(PluralRulesSupportedLocalesOf) \
1445  /* ecma402 #sec-intl.RelativeTimeFormat.constructor */ \
1446  CPP(RelativeTimeFormatConstructor) \
1447  /* ecma402 #sec-intl.RelativeTimeFormat.prototype.format */ \
1448  CPP(RelativeTimeFormatPrototypeFormat) \
1449  /* ecma402 #sec-intl.RelativeTimeFormat.prototype.formatToParts */ \
1450  CPP(RelativeTimeFormatPrototypeFormatToParts) \
1451  /* ecma402 #sec-intl.RelativeTimeFormat.prototype.resolvedOptions */ \
1452  CPP(RelativeTimeFormatPrototypeResolvedOptions) \
1453  /* ecma402 #sec-intl.RelativeTimeFormat.supportedlocalesof */ \
1454  CPP(RelativeTimeFormatSupportedLocalesOf) \
1455  /* ecma402 #sec-Intl.Segmenter */ \
1456  CPP(SegmenterConstructor) \
1457  /* ecma402 #sec-Intl.Segmenter.prototype.resolvedOptions */ \
1458  CPP(SegmenterPrototypeResolvedOptions) \
1459  /* ecma402 #sec-Intl.Segmenter.prototype.segment */ \
1460  CPP(SegmenterPrototypeSegment) \
1461  /* ecma402 #sec-Intl.Segmenter.supportedLocalesOf */ \
1462  CPP(SegmenterSupportedLocalesOf) \
1463  /* ecma402 #sec-segment-iterator-prototype-breakType */ \
1464  CPP(SegmentIteratorPrototypeBreakType) \
1465  /* ecma402 #sec-segment-iterator-prototype-following */ \
1466  CPP(SegmentIteratorPrototypeFollowing) \
1467  /* ecma402 #sec-segment-iterator-prototype-preceding */ \
1468  CPP(SegmentIteratorPrototypePreceding) \
1469  /* ecma402 #sec-segment-iterator-prototype-position */ \
1470  CPP(SegmentIteratorPrototypePosition) \
1471  /* ecma402 #sec-segment-iterator-prototype-next */ \
1472  CPP(SegmentIteratorPrototypeNext) \
1473  /* ES #sec-string.prototype.normalize */ \
1474  CPP(StringPrototypeNormalizeIntl) \
1475  /* ecma402 #sup-string.prototype.tolocalelowercase */ \
1476  CPP(StringPrototypeToLocaleLowerCase) \
1477  /* ecma402 #sup-string.prototype.tolocaleuppercase */ \
1478  CPP(StringPrototypeToLocaleUpperCase) \
1479  /* ES #sec-string.prototype.tolowercase */ \
1480  TFJ(StringPrototypeToLowerCaseIntl, 0, kReceiver) \
1481  /* ES #sec-string.prototype.touppercase */ \
1482  CPP(StringPrototypeToUpperCaseIntl) \
1483  TFS(StringToLowerCaseIntl, kString) \
1484  CPP(V8BreakIteratorConstructor) \
1485  CPP(V8BreakIteratorInternalAdoptText) \
1486  CPP(V8BreakIteratorInternalBreakType) \
1487  CPP(V8BreakIteratorInternalCurrent) \
1488  CPP(V8BreakIteratorInternalFirst) \
1489  CPP(V8BreakIteratorInternalNext) \
1490  CPP(V8BreakIteratorPrototypeAdoptText) \
1491  CPP(V8BreakIteratorPrototypeBreakType) \
1492  CPP(V8BreakIteratorPrototypeCurrent) \
1493  CPP(V8BreakIteratorPrototypeFirst) \
1494  CPP(V8BreakIteratorPrototypeNext) \
1495  CPP(V8BreakIteratorPrototypeResolvedOptions) \
1496  CPP(V8BreakIteratorSupportedLocalesOf)
1497 #else
1498 #define BUILTIN_LIST_INTL(CPP, TFJ, TFS) \
1499  /* no-op fallback version */ \
1500  CPP(StringPrototypeNormalize) \
1501  /* same as toLowercase; fallback version */ \
1502  CPP(StringPrototypeToLocaleLowerCase) \
1503  /* same as toUppercase; fallback version */ \
1504  CPP(StringPrototypeToLocaleUpperCase) \
1505  /* (obsolete) Unibrow version */ \
1506  CPP(StringPrototypeToLowerCase) \
1507  /* (obsolete) Unibrow version */ \
1508  CPP(StringPrototypeToUpperCase)
1509 #endif // V8_INTL_SUPPORT
1510 
1511 #define BUILTIN_LIST(CPP, API, TFJ, TFC, TFS, TFH, BCH, ASM) \
1512  BUILTIN_LIST_BASE(CPP, API, TFJ, TFC, TFS, TFH, ASM) \
1513  BUILTIN_LIST_FROM_DSL(CPP, API, TFJ, TFC, TFS, TFH, ASM) \
1514  BUILTIN_LIST_INTL(CPP, TFJ, TFS) \
1515  BUILTIN_LIST_BYTECODE_HANDLERS(BCH)
1516 
1517 // The exception thrown in the following builtins are caught
1518 // internally and result in a promise rejection.
1519 #define BUILTIN_PROMISE_REJECTION_PREDICTION_LIST(V) \
1520  V(AsyncFromSyncIteratorPrototypeNext) \
1521  V(AsyncFromSyncIteratorPrototypeReturn) \
1522  V(AsyncFromSyncIteratorPrototypeThrow) \
1523  V(AsyncFunctionAwaitCaught) \
1524  V(AsyncFunctionAwaitUncaught) \
1525  V(AsyncGeneratorResolve) \
1526  V(AsyncGeneratorAwaitCaught) \
1527  V(AsyncGeneratorAwaitUncaught) \
1528  V(PromiseAll) \
1529  V(PromiseConstructor) \
1530  V(PromiseConstructorLazyDeoptContinuation) \
1531  V(PromiseFulfillReactionJob) \
1532  V(PromiseRace) \
1533  V(ResolvePromise)
1534 
1535 // Convenience macro listing all wasm runtime stubs. Note that the first few
1536 // elements of the list coincide with {compiler::TrapId}, order matters.
1537 #define WASM_RUNTIME_STUB_LIST(V, VTRAP) \
1538  FOREACH_WASM_TRAPREASON(VTRAP) \
1539  V(WasmAllocateHeapNumber) \
1540  V(WasmAtomicWake) \
1541  V(WasmI32AtomicWait) \
1542  V(WasmCallJavaScript) \
1543  V(WasmMemoryGrow) \
1544  V(WasmRecordWrite) \
1545  V(WasmStackGuard) \
1546  V(WasmToNumber) \
1547  V(WasmThrow) \
1548  V(DoubleToI)
1549 
1550 // The exception thrown in the following builtins are caught internally and will
1551 // not be propagated further or re-thrown
1552 #define BUILTIN_EXCEPTION_CAUGHT_PREDICTION_LIST(V) V(PromiseRejectReactionJob)
1553 
1554 #define IGNORE_BUILTIN(...)
1555 
1556 #define BUILTIN_LIST_C(V) \
1557  BUILTIN_LIST(V, V, IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, \
1558  IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN)
1559 
1560 #define BUILTIN_LIST_A(V) \
1561  BUILTIN_LIST(IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, \
1562  IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, V)
1563 
1564 #define BUILTIN_LIST_TFS(V) \
1565  BUILTIN_LIST(IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, \
1566  V, IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN)
1567 
1568 #define BUILTIN_LIST_TFJ(V) \
1569  BUILTIN_LIST(IGNORE_BUILTIN, IGNORE_BUILTIN, V, IGNORE_BUILTIN, \
1570  IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN)
1571 
1572 #define BUILTIN_LIST_TFC(V) \
1573  BUILTIN_LIST(IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, V, \
1574  IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN)
1575 
1576 } // namespace internal
1577 } // namespace v8
1578 
1579 #endif // V8_BUILTINS_BUILTINS_DEFINITIONS_H_
Definition: libplatform.h:13