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 // Builtins are additionally split into tiers, where the tier determines the
35 // distance of the builtins table from the root register within IsolateData.
36 //
37 //  - Tier 0 (T0) are guaranteed to be close to the root register and can thus
38 //    be accessed efficiently root-relative calls (so not, e.g., calls from
39 //    generated code when short-builtin-calls is on).
40 //  - T1 builtins have no distance guarantees.
41 //
42 // Note, this mechanism works only if the set of T0 builtins is kept as small
43 // as possible. Please, resist the temptation to add your builtin here unless
44 // there's a very good reason.
45 #define BUILTIN_LIST_BASE_TIER0(CPP, TFJ, TFC, TFS, TFH, ASM) \
46   /* Deoptimization entries. */                               \
47   ASM(DeoptimizationEntry_Eager, DeoptimizationEntry)         \
48   ASM(DeoptimizationEntry_Lazy, DeoptimizationEntry)          \
49   /* Replaces "Soft" for ABI compatibility. */                \
50   ASM(DeoptimizationEntry_Unused, DeoptimizationEntry)        \
51                                                               \
52   /* GC write barrier. */                                     \
53   TFC(RecordWriteEmitRememberedSetSaveFP, WriteBarrier)       \
54   TFC(RecordWriteOmitRememberedSetSaveFP, WriteBarrier)       \
55   TFC(RecordWriteEmitRememberedSetIgnoreFP, WriteBarrier)     \
56   TFC(RecordWriteOmitRememberedSetIgnoreFP, WriteBarrier)     \
57   TFC(EphemeronKeyBarrierSaveFP, WriteBarrier)                \
58   TFC(EphemeronKeyBarrierIgnoreFP, WriteBarrier)              \
59                                                               \
60   /* Adaptor for CPP builtins. */                             \
61   TFC(AdaptorWithBuiltinExitFrame, CppBuiltinAdaptor)
62 
63 #define BUILTIN_LIST_BASE_TIER1(CPP, TFJ, TFC, TFS, TFH, ASM)                  \
64   /* TSAN support for stores in generated code. */                             \
65   IF_TSAN(TFC, TSANRelaxedStore8IgnoreFP, TSANStore)                           \
66   IF_TSAN(TFC, TSANRelaxedStore8SaveFP, TSANStore)                             \
67   IF_TSAN(TFC, TSANRelaxedStore16IgnoreFP, TSANStore)                          \
68   IF_TSAN(TFC, TSANRelaxedStore16SaveFP, TSANStore)                            \
69   IF_TSAN(TFC, TSANRelaxedStore32IgnoreFP, TSANStore)                          \
70   IF_TSAN(TFC, TSANRelaxedStore32SaveFP, TSANStore)                            \
71   IF_TSAN(TFC, TSANRelaxedStore64IgnoreFP, TSANStore)                          \
72   IF_TSAN(TFC, TSANRelaxedStore64SaveFP, TSANStore)                            \
73   IF_TSAN(TFC, TSANSeqCstStore8IgnoreFP, TSANStore)                            \
74   IF_TSAN(TFC, TSANSeqCstStore8SaveFP, TSANStore)                              \
75   IF_TSAN(TFC, TSANSeqCstStore16IgnoreFP, TSANStore)                           \
76   IF_TSAN(TFC, TSANSeqCstStore16SaveFP, TSANStore)                             \
77   IF_TSAN(TFC, TSANSeqCstStore32IgnoreFP, TSANStore)                           \
78   IF_TSAN(TFC, TSANSeqCstStore32SaveFP, TSANStore)                             \
79   IF_TSAN(TFC, TSANSeqCstStore64IgnoreFP, TSANStore)                           \
80   IF_TSAN(TFC, TSANSeqCstStore64SaveFP, TSANStore)                             \
81                                                                                \
82   /* TSAN support for loads in generated code. */                              \
83   IF_TSAN(TFC, TSANRelaxedLoad32IgnoreFP, TSANLoad)                            \
84   IF_TSAN(TFC, TSANRelaxedLoad32SaveFP, TSANLoad)                              \
85   IF_TSAN(TFC, TSANRelaxedLoad64IgnoreFP, TSANLoad)                            \
86   IF_TSAN(TFC, TSANRelaxedLoad64SaveFP, TSANLoad)                              \
87                                                                                \
88   /* Calls */                                                                  \
89   /* ES6 section 9.2.1 [[Call]] ( thisArgument, argumentsList) */              \
90   ASM(CallFunction_ReceiverIsNullOrUndefined, CallTrampoline)                  \
91   ASM(CallFunction_ReceiverIsNotNullOrUndefined, CallTrampoline)               \
92   ASM(CallFunction_ReceiverIsAny, CallTrampoline)                              \
93   /* ES6 section 9.4.1.1 [[Call]] ( thisArgument, argumentsList) */            \
94   ASM(CallBoundFunction, CallTrampoline)                                       \
95   /* #sec-wrapped-function-exotic-objects-call-thisargument-argumentslist */   \
96   TFC(CallWrappedFunction, CallTrampoline)                                     \
97   /* ES6 section 7.3.12 Call(F, V, [argumentsList]) */                         \
98   ASM(Call_ReceiverIsNullOrUndefined, CallTrampoline)                          \
99   ASM(Call_ReceiverIsNotNullOrUndefined, CallTrampoline)                       \
100   ASM(Call_ReceiverIsAny, CallTrampoline)                                      \
101   TFC(Call_ReceiverIsNullOrUndefined_Baseline_Compact,                         \
102       CallTrampoline_Baseline_Compact)                                         \
103   TFC(Call_ReceiverIsNullOrUndefined_Baseline, CallTrampoline_Baseline)        \
104   TFC(Call_ReceiverIsNotNullOrUndefined_Baseline_Compact,                      \
105       CallTrampoline_Baseline_Compact)                                         \
106   TFC(Call_ReceiverIsNotNullOrUndefined_Baseline, CallTrampoline_Baseline)     \
107   TFC(Call_ReceiverIsAny_Baseline_Compact, CallTrampoline_Baseline_Compact)    \
108   TFC(Call_ReceiverIsAny_Baseline, CallTrampoline_Baseline)                    \
109   TFC(Call_ReceiverIsNullOrUndefined_WithFeedback,                             \
110       CallTrampoline_WithFeedback)                                             \
111   TFC(Call_ReceiverIsNotNullOrUndefined_WithFeedback,                          \
112       CallTrampoline_WithFeedback)                                             \
113   TFC(Call_ReceiverIsAny_WithFeedback, CallTrampoline_WithFeedback)            \
114                                                                                \
115   /* ES6 section 9.5.12[[Call]] ( thisArgument, argumentsList ) */             \
116   TFC(CallProxy, CallTrampoline)                                               \
117   ASM(CallVarargs, CallVarargs)                                                \
118   TFC(CallWithSpread, CallWithSpread)                                          \
119   TFC(CallWithSpread_Baseline, CallWithSpread_Baseline)                        \
120   TFC(CallWithSpread_WithFeedback, CallWithSpread_WithFeedback)                \
121   TFC(CallWithArrayLike, CallWithArrayLike)                                    \
122   TFC(CallWithArrayLike_WithFeedback, CallWithArrayLike_WithFeedback)          \
123   ASM(CallForwardVarargs, CallForwardVarargs)                                  \
124   ASM(CallFunctionForwardVarargs, CallForwardVarargs)                          \
125   /* Call an API callback via a {FunctionTemplateInfo}, doing appropriate */   \
126   /* access and compatible receiver checks. */                                 \
127   TFC(CallFunctionTemplate_CheckAccess, CallFunctionTemplate)                  \
128   TFC(CallFunctionTemplate_CheckCompatibleReceiver, CallFunctionTemplate)      \
129   TFC(CallFunctionTemplate_CheckAccessAndCompatibleReceiver,                   \
130       CallFunctionTemplate)                                                    \
131                                                                                \
132   /* Construct */                                                              \
133   /* ES6 section 9.2.2 [[Construct]] ( argumentsList, newTarget) */            \
134   ASM(ConstructFunction, JSTrampoline)                                         \
135   /* ES6 section 9.4.1.2 [[Construct]] (argumentsList, newTarget) */           \
136   ASM(ConstructBoundFunction, JSTrampoline)                                    \
137   ASM(ConstructedNonConstructable, JSTrampoline)                               \
138   /* ES6 section 7.3.13 Construct (F, [argumentsList], [newTarget]) */         \
139   ASM(Construct, JSTrampoline)                                                 \
140   ASM(ConstructVarargs, ConstructVarargs)                                      \
141   TFC(ConstructWithSpread, ConstructWithSpread)                                \
142   TFC(ConstructWithSpread_Baseline, ConstructWithSpread_Baseline)              \
143   TFC(ConstructWithSpread_WithFeedback, ConstructWithSpread_WithFeedback)      \
144   TFC(ConstructWithArrayLike, ConstructWithArrayLike)                          \
145   TFC(ConstructWithArrayLike_WithFeedback,                                     \
146       ConstructWithArrayLike_WithFeedback)                                     \
147   ASM(ConstructForwardVarargs, ConstructForwardVarargs)                        \
148   ASM(ConstructFunctionForwardVarargs, ConstructForwardVarargs)                \
149   TFC(Construct_Baseline, Construct_Baseline)                                  \
150   TFC(Construct_WithFeedback, Construct_WithFeedback)                          \
151   ASM(JSConstructStubGeneric, Dummy)                                           \
152   ASM(JSBuiltinsConstructStub, Dummy)                                          \
153   TFC(FastNewObject, FastNewObject)                                            \
154   TFS(FastNewClosure, kSharedFunctionInfo, kFeedbackCell)                      \
155   /* ES6 section 9.5.14 [[Construct]] ( argumentsList, newTarget) */           \
156   TFC(ConstructProxy, JSTrampoline)                                            \
157                                                                                \
158   /* Apply and entries */                                                      \
159   ASM(JSEntry, Dummy)                                                          \
160   ASM(JSConstructEntry, Dummy)                                                 \
161   ASM(JSRunMicrotasksEntry, RunMicrotasksEntry)                                \
162   /* Call a JSValue. */                                                        \
163   ASM(JSEntryTrampoline, JSTrampoline)                                         \
164   /* Construct a JSValue. */                                                   \
165   ASM(JSConstructEntryTrampoline, JSTrampoline)                                \
166   ASM(ResumeGeneratorTrampoline, ResumeGenerator)                              \
167                                                                                \
168   /* String helpers */                                                         \
169   TFC(StringFromCodePointAt, StringAtAsString)                                 \
170   TFC(StringEqual, Compare)                                                    \
171   TFC(StringGreaterThan, Compare)                                              \
172   TFC(StringGreaterThanOrEqual, Compare)                                       \
173   TFC(StringLessThan, Compare)                                                 \
174   TFC(StringLessThanOrEqual, Compare)                                          \
175   TFC(StringSubstring, StringSubstring)                                        \
176                                                                                \
177   /* OrderedHashTable helpers */                                               \
178   TFS(OrderedHashTableHealIndex, kTable, kIndex)                               \
179                                                                                \
180   /* Interpreter */                                                            \
181   /* InterpreterEntryTrampoline dispatches to the interpreter to run a */      \
182   /* JSFunction in the form of bytecodes */                                    \
183   ASM(InterpreterEntryTrampoline, JSTrampoline)                                \
184   ASM(InterpreterPushArgsThenCall, InterpreterPushArgsThenCall)                \
185   ASM(InterpreterPushUndefinedAndArgsThenCall, InterpreterPushArgsThenCall)    \
186   ASM(InterpreterPushArgsThenCallWithFinalSpread, InterpreterPushArgsThenCall) \
187   ASM(InterpreterPushArgsThenConstruct, InterpreterPushArgsThenConstruct)      \
188   ASM(InterpreterPushArgsThenConstructArrayFunction,                           \
189       InterpreterPushArgsThenConstruct)                                        \
190   ASM(InterpreterPushArgsThenConstructWithFinalSpread,                         \
191       InterpreterPushArgsThenConstruct)                                        \
192   ASM(InterpreterEnterAtBytecode, Dummy)                                       \
193   ASM(InterpreterEnterAtNextBytecode, Dummy)                                   \
194   ASM(InterpreterOnStackReplacement, ContextOnly)                              \
195                                                                                \
196   /* Baseline Compiler */                                                      \
197   ASM(BaselineOutOfLinePrologue, BaselineOutOfLinePrologue)                    \
198   ASM(BaselineOnStackReplacement, Void)                                        \
199   ASM(BaselineLeaveFrame, BaselineLeaveFrame)                                  \
200   ASM(BaselineOrInterpreterEnterAtBytecode, Void)                              \
201   ASM(BaselineOrInterpreterEnterAtNextBytecode, Void)                          \
202   ASM(InterpreterOnStackReplacement_ToBaseline, Void)                          \
203                                                                                \
204   /* Code life-cycle */                                                        \
205   TFC(CompileLazy, JSTrampoline)                                               \
206   TFC(CompileLazyDeoptimizedCode, JSTrampoline)                                \
207   TFC(InstantiateAsmJs, JSTrampoline)                                          \
208   ASM(NotifyDeoptimized, Dummy)                                                \
209                                                                                \
210   /* Trampolines called when returning from a deoptimization that expects   */ \
211   /* to continue in a JavaScript builtin to finish the functionality of a   */ \
212   /* an TF-inlined version of builtin that has side-effects.                */ \
213   /*                                                                        */ \
214   /* The trampolines work as follows:                                       */ \
215   /*   1. Trampoline restores input register values that                    */ \
216   /*      the builtin expects from a BuiltinContinuationFrame.              */ \
217   /*   2. Trampoline tears down BuiltinContinuationFrame.                   */ \
218   /*   3. Trampoline jumps to the builtin's address.                        */ \
219   /*   4. Builtin executes as if invoked by the frame above it.             */ \
220   /*   5. When the builtin returns, execution resumes normally in the       */ \
221   /*      calling frame, processing any return result from the JavaScript   */ \
222   /*      builtin as if it had called the builtin directly.                 */ \
223   /*                                                                        */ \
224   /* There are two variants of the stub that differ in their handling of a  */ \
225   /* value returned by the next frame deeper on the stack. For LAZY deopts, */ \
226   /* the return value (e.g. rax on x64) is explicitly passed as an extra    */ \
227   /* stack parameter to the JavaScript builtin by the "WithResult"          */ \
228   /* trampoline variant. The plain variant is used in EAGER deopt contexts  */ \
229   /* and has no such special handling. */                                      \
230   ASM(ContinueToCodeStubBuiltin, Dummy)                                        \
231   ASM(ContinueToCodeStubBuiltinWithResult, Dummy)                              \
232   ASM(ContinueToJavaScriptBuiltin, Dummy)                                      \
233   ASM(ContinueToJavaScriptBuiltinWithResult, Dummy)                            \
234                                                                                \
235   /* API callback handling */                                                  \
236   ASM(CallApiCallback, ApiCallback)                                            \
237   ASM(CallApiGetter, ApiGetter)                                                \
238   CPP(HandleApiCall)                                                           \
239   CPP(HandleApiCallAsFunction)                                                 \
240   CPP(HandleApiCallAsConstructor)                                              \
241                                                                                \
242   /* Adapters for Turbofan into runtime */                                     \
243   TFC(AllocateInYoungGeneration, Allocate)                                     \
244   TFC(AllocateRegularInYoungGeneration, Allocate)                              \
245   TFC(AllocateInOldGeneration, Allocate)                                       \
246   TFC(AllocateRegularInOldGeneration, Allocate)                                \
247                                                                                \
248   /* TurboFan support builtins */                                              \
249   TFS(CopyFastSmiOrObjectElements, kObject)                                    \
250   TFC(GrowFastDoubleElements, GrowArrayElements)                               \
251   TFC(GrowFastSmiOrObjectElements, GrowArrayElements)                          \
252                                                                                \
253   /* Debugger */                                                               \
254   TFJ(DebugBreakTrampoline, kDontAdaptArgumentsSentinel)                       \
255                                                                                \
256   /* Type conversions */                                                       \
257   TFC(ToNumber, TypeConversion)                                                \
258   TFC(ToNumber_Baseline, TypeConversion_Baseline)                              \
259   TFC(ToNumeric_Baseline, TypeConversion_Baseline)                             \
260   TFC(PlainPrimitiveToNumber, TypeConversionNoContext)                         \
261   TFC(ToNumberConvertBigInt, TypeConversion)                                   \
262   TFC(Typeof, Typeof)                                                          \
263   TFC(BigIntToI64, BigIntToI64)                                                \
264   TFC(BigIntToI32Pair, BigIntToI32Pair)                                        \
265   TFC(I64ToBigInt, I64ToBigInt)                                                \
266   TFC(I32PairToBigInt, I32PairToBigInt)                                        \
267                                                                                \
268   /* Type conversions continuations */                                         \
269   TFC(ToBooleanLazyDeoptContinuation, SingleParameterOnStack)                  \
270                                                                                \
271   /* Handlers */                                                               \
272   TFH(KeyedLoadIC_PolymorphicName, LoadWithVector)                             \
273   TFH(KeyedStoreIC_Megamorphic, Store)                                         \
274   TFH(DefineKeyedOwnIC_Megamorphic, Store)                                     \
275   TFH(LoadGlobalIC_NoFeedback, LoadGlobalNoFeedback)                           \
276   TFH(LoadIC_FunctionPrototype, LoadWithVector)                                \
277   TFH(LoadIC_StringLength, LoadWithVector)                                     \
278   TFH(LoadIC_StringWrapperLength, LoadWithVector)                              \
279   TFH(LoadIC_NoFeedback, LoadNoFeedback)                                       \
280   TFH(StoreGlobalIC_Slow, StoreWithVector)                                     \
281   TFH(StoreIC_NoFeedback, Store)                                               \
282   TFH(DefineNamedOwnIC_NoFeedback, Store)                                      \
283   TFH(KeyedLoadIC_SloppyArguments, LoadWithVector)                             \
284   TFH(LoadIndexedInterceptorIC, LoadWithVector)                                \
285   TFH(KeyedStoreIC_SloppyArguments_Standard, StoreWithVector)                  \
286   TFH(KeyedStoreIC_SloppyArguments_GrowNoTransitionHandleCOW, StoreWithVector) \
287   TFH(KeyedStoreIC_SloppyArguments_NoTransitionIgnoreOOB, StoreWithVector)     \
288   TFH(KeyedStoreIC_SloppyArguments_NoTransitionHandleCOW, StoreWithVector)     \
289   TFH(StoreFastElementIC_Standard, StoreWithVector)                            \
290   TFH(StoreFastElementIC_GrowNoTransitionHandleCOW, StoreWithVector)           \
291   TFH(StoreFastElementIC_NoTransitionIgnoreOOB, StoreWithVector)               \
292   TFH(StoreFastElementIC_NoTransitionHandleCOW, StoreWithVector)               \
293   TFH(ElementsTransitionAndStore_Standard, StoreTransition)                    \
294   TFH(ElementsTransitionAndStore_GrowNoTransitionHandleCOW, StoreTransition)   \
295   TFH(ElementsTransitionAndStore_NoTransitionIgnoreOOB, StoreTransition)       \
296   TFH(ElementsTransitionAndStore_NoTransitionHandleCOW, StoreTransition)       \
297   TFH(KeyedHasIC_PolymorphicName, LoadWithVector)                              \
298   TFH(KeyedHasIC_SloppyArguments, LoadWithVector)                              \
299   TFH(HasIndexedInterceptorIC, LoadWithVector)                                 \
300                                                                                \
301   /* Microtask helpers */                                                      \
302   TFS(EnqueueMicrotask, kMicrotask)                                            \
303   ASM(RunMicrotasksTrampoline, RunMicrotasksEntry)                             \
304   TFC(RunMicrotasks, RunMicrotasks)                                            \
305                                                                                \
306   /* Object property helpers */                                                \
307   TFS(HasProperty, kObject, kKey)                                              \
308   TFS(DeleteProperty, kObject, kKey, kLanguageMode)                            \
309   /* ES #sec-copydataproperties */                                             \
310   TFS(CopyDataProperties, kTarget, kSource)                                    \
311   TFS(SetDataProperties, kTarget, kSource)                                     \
312   TFC(CopyDataPropertiesWithExcludedPropertiesOnStack,                         \
313       CopyDataPropertiesWithExcludedPropertiesOnStack)                         \
314   TFC(CopyDataPropertiesWithExcludedProperties,                                \
315       CopyDataPropertiesWithExcludedProperties)                                \
316                                                                                \
317   /* Abort */                                                                  \
318   TFC(Abort, Abort)                                                            \
319   TFC(AbortCSADcheck, Abort)                                                   \
320                                                                                \
321   /* Built-in functions for Javascript */                                      \
322   /* Special internal builtins */                                              \
323   CPP(EmptyFunction)                                                           \
324   CPP(Illegal)                                                                 \
325   CPP(StrictPoisonPillThrower)                                                 \
326   CPP(UnsupportedThrower)                                                      \
327   TFJ(ReturnReceiver, kJSArgcReceiverSlots, kReceiver)                         \
328                                                                                \
329   /* Array */                                                                  \
330   TFC(ArrayConstructor, JSTrampoline)                                          \
331   TFC(ArrayConstructorImpl, ArrayConstructor)                                  \
332   TFC(ArrayNoArgumentConstructor_PackedSmi_DontOverride,                       \
333       ArrayNoArgumentConstructor)                                              \
334   TFC(ArrayNoArgumentConstructor_HoleySmi_DontOverride,                        \
335       ArrayNoArgumentConstructor)                                              \
336   TFC(ArrayNoArgumentConstructor_PackedSmi_DisableAllocationSites,             \
337       ArrayNoArgumentConstructor)                                              \
338   TFC(ArrayNoArgumentConstructor_HoleySmi_DisableAllocationSites,              \
339       ArrayNoArgumentConstructor)                                              \
340   TFC(ArrayNoArgumentConstructor_Packed_DisableAllocationSites,                \
341       ArrayNoArgumentConstructor)                                              \
342   TFC(ArrayNoArgumentConstructor_Holey_DisableAllocationSites,                 \
343       ArrayNoArgumentConstructor)                                              \
344   TFC(ArrayNoArgumentConstructor_PackedDouble_DisableAllocationSites,          \
345       ArrayNoArgumentConstructor)                                              \
346   TFC(ArrayNoArgumentConstructor_HoleyDouble_DisableAllocationSites,           \
347       ArrayNoArgumentConstructor)                                              \
348   TFC(ArraySingleArgumentConstructor_PackedSmi_DontOverride,                   \
349       ArraySingleArgumentConstructor)                                          \
350   TFC(ArraySingleArgumentConstructor_HoleySmi_DontOverride,                    \
351       ArraySingleArgumentConstructor)                                          \
352   TFC(ArraySingleArgumentConstructor_PackedSmi_DisableAllocationSites,         \
353       ArraySingleArgumentConstructor)                                          \
354   TFC(ArraySingleArgumentConstructor_HoleySmi_DisableAllocationSites,          \
355       ArraySingleArgumentConstructor)                                          \
356   TFC(ArraySingleArgumentConstructor_Packed_DisableAllocationSites,            \
357       ArraySingleArgumentConstructor)                                          \
358   TFC(ArraySingleArgumentConstructor_Holey_DisableAllocationSites,             \
359       ArraySingleArgumentConstructor)                                          \
360   TFC(ArraySingleArgumentConstructor_PackedDouble_DisableAllocationSites,      \
361       ArraySingleArgumentConstructor)                                          \
362   TFC(ArraySingleArgumentConstructor_HoleyDouble_DisableAllocationSites,       \
363       ArraySingleArgumentConstructor)                                          \
364   TFC(ArrayNArgumentsConstructor, ArrayNArgumentsConstructor)                  \
365   CPP(ArrayConcat)                                                             \
366   /* ES6 #sec-array.prototype.fill */                                          \
367   CPP(ArrayPrototypeFill)                                                      \
368   /* ES7 #sec-array.prototype.includes */                                      \
369   TFS(ArrayIncludesSmiOrObject, kElements, kSearchElement, kLength,            \
370       kFromIndex)                                                              \
371   TFS(ArrayIncludesPackedDoubles, kElements, kSearchElement, kLength,          \
372       kFromIndex)                                                              \
373   TFS(ArrayIncludesHoleyDoubles, kElements, kSearchElement, kLength,           \
374       kFromIndex)                                                              \
375   TFJ(ArrayIncludes, kDontAdaptArgumentsSentinel)                              \
376   /* ES6 #sec-array.prototype.indexof */                                       \
377   TFS(ArrayIndexOfSmiOrObject, kElements, kSearchElement, kLength, kFromIndex) \
378   TFS(ArrayIndexOfPackedDoubles, kElements, kSearchElement, kLength,           \
379       kFromIndex)                                                              \
380   TFS(ArrayIndexOfHoleyDoubles, kElements, kSearchElement, kLength,            \
381       kFromIndex)                                                              \
382   TFJ(ArrayIndexOf, kDontAdaptArgumentsSentinel)                               \
383   /* ES6 #sec-array.prototype.pop */                                           \
384   CPP(ArrayPop)                                                                \
385   TFJ(ArrayPrototypePop, kDontAdaptArgumentsSentinel)                          \
386   /* ES6 #sec-array.prototype.groupby */                                       \
387   CPP(ArrayPrototypeGroupBy)                                                   \
388   CPP(ArrayPrototypeGroupByToMap)                                              \
389   /* ES6 #sec-array.prototype.push */                                          \
390   CPP(ArrayPush)                                                               \
391   TFJ(ArrayPrototypePush, kDontAdaptArgumentsSentinel)                         \
392   /* ES6 #sec-array.prototype.shift */                                         \
393   CPP(ArrayShift)                                                              \
394   /* ES6 #sec-array.prototype.unshift */                                       \
395   CPP(ArrayUnshift)                                                            \
396   /* Support for Array.from and other array-copying idioms */                  \
397   TFS(CloneFastJSArray, kSource)                                               \
398   TFS(CloneFastJSArrayFillingHoles, kSource)                                   \
399   TFS(ExtractFastJSArray, kSource, kBegin, kCount)                             \
400   /* ES6 #sec-array.prototype.entries */                                       \
401   TFJ(ArrayPrototypeEntries, kJSArgcReceiverSlots, kReceiver)                  \
402   /* ES6 #sec-array.prototype.keys */                                          \
403   TFJ(ArrayPrototypeKeys, kJSArgcReceiverSlots, kReceiver)                     \
404   /* ES6 #sec-array.prototype.values */                                        \
405   TFJ(ArrayPrototypeValues, kJSArgcReceiverSlots, kReceiver)                   \
406   /* ES6 #sec-%arrayiteratorprototype%.next */                                 \
407   TFJ(ArrayIteratorPrototypeNext, kJSArgcReceiverSlots, kReceiver)             \
408   /* https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray */          \
409   TFS(FlattenIntoArray, kTarget, kSource, kSourceLength, kStart, kDepth)       \
410   TFS(FlatMapIntoArray, kTarget, kSource, kSourceLength, kStart, kDepth,       \
411       kMapperFunction, kThisArg)                                               \
412   /* https://tc39.github.io/proposal-flatMap/#sec-Array.prototype.flat */      \
413   TFJ(ArrayPrototypeFlat, kDontAdaptArgumentsSentinel)                         \
414   /* https://tc39.github.io/proposal-flatMap/#sec-Array.prototype.flatMap */   \
415   TFJ(ArrayPrototypeFlatMap, kDontAdaptArgumentsSentinel)                      \
416                                                                                \
417   /* ArrayBuffer */                                                            \
418   /* ES #sec-arraybuffer-constructor */                                        \
419   CPP(ArrayBufferConstructor)                                                  \
420   CPP(ArrayBufferConstructor_DoNotInitialize)                                  \
421   CPP(ArrayBufferPrototypeSlice)                                               \
422   /* https://tc39.es/proposal-resizablearraybuffer/ */                         \
423   CPP(ArrayBufferPrototypeResize)                                              \
424                                                                                \
425   /* AsyncFunction */                                                          \
426   TFS(AsyncFunctionEnter, kClosure, kReceiver)                                 \
427   TFS(AsyncFunctionReject, kAsyncFunctionObject, kReason)                      \
428   TFS(AsyncFunctionResolve, kAsyncFunctionObject, kValue)                      \
429   TFC(AsyncFunctionLazyDeoptContinuation, AsyncFunctionStackParameter)         \
430   TFS(AsyncFunctionAwaitCaught, kAsyncFunctionObject, kValue)                  \
431   TFS(AsyncFunctionAwaitUncaught, kAsyncFunctionObject, kValue)                \
432   TFJ(AsyncFunctionAwaitRejectClosure, kJSArgcReceiverSlots + 1, kReceiver,    \
433       kSentError)                                                              \
434   TFJ(AsyncFunctionAwaitResolveClosure, kJSArgcReceiverSlots + 1, kReceiver,   \
435       kSentValue)                                                              \
436                                                                                \
437   /* BigInt */                                                                 \
438   CPP(BigIntConstructor)                                                       \
439   CPP(BigIntAsUintN)                                                           \
440   CPP(BigIntAsIntN)                                                            \
441   CPP(BigIntPrototypeToLocaleString)                                           \
442   CPP(BigIntPrototypeToString)                                                 \
443   CPP(BigIntPrototypeValueOf)                                                  \
444                                                                                \
445   /* CallSite */                                                               \
446   CPP(CallSitePrototypeGetColumnNumber)                                        \
447   CPP(CallSitePrototypeGetEnclosingColumnNumber)                               \
448   CPP(CallSitePrototypeGetEnclosingLineNumber)                                 \
449   CPP(CallSitePrototypeGetEvalOrigin)                                          \
450   CPP(CallSitePrototypeGetFileName)                                            \
451   CPP(CallSitePrototypeGetFunction)                                            \
452   CPP(CallSitePrototypeGetFunctionName)                                        \
453   CPP(CallSitePrototypeGetLineNumber)                                          \
454   CPP(CallSitePrototypeGetMethodName)                                          \
455   CPP(CallSitePrototypeGetPosition)                                            \
456   CPP(CallSitePrototypeGetPromiseIndex)                                        \
457   CPP(CallSitePrototypeGetScriptNameOrSourceURL)                               \
458   CPP(CallSitePrototypeGetThis)                                                \
459   CPP(CallSitePrototypeGetTypeName)                                            \
460   CPP(CallSitePrototypeIsAsync)                                                \
461   CPP(CallSitePrototypeIsConstructor)                                          \
462   CPP(CallSitePrototypeIsEval)                                                 \
463   CPP(CallSitePrototypeIsNative)                                               \
464   CPP(CallSitePrototypeIsPromiseAll)                                           \
465   CPP(CallSitePrototypeIsToplevel)                                             \
466   CPP(CallSitePrototypeToString)                                               \
467                                                                                \
468   /* Console */                                                                \
469   CPP(ConsoleDebug)                                                            \
470   CPP(ConsoleError)                                                            \
471   CPP(ConsoleInfo)                                                             \
472   CPP(ConsoleLog)                                                              \
473   CPP(ConsoleWarn)                                                             \
474   CPP(ConsoleDir)                                                              \
475   CPP(ConsoleDirXml)                                                           \
476   CPP(ConsoleTable)                                                            \
477   CPP(ConsoleTrace)                                                            \
478   CPP(ConsoleGroup)                                                            \
479   CPP(ConsoleGroupCollapsed)                                                   \
480   CPP(ConsoleGroupEnd)                                                         \
481   CPP(ConsoleClear)                                                            \
482   CPP(ConsoleCount)                                                            \
483   CPP(ConsoleCountReset)                                                       \
484   CPP(ConsoleAssert)                                                           \
485   CPP(ConsoleProfile)                                                          \
486   CPP(ConsoleProfileEnd)                                                       \
487   CPP(ConsoleTime)                                                             \
488   CPP(ConsoleTimeLog)                                                          \
489   CPP(ConsoleTimeEnd)                                                          \
490   CPP(ConsoleTimeStamp)                                                        \
491   CPP(ConsoleContext)                                                          \
492                                                                                \
493   /* DataView */                                                               \
494   /* ES #sec-dataview-constructor */                                           \
495   CPP(DataViewConstructor)                                                     \
496                                                                                \
497   /* Date */                                                                   \
498   /* ES #sec-date-constructor */                                               \
499   CPP(DateConstructor)                                                         \
500   /* ES6 #sec-date.prototype.getdate */                                        \
501   TFJ(DatePrototypeGetDate, kJSArgcReceiverSlots, kReceiver)                   \
502   /* ES6 #sec-date.prototype.getday */                                         \
503   TFJ(DatePrototypeGetDay, kJSArgcReceiverSlots, kReceiver)                    \
504   /* ES6 #sec-date.prototype.getfullyear */                                    \
505   TFJ(DatePrototypeGetFullYear, kJSArgcReceiverSlots, kReceiver)               \
506   /* ES6 #sec-date.prototype.gethours */                                       \
507   TFJ(DatePrototypeGetHours, kJSArgcReceiverSlots, kReceiver)                  \
508   /* ES6 #sec-date.prototype.getmilliseconds */                                \
509   TFJ(DatePrototypeGetMilliseconds, kJSArgcReceiverSlots, kReceiver)           \
510   /* ES6 #sec-date.prototype.getminutes */                                     \
511   TFJ(DatePrototypeGetMinutes, kJSArgcReceiverSlots, kReceiver)                \
512   /* ES6 #sec-date.prototype.getmonth */                                       \
513   TFJ(DatePrototypeGetMonth, kJSArgcReceiverSlots, kReceiver)                  \
514   /* ES6 #sec-date.prototype.getseconds */                                     \
515   TFJ(DatePrototypeGetSeconds, kJSArgcReceiverSlots, kReceiver)                \
516   /* ES6 #sec-date.prototype.gettime */                                        \
517   TFJ(DatePrototypeGetTime, kJSArgcReceiverSlots, kReceiver)                   \
518   /* ES6 #sec-date.prototype.gettimezoneoffset */                              \
519   TFJ(DatePrototypeGetTimezoneOffset, kJSArgcReceiverSlots, kReceiver)         \
520   /* ES6 #sec-date.prototype.getutcdate */                                     \
521   TFJ(DatePrototypeGetUTCDate, kJSArgcReceiverSlots, kReceiver)                \
522   /* ES6 #sec-date.prototype.getutcday */                                      \
523   TFJ(DatePrototypeGetUTCDay, kJSArgcReceiverSlots, kReceiver)                 \
524   /* ES6 #sec-date.prototype.getutcfullyear */                                 \
525   TFJ(DatePrototypeGetUTCFullYear, kJSArgcReceiverSlots, kReceiver)            \
526   /* ES6 #sec-date.prototype.getutchours */                                    \
527   TFJ(DatePrototypeGetUTCHours, kJSArgcReceiverSlots, kReceiver)               \
528   /* ES6 #sec-date.prototype.getutcmilliseconds */                             \
529   TFJ(DatePrototypeGetUTCMilliseconds, kJSArgcReceiverSlots, kReceiver)        \
530   /* ES6 #sec-date.prototype.getutcminutes */                                  \
531   TFJ(DatePrototypeGetUTCMinutes, kJSArgcReceiverSlots, kReceiver)             \
532   /* ES6 #sec-date.prototype.getutcmonth */                                    \
533   TFJ(DatePrototypeGetUTCMonth, kJSArgcReceiverSlots, kReceiver)               \
534   /* ES6 #sec-date.prototype.getutcseconds */                                  \
535   TFJ(DatePrototypeGetUTCSeconds, kJSArgcReceiverSlots, kReceiver)             \
536   /* ES6 #sec-date.prototype.valueof */                                        \
537   TFJ(DatePrototypeValueOf, kJSArgcReceiverSlots, kReceiver)                   \
538   /* ES6 #sec-date.prototype-@@toprimitive */                                  \
539   TFJ(DatePrototypeToPrimitive, kJSArgcReceiverSlots + 1, kReceiver, kHint)    \
540   CPP(DatePrototypeGetYear)                                                    \
541   CPP(DatePrototypeSetYear)                                                    \
542   CPP(DateNow)                                                                 \
543   CPP(DateParse)                                                               \
544   CPP(DatePrototypeSetDate)                                                    \
545   CPP(DatePrototypeSetFullYear)                                                \
546   CPP(DatePrototypeSetHours)                                                   \
547   CPP(DatePrototypeSetMilliseconds)                                            \
548   CPP(DatePrototypeSetMinutes)                                                 \
549   CPP(DatePrototypeSetMonth)                                                   \
550   CPP(DatePrototypeSetSeconds)                                                 \
551   CPP(DatePrototypeSetTime)                                                    \
552   CPP(DatePrototypeSetUTCDate)                                                 \
553   CPP(DatePrototypeSetUTCFullYear)                                             \
554   CPP(DatePrototypeSetUTCHours)                                                \
555   CPP(DatePrototypeSetUTCMilliseconds)                                         \
556   CPP(DatePrototypeSetUTCMinutes)                                              \
557   CPP(DatePrototypeSetUTCMonth)                                                \
558   CPP(DatePrototypeSetUTCSeconds)                                              \
559   CPP(DatePrototypeToDateString)                                               \
560   CPP(DatePrototypeToISOString)                                                \
561   CPP(DatePrototypeToUTCString)                                                \
562   CPP(DatePrototypeToString)                                                   \
563   CPP(DatePrototypeToTimeString)                                               \
564   CPP(DatePrototypeToJson)                                                     \
565   CPP(DateUTC)                                                                 \
566                                                                                \
567   /* Error */                                                                  \
568   CPP(ErrorConstructor)                                                        \
569   CPP(ErrorCaptureStackTrace)                                                  \
570   CPP(ErrorPrototypeToString)                                                  \
571                                                                                \
572   /* Function */                                                               \
573   CPP(FunctionConstructor)                                                     \
574   ASM(FunctionPrototypeApply, JSTrampoline)                                    \
575   CPP(FunctionPrototypeBind)                                                   \
576   ASM(FunctionPrototypeCall, JSTrampoline)                                     \
577   /* ES6 #sec-function.prototype.tostring */                                   \
578   CPP(FunctionPrototypeToString)                                               \
579                                                                                \
580   /* Belongs to Objects but is a dependency of GeneratorPrototypeResume */     \
581   TFS(CreateIterResultObject, kValue, kDone)                                   \
582                                                                                \
583   /* Generator and Async */                                                    \
584   TFS(CreateGeneratorObject, kClosure, kReceiver)                              \
585   CPP(GeneratorFunctionConstructor)                                            \
586   /* ES6 #sec-generator.prototype.next */                                      \
587   TFJ(GeneratorPrototypeNext, kDontAdaptArgumentsSentinel)                     \
588   /* ES6 #sec-generator.prototype.return */                                    \
589   TFJ(GeneratorPrototypeReturn, kDontAdaptArgumentsSentinel)                   \
590   /* ES6 #sec-generator.prototype.throw */                                     \
591   TFJ(GeneratorPrototypeThrow, kDontAdaptArgumentsSentinel)                    \
592   CPP(AsyncFunctionConstructor)                                                \
593   TFC(SuspendGeneratorBaseline, SuspendGeneratorBaseline)                      \
594   TFC(ResumeGeneratorBaseline, ResumeGeneratorBaseline)                        \
595                                                                                \
596   /* Iterator Protocol */                                                      \
597   TFC(GetIteratorWithFeedbackLazyDeoptContinuation, GetIteratorStackParameter) \
598                                                                                \
599   /* Global object */                                                          \
600   CPP(GlobalDecodeURI)                                                         \
601   CPP(GlobalDecodeURIComponent)                                                \
602   CPP(GlobalEncodeURI)                                                         \
603   CPP(GlobalEncodeURIComponent)                                                \
604   CPP(GlobalEscape)                                                            \
605   CPP(GlobalUnescape)                                                          \
606   CPP(GlobalEval)                                                              \
607   /* ES6 #sec-isfinite-number */                                               \
608   TFJ(GlobalIsFinite, kJSArgcReceiverSlots + 1, kReceiver, kNumber)            \
609   /* ES6 #sec-isnan-number */                                                  \
610   TFJ(GlobalIsNaN, kJSArgcReceiverSlots + 1, kReceiver, kNumber)               \
611                                                                                \
612   /* JSON */                                                                   \
613   CPP(JsonParse)                                                               \
614   CPP(JsonStringify)                                                           \
615                                                                                \
616   /* ICs */                                                                    \
617   TFH(LoadIC, LoadWithVector)                                                  \
618   TFH(LoadIC_Megamorphic, LoadWithVector)                                      \
619   TFH(LoadIC_Noninlined, LoadWithVector)                                       \
620   TFH(LoadICTrampoline, Load)                                                  \
621   TFH(LoadICBaseline, LoadBaseline)                                            \
622   TFH(LoadICTrampoline_Megamorphic, Load)                                      \
623   TFH(LoadSuperIC, LoadWithReceiverAndVector)                                  \
624   TFH(LoadSuperICBaseline, LoadWithReceiverBaseline)                           \
625   TFH(KeyedLoadIC, KeyedLoadWithVector)                                        \
626   TFH(KeyedLoadIC_Megamorphic, KeyedLoadWithVector)                            \
627   TFH(KeyedLoadICTrampoline, KeyedLoad)                                        \
628   TFH(KeyedLoadICBaseline, KeyedLoadBaseline)                                  \
629   TFH(KeyedLoadICTrampoline_Megamorphic, KeyedLoad)                            \
630   TFH(StoreGlobalIC, StoreGlobalWithVector)                                    \
631   TFH(StoreGlobalICTrampoline, StoreGlobal)                                    \
632   TFH(StoreGlobalICBaseline, StoreGlobalBaseline)                              \
633   TFH(StoreIC, StoreWithVector)                                                \
634   TFH(StoreICTrampoline, Store)                                                \
635   TFH(StoreICBaseline, StoreBaseline)                                          \
636   TFH(DefineNamedOwnIC, StoreWithVector)                                       \
637   TFH(DefineNamedOwnICTrampoline, Store)                                       \
638   TFH(DefineNamedOwnICBaseline, StoreBaseline)                                 \
639   TFH(KeyedStoreIC, StoreWithVector)                                           \
640   TFH(KeyedStoreICTrampoline, Store)                                           \
641   TFH(KeyedStoreICBaseline, StoreBaseline)                                     \
642   TFH(DefineKeyedOwnIC, StoreWithVector)                                       \
643   TFH(DefineKeyedOwnICTrampoline, Store)                                       \
644   TFH(DefineKeyedOwnICBaseline, StoreBaseline)                                 \
645   TFH(StoreInArrayLiteralIC, StoreWithVector)                                  \
646   TFH(StoreInArrayLiteralICBaseline, StoreBaseline)                            \
647   TFH(LookupContextBaseline, LookupBaseline)                                   \
648   TFH(LookupContextInsideTypeofBaseline, LookupBaseline)                       \
649   TFH(LoadGlobalIC, LoadGlobalWithVector)                                      \
650   TFH(LoadGlobalICInsideTypeof, LoadGlobalWithVector)                          \
651   TFH(LoadGlobalICTrampoline, LoadGlobal)                                      \
652   TFH(LoadGlobalICBaseline, LoadGlobalBaseline)                                \
653   TFH(LoadGlobalICInsideTypeofTrampoline, LoadGlobal)                          \
654   TFH(LoadGlobalICInsideTypeofBaseline, LoadGlobalBaseline)                    \
655   TFH(LookupGlobalICBaseline, LookupBaseline)                                  \
656   TFH(LookupGlobalICInsideTypeofBaseline, LookupBaseline)                      \
657   TFH(CloneObjectIC, CloneObjectWithVector)                                    \
658   TFH(CloneObjectICBaseline, CloneObjectBaseline)                              \
659   TFH(CloneObjectIC_Slow, CloneObjectWithVector)                               \
660   TFH(KeyedHasIC, KeyedHasICWithVector)                                        \
661   TFH(KeyedHasICBaseline, KeyedHasICBaseline)                                  \
662   TFH(KeyedHasIC_Megamorphic, KeyedHasICWithVector)                            \
663                                                                                \
664   /* IterableToList */                                                         \
665   /* ES #sec-iterabletolist */                                                 \
666   TFS(IterableToList, kIterable, kIteratorFn)                                  \
667   TFS(IterableToFixedArray, kIterable, kIteratorFn)                            \
668   TFS(IterableToListWithSymbolLookup, kIterable)                               \
669   TFS(IterableToFixedArrayWithSymbolLookupSlow, kIterable)                     \
670   TFS(IterableToListMayPreserveHoles, kIterable, kIteratorFn)                  \
671   IF_WASM(TFS, IterableToFixedArrayForWasm, kIterable, kExpectedLength)        \
672                                                                                \
673   /* #sec-createstringlistfromiterable */                                      \
674   TFS(StringListFromIterable, kIterable)                                       \
675                                                                                \
676   /* Map */                                                                    \
677   TFS(FindOrderedHashMapEntry, kTable, kKey)                                   \
678   TFJ(MapConstructor, kDontAdaptArgumentsSentinel)                             \
679   TFJ(MapPrototypeSet, kJSArgcReceiverSlots + 2, kReceiver, kKey, kValue)      \
680   TFJ(MapPrototypeDelete, kJSArgcReceiverSlots + 1, kReceiver, kKey)           \
681   TFJ(MapPrototypeGet, kJSArgcReceiverSlots + 1, kReceiver, kKey)              \
682   TFJ(MapPrototypeHas, kJSArgcReceiverSlots + 1, kReceiver, kKey)              \
683   CPP(MapPrototypeClear)                                                       \
684   /* ES #sec-map.prototype.entries */                                          \
685   TFJ(MapPrototypeEntries, kJSArgcReceiverSlots, kReceiver)                    \
686   /* ES #sec-get-map.prototype.size */                                         \
687   TFJ(MapPrototypeGetSize, kJSArgcReceiverSlots, kReceiver)                    \
688   /* ES #sec-map.prototype.forEach */                                          \
689   TFJ(MapPrototypeForEach, kDontAdaptArgumentsSentinel)                        \
690   /* ES #sec-map.prototype.keys */                                             \
691   TFJ(MapPrototypeKeys, kJSArgcReceiverSlots, kReceiver)                       \
692   /* ES #sec-map.prototype.values */                                           \
693   TFJ(MapPrototypeValues, kJSArgcReceiverSlots, kReceiver)                     \
694   /* ES #sec-%mapiteratorprototype%.next */                                    \
695   TFJ(MapIteratorPrototypeNext, kJSArgcReceiverSlots, kReceiver)               \
696   TFS(MapIteratorToList, kSource)                                              \
697                                                                                \
698   /* ES #sec-number-constructor */                                             \
699   CPP(NumberPrototypeToExponential)                                            \
700   CPP(NumberPrototypeToFixed)                                                  \
701   CPP(NumberPrototypeToLocaleString)                                           \
702   CPP(NumberPrototypeToPrecision)                                              \
703   TFC(SameValue, Compare)                                                      \
704   TFC(SameValueNumbersOnly, Compare)                                           \
705                                                                                \
706   /* Binary ops with feedback collection */                                    \
707   TFC(Add_Baseline, BinaryOp_Baseline)                                         \
708   TFC(AddSmi_Baseline, BinarySmiOp_Baseline)                                   \
709   TFC(Subtract_Baseline, BinaryOp_Baseline)                                    \
710   TFC(SubtractSmi_Baseline, BinarySmiOp_Baseline)                              \
711   TFC(Multiply_Baseline, BinaryOp_Baseline)                                    \
712   TFC(MultiplySmi_Baseline, BinarySmiOp_Baseline)                              \
713   TFC(Divide_Baseline, BinaryOp_Baseline)                                      \
714   TFC(DivideSmi_Baseline, BinarySmiOp_Baseline)                                \
715   TFC(Modulus_Baseline, BinaryOp_Baseline)                                     \
716   TFC(ModulusSmi_Baseline, BinarySmiOp_Baseline)                               \
717   TFC(Exponentiate_Baseline, BinaryOp_Baseline)                                \
718   TFC(ExponentiateSmi_Baseline, BinarySmiOp_Baseline)                          \
719   TFC(BitwiseAnd_Baseline, BinaryOp_Baseline)                                  \
720   TFC(BitwiseAndSmi_Baseline, BinarySmiOp_Baseline)                            \
721   TFC(BitwiseOr_Baseline, BinaryOp_Baseline)                                   \
722   TFC(BitwiseOrSmi_Baseline, BinarySmiOp_Baseline)                             \
723   TFC(BitwiseXor_Baseline, BinaryOp_Baseline)                                  \
724   TFC(BitwiseXorSmi_Baseline, BinarySmiOp_Baseline)                            \
725   TFC(ShiftLeft_Baseline, BinaryOp_Baseline)                                   \
726   TFC(ShiftLeftSmi_Baseline, BinarySmiOp_Baseline)                             \
727   TFC(ShiftRight_Baseline, BinaryOp_Baseline)                                  \
728   TFC(ShiftRightSmi_Baseline, BinarySmiOp_Baseline)                            \
729   TFC(ShiftRightLogical_Baseline, BinaryOp_Baseline)                           \
730   TFC(ShiftRightLogicalSmi_Baseline, BinarySmiOp_Baseline)                     \
731                                                                                \
732   TFC(Add_WithFeedback, BinaryOp_WithFeedback)                                 \
733   TFC(Subtract_WithFeedback, BinaryOp_WithFeedback)                            \
734   TFC(Multiply_WithFeedback, BinaryOp_WithFeedback)                            \
735   TFC(Divide_WithFeedback, BinaryOp_WithFeedback)                              \
736   TFC(Modulus_WithFeedback, BinaryOp_WithFeedback)                             \
737   TFC(Exponentiate_WithFeedback, BinaryOp_WithFeedback)                        \
738   TFC(BitwiseAnd_WithFeedback, BinaryOp_WithFeedback)                          \
739   TFC(BitwiseOr_WithFeedback, BinaryOp_WithFeedback)                           \
740   TFC(BitwiseXor_WithFeedback, BinaryOp_WithFeedback)                          \
741   TFC(ShiftLeft_WithFeedback, BinaryOp_WithFeedback)                           \
742   TFC(ShiftRight_WithFeedback, BinaryOp_WithFeedback)                          \
743   TFC(ShiftRightLogical_WithFeedback, BinaryOp_WithFeedback)                   \
744                                                                                \
745   /* Compare ops with feedback collection */                                   \
746   TFC(Equal_Baseline, Compare_Baseline)                                        \
747   TFC(StrictEqual_Baseline, Compare_Baseline)                                  \
748   TFC(LessThan_Baseline, Compare_Baseline)                                     \
749   TFC(GreaterThan_Baseline, Compare_Baseline)                                  \
750   TFC(LessThanOrEqual_Baseline, Compare_Baseline)                              \
751   TFC(GreaterThanOrEqual_Baseline, Compare_Baseline)                           \
752                                                                                \
753   TFC(Equal_WithFeedback, Compare_WithFeedback)                                \
754   TFC(StrictEqual_WithFeedback, Compare_WithFeedback)                          \
755   TFC(LessThan_WithFeedback, Compare_WithFeedback)                             \
756   TFC(GreaterThan_WithFeedback, Compare_WithFeedback)                          \
757   TFC(LessThanOrEqual_WithFeedback, Compare_WithFeedback)                      \
758   TFC(GreaterThanOrEqual_WithFeedback, Compare_WithFeedback)                   \
759                                                                                \
760   /* Unary ops with feedback collection */                                     \
761   TFC(BitwiseNot_Baseline, UnaryOp_Baseline)                                   \
762   TFC(Decrement_Baseline, UnaryOp_Baseline)                                    \
763   TFC(Increment_Baseline, UnaryOp_Baseline)                                    \
764   TFC(Negate_Baseline, UnaryOp_Baseline)                                       \
765   TFC(BitwiseNot_WithFeedback, UnaryOp_WithFeedback)                           \
766   TFC(Decrement_WithFeedback, UnaryOp_WithFeedback)                            \
767   TFC(Increment_WithFeedback, UnaryOp_WithFeedback)                            \
768   TFC(Negate_WithFeedback, UnaryOp_WithFeedback)                               \
769                                                                                \
770   /* Object */                                                                 \
771   /* ES #sec-object-constructor */                                             \
772   TFJ(ObjectAssign, kDontAdaptArgumentsSentinel)                               \
773   /* ES #sec-object.create */                                                  \
774   TFJ(ObjectCreate, kDontAdaptArgumentsSentinel)                               \
775   CPP(ObjectDefineGetter)                                                      \
776   CPP(ObjectDefineProperties)                                                  \
777   CPP(ObjectDefineProperty)                                                    \
778   CPP(ObjectDefineSetter)                                                      \
779   TFJ(ObjectEntries, kJSArgcReceiverSlots + 1, kReceiver, kObject)             \
780   CPP(ObjectFreeze)                                                            \
781   TFJ(ObjectGetOwnPropertyDescriptor, kDontAdaptArgumentsSentinel)             \
782   CPP(ObjectGetOwnPropertyDescriptors)                                         \
783   TFJ(ObjectGetOwnPropertyNames, kJSArgcReceiverSlots + 1, kReceiver, kObject) \
784   CPP(ObjectGetOwnPropertySymbols)                                             \
785   TFJ(ObjectHasOwn, kJSArgcReceiverSlots + 2, kReceiver, kObject, kKey)        \
786   TFJ(ObjectIs, kJSArgcReceiverSlots + 2, kReceiver, kLeft, kRight)            \
787   CPP(ObjectIsFrozen)                                                          \
788   CPP(ObjectIsSealed)                                                          \
789   TFJ(ObjectKeys, kJSArgcReceiverSlots + 1, kReceiver, kObject)                \
790   CPP(ObjectLookupGetter)                                                      \
791   CPP(ObjectLookupSetter)                                                      \
792   /* ES6 #sec-object.prototype.hasownproperty */                               \
793   TFJ(ObjectPrototypeHasOwnProperty, kJSArgcReceiverSlots + 1, kReceiver,      \
794       kKey)                                                                    \
795   TFJ(ObjectPrototypeIsPrototypeOf, kJSArgcReceiverSlots + 1, kReceiver,       \
796       kValue)                                                                  \
797   CPP(ObjectPrototypePropertyIsEnumerable)                                     \
798   CPP(ObjectPrototypeGetProto)                                                 \
799   CPP(ObjectPrototypeSetProto)                                                 \
800   CPP(ObjectSeal)                                                              \
801   TFS(ObjectToString, kReceiver)                                               \
802   TFJ(ObjectValues, kJSArgcReceiverSlots + 1, kReceiver, kObject)              \
803                                                                                \
804   /* instanceof */                                                             \
805   TFC(OrdinaryHasInstance, Compare)                                            \
806   TFC(InstanceOf, Compare)                                                     \
807   TFC(InstanceOf_WithFeedback, Compare_WithFeedback)                           \
808   TFC(InstanceOf_Baseline, Compare_Baseline)                                   \
809                                                                                \
810   /* for-in */                                                                 \
811   TFS(ForInEnumerate, kReceiver)                                               \
812   TFC(ForInPrepare, ForInPrepare)                                              \
813   TFS(ForInFilter, kKey, kObject)                                              \
814                                                                                \
815   /* Reflect */                                                                \
816   ASM(ReflectApply, JSTrampoline)                                              \
817   ASM(ReflectConstruct, JSTrampoline)                                          \
818   CPP(ReflectDefineProperty)                                                   \
819   CPP(ReflectGetOwnPropertyDescriptor)                                         \
820   CPP(ReflectOwnKeys)                                                          \
821   CPP(ReflectSet)                                                              \
822                                                                                \
823   /* RegExp */                                                                 \
824   CPP(RegExpCapture1Getter)                                                    \
825   CPP(RegExpCapture2Getter)                                                    \
826   CPP(RegExpCapture3Getter)                                                    \
827   CPP(RegExpCapture4Getter)                                                    \
828   CPP(RegExpCapture5Getter)                                                    \
829   CPP(RegExpCapture6Getter)                                                    \
830   CPP(RegExpCapture7Getter)                                                    \
831   CPP(RegExpCapture8Getter)                                                    \
832   CPP(RegExpCapture9Getter)                                                    \
833   /* ES #sec-regexp-pattern-flags */                                           \
834   TFJ(RegExpConstructor, kJSArgcReceiverSlots + 2, kReceiver, kPattern,        \
835       kFlags)                                                                  \
836   CPP(RegExpInputGetter)                                                       \
837   CPP(RegExpInputSetter)                                                       \
838   CPP(RegExpLastMatchGetter)                                                   \
839   CPP(RegExpLastParenGetter)                                                   \
840   CPP(RegExpLeftContextGetter)                                                 \
841   /* ES #sec-regexp.prototype.compile */                                       \
842   TFJ(RegExpPrototypeCompile, kJSArgcReceiverSlots + 2, kReceiver, kPattern,   \
843       kFlags)                                                                  \
844   CPP(RegExpPrototypeToString)                                                 \
845   CPP(RegExpRightContextGetter)                                                \
846                                                                                \
847   /* RegExp helpers */                                                         \
848   TFS(RegExpExecAtom, kRegExp, kString, kLastIndex, kMatchInfo)                \
849   TFS(RegExpExecInternal, kRegExp, kString, kLastIndex, kMatchInfo)            \
850   ASM(RegExpInterpreterTrampoline, CCall)                                      \
851   ASM(RegExpExperimentalTrampoline, CCall)                                     \
852                                                                                \
853   /* Set */                                                                    \
854   TFJ(SetConstructor, kDontAdaptArgumentsSentinel)                             \
855   TFJ(SetPrototypeHas, kJSArgcReceiverSlots + 1, kReceiver, kKey)              \
856   TFJ(SetPrototypeAdd, kJSArgcReceiverSlots + 1, kReceiver, kKey)              \
857   TFJ(SetPrototypeDelete, kJSArgcReceiverSlots + 1, kReceiver, kKey)           \
858   CPP(SetPrototypeClear)                                                       \
859   /* ES #sec-set.prototype.entries */                                          \
860   TFJ(SetPrototypeEntries, kJSArgcReceiverSlots, kReceiver)                    \
861   /* ES #sec-get-set.prototype.size */                                         \
862   TFJ(SetPrototypeGetSize, kJSArgcReceiverSlots, kReceiver)                    \
863   /* ES #sec-set.prototype.foreach */                                          \
864   TFJ(SetPrototypeForEach, kDontAdaptArgumentsSentinel)                        \
865   /* ES #sec-set.prototype.values */                                           \
866   TFJ(SetPrototypeValues, kJSArgcReceiverSlots, kReceiver)                     \
867   /* ES #sec-%setiteratorprototype%.next */                                    \
868   TFJ(SetIteratorPrototypeNext, kJSArgcReceiverSlots, kReceiver)               \
869   TFS(SetOrSetIteratorToList, kSource)                                         \
870                                                                                \
871   /* ShadowRealm */                                                            \
872   CPP(ShadowRealmConstructor)                                                  \
873   TFS(ShadowRealmGetWrappedValue, kCreationContext, kTargetContext, kValue)    \
874   CPP(ShadowRealmPrototypeEvaluate)                                            \
875   CPP(ShadowRealmPrototypeImportValue)                                         \
876                                                                                \
877   /* SharedArrayBuffer */                                                      \
878   CPP(SharedArrayBufferPrototypeGetByteLength)                                 \
879   CPP(SharedArrayBufferPrototypeSlice)                                         \
880   /* https://tc39.es/proposal-resizablearraybuffer/ */                         \
881   CPP(SharedArrayBufferPrototypeGrow)                                          \
882                                                                                \
883   TFJ(AtomicsLoad, kJSArgcReceiverSlots + 2, kReceiver, kArrayOrSharedStruct,  \
884       kIndexOrFieldName)                                                       \
885   TFJ(AtomicsStore, kJSArgcReceiverSlots + 3, kReceiver, kArrayOrSharedStruct, \
886       kIndexOrFieldName, kValue)                                               \
887   TFJ(AtomicsExchange, kJSArgcReceiverSlots + 3, kReceiver,                    \
888       kArrayOrSharedStruct, kIndexOrFieldName, kValue)                         \
889   TFJ(AtomicsCompareExchange, kJSArgcReceiverSlots + 4, kReceiver, kArray,     \
890       kIndex, kOldValue, kNewValue)                                            \
891   TFJ(AtomicsAdd, kJSArgcReceiverSlots + 3, kReceiver, kArray, kIndex, kValue) \
892   TFJ(AtomicsSub, kJSArgcReceiverSlots + 3, kReceiver, kArray, kIndex, kValue) \
893   TFJ(AtomicsAnd, kJSArgcReceiverSlots + 3, kReceiver, kArray, kIndex, kValue) \
894   TFJ(AtomicsOr, kJSArgcReceiverSlots + 3, kReceiver, kArray, kIndex, kValue)  \
895   TFJ(AtomicsXor, kJSArgcReceiverSlots + 3, kReceiver, kArray, kIndex, kValue) \
896   CPP(AtomicsNotify)                                                           \
897   CPP(AtomicsIsLockFree)                                                       \
898   CPP(AtomicsWait)                                                             \
899   CPP(AtomicsWaitAsync)                                                        \
900                                                                                \
901   /* String */                                                                 \
902   /* ES #sec-string.fromcodepoint */                                           \
903   CPP(StringFromCodePoint)                                                     \
904   /* ES6 #sec-string.fromcharcode */                                           \
905   TFJ(StringFromCharCode, kDontAdaptArgumentsSentinel)                         \
906   /* ES6 #sec-string.prototype.lastindexof */                                  \
907   CPP(StringPrototypeLastIndexOf)                                              \
908   /* ES #sec-string.prototype.matchAll */                                      \
909   TFJ(StringPrototypeMatchAll, kJSArgcReceiverSlots + 1, kReceiver, kRegexp)   \
910   /* ES6 #sec-string.prototype.localecompare */                                \
911   CPP(StringPrototypeLocaleCompare)                                            \
912   /* ES6 #sec-string.prototype.replace */                                      \
913   TFJ(StringPrototypeReplace, kJSArgcReceiverSlots + 2, kReceiver, kSearch,    \
914       kReplace)                                                                \
915   /* ES6 #sec-string.prototype.split */                                        \
916   TFJ(StringPrototypeSplit, kDontAdaptArgumentsSentinel)                       \
917   /* ES6 #sec-string.raw */                                                    \
918   CPP(StringRaw)                                                               \
919                                                                                \
920   /* Symbol */                                                                 \
921   /* ES #sec-symbol-constructor */                                             \
922   CPP(SymbolConstructor)                                                       \
923   /* ES6 #sec-symbol.for */                                                    \
924   CPP(SymbolFor)                                                               \
925   /* ES6 #sec-symbol.keyfor */                                                 \
926   CPP(SymbolKeyFor)                                                            \
927                                                                                \
928   /* TypedArray */                                                             \
929   /* ES #sec-typedarray-constructors */                                        \
930   TFJ(TypedArrayBaseConstructor, kJSArgcReceiverSlots, kReceiver)              \
931   TFJ(TypedArrayConstructor, kDontAdaptArgumentsSentinel)                      \
932   CPP(TypedArrayPrototypeBuffer)                                               \
933   /* ES6 #sec-get-%typedarray%.prototype.bytelength */                         \
934   TFJ(TypedArrayPrototypeByteLength, kJSArgcReceiverSlots, kReceiver)          \
935   /* ES6 #sec-get-%typedarray%.prototype.byteoffset */                         \
936   TFJ(TypedArrayPrototypeByteOffset, kJSArgcReceiverSlots, kReceiver)          \
937   /* ES6 #sec-get-%typedarray%.prototype.length */                             \
938   TFJ(TypedArrayPrototypeLength, kJSArgcReceiverSlots, kReceiver)              \
939   /* ES6 #sec-%typedarray%.prototype.copywithin */                             \
940   CPP(TypedArrayPrototypeCopyWithin)                                           \
941   /* ES6 #sec-%typedarray%.prototype.fill */                                   \
942   CPP(TypedArrayPrototypeFill)                                                 \
943   /* ES7 #sec-%typedarray%.prototype.includes */                               \
944   CPP(TypedArrayPrototypeIncludes)                                             \
945   /* ES6 #sec-%typedarray%.prototype.indexof */                                \
946   CPP(TypedArrayPrototypeIndexOf)                                              \
947   /* ES6 #sec-%typedarray%.prototype.lastindexof */                            \
948   CPP(TypedArrayPrototypeLastIndexOf)                                          \
949   /* ES6 #sec-%typedarray%.prototype.reverse */                                \
950   CPP(TypedArrayPrototypeReverse)                                              \
951   /* ES6 #sec-get-%typedarray%.prototype-@@tostringtag */                      \
952   TFJ(TypedArrayPrototypeToStringTag, kJSArgcReceiverSlots, kReceiver)         \
953   /* ES6 %TypedArray%.prototype.map */                                         \
954   TFJ(TypedArrayPrototypeMap, kDontAdaptArgumentsSentinel)                     \
955                                                                                \
956   /* Wasm */                                                                   \
957   IF_WASM(ASM, GenericJSToWasmWrapper, Dummy)                                  \
958   IF_WASM(ASM, WasmReturnPromiseOnSuspend, Dummy)                              \
959   IF_WASM(ASM, WasmSuspend, WasmSuspend)                                       \
960   IF_WASM(ASM, WasmResume, Dummy)                                              \
961   IF_WASM(ASM, WasmCompileLazy, Dummy)                                         \
962   IF_WASM(ASM, WasmDebugBreak, Dummy)                                          \
963   IF_WASM(ASM, WasmOnStackReplace, Dummy)                                      \
964   IF_WASM(TFC, WasmFloat32ToNumber, WasmFloat32ToNumber)                       \
965   IF_WASM(TFC, WasmFloat64ToNumber, WasmFloat64ToNumber)                       \
966   IF_WASM(TFC, WasmI32AtomicWait32, WasmI32AtomicWait32)                       \
967   IF_WASM(TFC, WasmI64AtomicWait32, WasmI64AtomicWait32)                       \
968   IF_WASM(TFC, JSToWasmLazyDeoptContinuation, SingleParameterOnStack)          \
969                                                                                \
970   /* WeakMap */                                                                \
971   TFJ(WeakMapConstructor, kDontAdaptArgumentsSentinel)                         \
972   TFS(WeakMapLookupHashIndex, kTable, kKey)                                    \
973   TFJ(WeakMapGet, kJSArgcReceiverSlots + 1, kReceiver, kKey)                   \
974   TFJ(WeakMapPrototypeHas, kJSArgcReceiverSlots + 1, kReceiver, kKey)          \
975   TFJ(WeakMapPrototypeSet, kJSArgcReceiverSlots + 2, kReceiver, kKey, kValue)  \
976   TFJ(WeakMapPrototypeDelete, kJSArgcReceiverSlots + 1, kReceiver, kKey)       \
977                                                                                \
978   /* WeakSet */                                                                \
979   TFJ(WeakSetConstructor, kDontAdaptArgumentsSentinel)                         \
980   TFJ(WeakSetPrototypeHas, kJSArgcReceiverSlots + 1, kReceiver, kKey)          \
981   TFJ(WeakSetPrototypeAdd, kJSArgcReceiverSlots + 1, kReceiver, kValue)        \
982   TFJ(WeakSetPrototypeDelete, kJSArgcReceiverSlots + 1, kReceiver, kValue)     \
983                                                                                \
984   /* WeakSet / WeakMap Helpers */                                              \
985   TFS(WeakCollectionDelete, kCollection, kKey)                                 \
986   TFS(WeakCollectionSet, kCollection, kKey, kValue)                            \
987                                                                                \
988   /* JS Structs */                                                             \
989   CPP(SharedStructTypeConstructor)                                             \
990   CPP(SharedStructConstructor)                                                 \
991                                                                                \
992   /* AsyncGenerator */                                                         \
993                                                                                \
994   TFS(AsyncGeneratorResolve, kGenerator, kValue, kDone)                        \
995   TFS(AsyncGeneratorReject, kGenerator, kValue)                                \
996   TFS(AsyncGeneratorYield, kGenerator, kValue, kIsCaught)                      \
997   TFS(AsyncGeneratorReturn, kGenerator, kValue, kIsCaught)                     \
998   TFS(AsyncGeneratorResumeNext, kGenerator)                                    \
999                                                                                \
1000   /* AsyncGeneratorFunction( p1, p2, ... pn, body ) */                         \
1001   /* proposal-async-iteration/#sec-asyncgeneratorfunction-constructor */       \
1002   CPP(AsyncGeneratorFunctionConstructor)                                       \
1003   /* AsyncGenerator.prototype.next ( value ) */                                \
1004   /* proposal-async-iteration/#sec-asyncgenerator-prototype-next */            \
1005   TFJ(AsyncGeneratorPrototypeNext, kDontAdaptArgumentsSentinel)                \
1006   /* AsyncGenerator.prototype.return ( value ) */                              \
1007   /* proposal-async-iteration/#sec-asyncgenerator-prototype-return */          \
1008   TFJ(AsyncGeneratorPrototypeReturn, kDontAdaptArgumentsSentinel)              \
1009   /* AsyncGenerator.prototype.throw ( exception ) */                           \
1010   /* proposal-async-iteration/#sec-asyncgenerator-prototype-throw */           \
1011   TFJ(AsyncGeneratorPrototypeThrow, kDontAdaptArgumentsSentinel)               \
1012                                                                                \
1013   /* Await (proposal-async-iteration/#await), with resume behaviour */         \
1014   /* specific to Async Generators. Internal / Not exposed to JS code. */       \
1015   TFS(AsyncGeneratorAwaitCaught, kAsyncGeneratorObject, kValue)                \
1016   TFS(AsyncGeneratorAwaitUncaught, kAsyncGeneratorObject, kValue)              \
1017   TFJ(AsyncGeneratorAwaitResolveClosure, kJSArgcReceiverSlots + 1, kReceiver,  \
1018       kValue)                                                                  \
1019   TFJ(AsyncGeneratorAwaitRejectClosure, kJSArgcReceiverSlots + 1, kReceiver,   \
1020       kValue)                                                                  \
1021   TFJ(AsyncGeneratorYieldResolveClosure, kJSArgcReceiverSlots + 1, kReceiver,  \
1022       kValue)                                                                  \
1023   TFJ(AsyncGeneratorReturnClosedResolveClosure, kJSArgcReceiverSlots + 1,      \
1024       kReceiver, kValue)                                                       \
1025   TFJ(AsyncGeneratorReturnClosedRejectClosure, kJSArgcReceiverSlots + 1,       \
1026       kReceiver, kValue)                                                       \
1027   TFJ(AsyncGeneratorReturnResolveClosure, kJSArgcReceiverSlots + 1, kReceiver, \
1028       kValue)                                                                  \
1029                                                                                \
1030   /* Async-from-Sync Iterator */                                               \
1031                                                                                \
1032   /* %AsyncFromSyncIteratorPrototype% */                                       \
1033   /* See tc39.github.io/proposal-async-iteration/ */                           \
1034   /* #sec-%asyncfromsynciteratorprototype%-object) */                          \
1035   TFJ(AsyncFromSyncIteratorPrototypeNext, kDontAdaptArgumentsSentinel)         \
1036   /* #sec-%asyncfromsynciteratorprototype%.throw */                            \
1037   TFJ(AsyncFromSyncIteratorPrototypeThrow, kDontAdaptArgumentsSentinel)        \
1038   /* #sec-%asyncfromsynciteratorprototype%.return */                           \
1039   TFJ(AsyncFromSyncIteratorPrototypeReturn, kDontAdaptArgumentsSentinel)       \
1040   /* #sec-async-iterator-value-unwrap-functions */                             \
1041   TFJ(AsyncIteratorValueUnwrap, kJSArgcReceiverSlots + 1, kReceiver, kValue)   \
1042                                                                                \
1043   /* CEntry */                                                                 \
1044   ASM(CEntry_Return1_DontSaveFPRegs_ArgvOnStack_NoBuiltinExit, Dummy)          \
1045   ASM(CEntry_Return1_DontSaveFPRegs_ArgvOnStack_BuiltinExit, Dummy)            \
1046   ASM(CEntry_Return1_DontSaveFPRegs_ArgvInRegister_NoBuiltinExit, Dummy)       \
1047   ASM(CEntry_Return1_SaveFPRegs_ArgvOnStack_NoBuiltinExit, Dummy)              \
1048   ASM(CEntry_Return1_SaveFPRegs_ArgvOnStack_BuiltinExit, Dummy)                \
1049   ASM(CEntry_Return2_DontSaveFPRegs_ArgvOnStack_NoBuiltinExit, Dummy)          \
1050   ASM(CEntry_Return2_DontSaveFPRegs_ArgvOnStack_BuiltinExit, Dummy)            \
1051   ASM(CEntry_Return2_DontSaveFPRegs_ArgvInRegister_NoBuiltinExit, Dummy)       \
1052   ASM(CEntry_Return2_SaveFPRegs_ArgvOnStack_NoBuiltinExit, Dummy)              \
1053   ASM(CEntry_Return2_SaveFPRegs_ArgvOnStack_BuiltinExit, Dummy)                \
1054   ASM(DirectCEntry, Dummy)                                                     \
1055                                                                                \
1056   /* String helpers */                                                         \
1057   TFS(StringAdd_CheckNone, kLeft, kRight)                                      \
1058   TFS(SubString, kString, kFrom, kTo)                                          \
1059                                                                                \
1060   /* Miscellaneous */                                                          \
1061   ASM(StackCheck, Dummy)                                                       \
1062   ASM(DoubleToI, Dummy)                                                        \
1063   TFC(GetProperty, GetProperty)                                                \
1064   TFS(GetPropertyWithReceiver, kObject, kKey, kReceiver, kOnNonExistent)       \
1065   TFS(SetProperty, kReceiver, kKey, kValue)                                    \
1066   TFS(CreateDataProperty, kReceiver, kKey, kValue)                             \
1067   ASM(MemCopyUint8Uint8, CCall)                                                \
1068   ASM(MemMove, CCall)                                                          \
1069                                                                                \
1070   /* Trace */                                                                  \
1071   CPP(IsTraceCategoryEnabled)                                                  \
1072   CPP(Trace)                                                                   \
1073                                                                                \
1074   /* Weak refs */                                                              \
1075   CPP(FinalizationRegistryUnregister)                                          \
1076                                                                                \
1077   /* Async modules */                                                          \
1078   TFJ(AsyncModuleEvaluate, kDontAdaptArgumentsSentinel)                        \
1079                                                                                \
1080   /* CallAsyncModule* are spec anonymyous functions */                         \
1081   CPP(CallAsyncModuleFulfilled)                                                \
1082   CPP(CallAsyncModuleRejected)                                                 \
1083                                                                                \
1084   /* Temporal */                                                               \
1085   /* Temporal #sec-temporal.now.timezone */                                    \
1086   CPP(TemporalNowTimeZone)                                                     \
1087   /* Temporal #sec-temporal.now.instant */                                     \
1088   CPP(TemporalNowInstant)                                                      \
1089   /* Temporal #sec-temporal.now.plaindatetime */                               \
1090   CPP(TemporalNowPlainDateTime)                                                \
1091   /* Temporal #sec-temporal.now.plaindatetimeiso */                            \
1092   CPP(TemporalNowPlainDateTimeISO)                                             \
1093   /* Temporal #sec-temporal.now.zoneddatetime */                               \
1094   CPP(TemporalNowZonedDateTime)                                                \
1095   /* Temporal #sec-temporal.now.zoneddatetimeiso */                            \
1096   CPP(TemporalNowZonedDateTimeISO)                                             \
1097   /* Temporal #sec-temporal.now.plaindate */                                   \
1098   CPP(TemporalNowPlainDate)                                                    \
1099   /* Temporal #sec-temporal.now.plaindateiso */                                \
1100   CPP(TemporalNowPlainDateISO)                                                 \
1101   /* There are no Temporal.now.plainTime */                                    \
1102   /* See https://github.com/tc39/proposal-temporal/issues/1540 */              \
1103   /* Temporal #sec-temporal.now.plaintimeiso */                                \
1104   CPP(TemporalNowPlainTimeISO)                                                 \
1105                                                                                \
1106   /* Temporal.PlaneDate */                                                     \
1107   /* Temporal #sec-temporal.plaindate */                                       \
1108   CPP(TemporalPlainDateConstructor)                                            \
1109   /* Temporal #sec-temporal.plaindate.from */                                  \
1110   CPP(TemporalPlainDateFrom)                                                   \
1111   /* Temporal #sec-temporal.plaindate.compare */                               \
1112   CPP(TemporalPlainDateCompare)                                                \
1113   /* Temporal #sec-get-temporal.plaindate.prototype.calendar */                \
1114   CPP(TemporalPlainDatePrototypeCalendar)                                      \
1115   /* Temporal #sec-get-temporal.plaindate.prototype.year */                    \
1116   CPP(TemporalPlainDatePrototypeYear)                                          \
1117   /* Temporal #sec-get-temporal.plaindate.prototype.month */                   \
1118   CPP(TemporalPlainDatePrototypeMonth)                                         \
1119   /* Temporal #sec-get-temporal.plaindate.prototype.monthcode */               \
1120   CPP(TemporalPlainDatePrototypeMonthCode)                                     \
1121   /* Temporal #sec-get-temporal.plaindate.prototype.day */                     \
1122   CPP(TemporalPlainDatePrototypeDay)                                           \
1123   /* Temporal #sec-get-temporal.plaindate.prototype.dayofweek */               \
1124   CPP(TemporalPlainDatePrototypeDayOfWeek)                                     \
1125   /* Temporal #sec-get-temporal.plaindate.prototype.dayofyear */               \
1126   CPP(TemporalPlainDatePrototypeDayOfYear)                                     \
1127   /* Temporal #sec-get-temporal.plaindate.prototype.weekofyear */              \
1128   CPP(TemporalPlainDatePrototypeWeekOfYear)                                    \
1129   /* Temporal #sec-get-temporal.plaindate.prototype.daysinweek */              \
1130   CPP(TemporalPlainDatePrototypeDaysInWeek)                                    \
1131   /* Temporal #sec-get-temporal.plaindate.prototype.daysinmonth */             \
1132   CPP(TemporalPlainDatePrototypeDaysInMonth)                                   \
1133   /* Temporal #sec-get-temporal.plaindate.prototype.daysinyear */              \
1134   CPP(TemporalPlainDatePrototypeDaysInYear)                                    \
1135   /* Temporal #sec-get-temporal.plaindate.prototype.monthsinyear */            \
1136   CPP(TemporalPlainDatePrototypeMonthsInYear)                                  \
1137   /* Temporal #sec-get-temporal.plaindate.prototype.inleapyear */              \
1138   CPP(TemporalPlainDatePrototypeInLeapYear)                                    \
1139   /* Temporal #sec-temporal.plaindate.prototype.toplainyearmonth */            \
1140   CPP(TemporalPlainDatePrototypeToPlainYearMonth)                              \
1141   /* Temporal #sec-temporal.plaindate.prototype.toplainmonthday */             \
1142   CPP(TemporalPlainDatePrototypeToPlainMonthDay)                               \
1143   /* Temporal #sec-temporal.plaindate.prototype.getisofields */                \
1144   CPP(TemporalPlainDatePrototypeGetISOFields)                                  \
1145   /* Temporal #sec-temporal.plaindate.prototype.add */                         \
1146   CPP(TemporalPlainDatePrototypeAdd)                                           \
1147   /* Temporal #sec-temporal.plaindate.prototype.substract */                   \
1148   CPP(TemporalPlainDatePrototypeSubtract)                                      \
1149   /* Temporal #sec-temporal.plaindate.prototype.with */                        \
1150   CPP(TemporalPlainDatePrototypeWith)                                          \
1151   /* Temporal #sec-temporal.plaindate.prototype.withcalendar */                \
1152   CPP(TemporalPlainDatePrototypeWithCalendar)                                  \
1153   /* Temporal #sec-temporal.plaindate.prototype.until */                       \
1154   CPP(TemporalPlainDatePrototypeUntil)                                         \
1155   /* Temporal #sec-temporal.plaindate.prototype.since */                       \
1156   CPP(TemporalPlainDatePrototypeSince)                                         \
1157   /* Temporal #sec-temporal.plaindate.prototype.equals */                      \
1158   CPP(TemporalPlainDatePrototypeEquals)                                        \
1159   /* Temporal #sec-temporal.plaindate.prototype.toplaindatetime */             \
1160   CPP(TemporalPlainDatePrototypeToPlainDateTime)                               \
1161   /* Temporal #sec-temporal.plaindate.prototype.tozoneddatetime */             \
1162   CPP(TemporalPlainDatePrototypeToZonedDateTime)                               \
1163   /* Temporal #sec-temporal.plaindate.prototype.tostring */                    \
1164   CPP(TemporalPlainDatePrototypeToString)                                      \
1165   /* Temporal #sec-temporal.plaindate.prototype.tojson */                      \
1166   CPP(TemporalPlainDatePrototypeToJSON)                                        \
1167   /* Temporal #sec-temporal.plaindate.prototype.valueof */                     \
1168   CPP(TemporalPlainDatePrototypeValueOf)                                       \
1169                                                                                \
1170   /* Temporal.PlaneTime */                                                     \
1171   /* Temporal #sec-temporal.plaintime */                                       \
1172   CPP(TemporalPlainTimeConstructor)                                            \
1173   /* Temporal #sec-temporal.plaintime.from */                                  \
1174   CPP(TemporalPlainTimeFrom)                                                   \
1175   /* Temporal #sec-temporal.plaintime.compare */                               \
1176   CPP(TemporalPlainTimeCompare)                                                \
1177   /* Temporal #sec-get-temporal.plaintime.prototype.calendar */                \
1178   CPP(TemporalPlainTimePrototypeCalendar)                                      \
1179   /* Temporal #sec-get-temporal.plaintime.prototype.hour */                    \
1180   CPP(TemporalPlainTimePrototypeHour)                                          \
1181   /* Temporal #sec-get-temporal.plaintime.prototype.minute */                  \
1182   CPP(TemporalPlainTimePrototypeMinute)                                        \
1183   /* Temporal #sec-get-temporal.plaintime.prototype.second */                  \
1184   CPP(TemporalPlainTimePrototypeSecond)                                        \
1185   /* Temporal #sec-get-temporal.plaintime.prototype.millisecond */             \
1186   CPP(TemporalPlainTimePrototypeMillisecond)                                   \
1187   /* Temporal #sec-get-temporal.plaintime.prototype.microsecond */             \
1188   CPP(TemporalPlainTimePrototypeMicrosecond)                                   \
1189   /* Temporal #sec-get-temporal.plaintime.prototype.nanoseond */               \
1190   CPP(TemporalPlainTimePrototypeNanosecond)                                    \
1191   /* Temporal #sec-temporal.plaintime.prototype.add */                         \
1192   CPP(TemporalPlainTimePrototypeAdd)                                           \
1193   /* Temporal #sec-temporal.plaintime.prototype.subtract */                    \
1194   CPP(TemporalPlainTimePrototypeSubtract)                                      \
1195   /* Temporal #sec-temporal.plaintime.prototype.with */                        \
1196   CPP(TemporalPlainTimePrototypeWith)                                          \
1197   /* Temporal #sec-temporal.plaintime.prototype.until */                       \
1198   CPP(TemporalPlainTimePrototypeUntil)                                         \
1199   /* Temporal #sec-temporal.plaintime.prototype.since */                       \
1200   CPP(TemporalPlainTimePrototypeSince)                                         \
1201   /* Temporal #sec-temporal.plaintime.prototype.round */                       \
1202   CPP(TemporalPlainTimePrototypeRound)                                         \
1203   /* Temporal #sec-temporal.plaintime.prototype.equals */                      \
1204   CPP(TemporalPlainTimePrototypeEquals)                                        \
1205   /* Temporal #sec-temporal.plaintime.prototype.toplaindatetime */             \
1206   CPP(TemporalPlainTimePrototypeToPlainDateTime)                               \
1207   /* Temporal #sec-temporal.plaintime.prototype.tozoneddatetime */             \
1208   CPP(TemporalPlainTimePrototypeToZonedDateTime)                               \
1209   /* Temporal #sec-temporal.plaintime.prototype.getisofields */                \
1210   CPP(TemporalPlainTimePrototypeGetISOFields)                                  \
1211   /* Temporal #sec-temporal.plaintime.prototype.tostring */                    \
1212   CPP(TemporalPlainTimePrototypeToString)                                      \
1213   /* Temporal #sec-temporal.plaindtimeprototype.tojson */                      \
1214   CPP(TemporalPlainTimePrototypeToJSON)                                        \
1215   /* Temporal #sec-temporal.plaintime.prototype.valueof */                     \
1216   CPP(TemporalPlainTimePrototypeValueOf)                                       \
1217                                                                                \
1218   /* Temporal.PlaneDateTime */                                                 \
1219   /* Temporal #sec-temporal.plaindatetime */                                   \
1220   CPP(TemporalPlainDateTimeConstructor)                                        \
1221   /* Temporal #sec-temporal.plaindatetime.from */                              \
1222   CPP(TemporalPlainDateTimeFrom)                                               \
1223   /* Temporal #sec-temporal.plaindatetime.compare */                           \
1224   CPP(TemporalPlainDateTimeCompare)                                            \
1225   /* Temporal #sec-get-temporal.plaindatetime.prototype.calendar */            \
1226   CPP(TemporalPlainDateTimePrototypeCalendar)                                  \
1227   /* Temporal #sec-get-temporal.plaindatetime.prototype.year */                \
1228   CPP(TemporalPlainDateTimePrototypeYear)                                      \
1229   /* Temporal #sec-get-temporal.plaindatetime.prototype.month */               \
1230   CPP(TemporalPlainDateTimePrototypeMonth)                                     \
1231   /* Temporal #sec-get-temporal.plaindatetime.prototype.monthcode */           \
1232   CPP(TemporalPlainDateTimePrototypeMonthCode)                                 \
1233   /* Temporal #sec-get-temporal.plaindatetime.prototype.day */                 \
1234   CPP(TemporalPlainDateTimePrototypeDay)                                       \
1235   /* Temporal #sec-get-temporal.plaindatetime.prototype.hour */                \
1236   CPP(TemporalPlainDateTimePrototypeHour)                                      \
1237   /* Temporal #sec-get-temporal.plaindatetime.prototype.minute */              \
1238   CPP(TemporalPlainDateTimePrototypeMinute)                                    \
1239   /* Temporal #sec-get-temporal.plaindatetime.prototype.second */              \
1240   CPP(TemporalPlainDateTimePrototypeSecond)                                    \
1241   /* Temporal #sec-get-temporal.plaindatetime.prototype.millisecond */         \
1242   CPP(TemporalPlainDateTimePrototypeMillisecond)                               \
1243   /* Temporal #sec-get-temporal.plaindatetime.prototype.microsecond */         \
1244   CPP(TemporalPlainDateTimePrototypeMicrosecond)                               \
1245   /* Temporal #sec-get-temporal.plaindatetime.prototype.nanosecond */          \
1246   CPP(TemporalPlainDateTimePrototypeNanosecond)                                \
1247   /* Temporal #sec-get-temporal.plaindatetime.prototype.dayofweek */           \
1248   CPP(TemporalPlainDateTimePrototypeDayOfWeek)                                 \
1249   /* Temporal #sec-get-temporal.plaindatetime.prototype.dayofyear */           \
1250   CPP(TemporalPlainDateTimePrototypeDayOfYear)                                 \
1251   /* Temporal #sec-get-temporal.plaindatetime.prototype.weekofyear */          \
1252   CPP(TemporalPlainDateTimePrototypeWeekOfYear)                                \
1253   /* Temporal #sec-get-temporal.plaindatetime.prototype.daysinweek */          \
1254   CPP(TemporalPlainDateTimePrototypeDaysInWeek)                                \
1255   /* Temporal #sec-get-temporal.plaindatetime.prototype.daysinmonth */         \
1256   CPP(TemporalPlainDateTimePrototypeDaysInMonth)                               \
1257   /* Temporal #sec-get-temporal.plaindatetime.prototype.daysinyear */          \
1258   CPP(TemporalPlainDateTimePrototypeDaysInYear)                                \
1259   /* Temporal #sec-get-temporal.plaindatetime.prototype.monthsinyear */        \
1260   CPP(TemporalPlainDateTimePrototypeMonthsInYear)                              \
1261   /* Temporal #sec-get-temporal.plaindatetime.prototype.inleapyear */          \
1262   CPP(TemporalPlainDateTimePrototypeInLeapYear)                                \
1263   /* Temporal #sec-temporal.plaindatetime.prototype.with */                    \
1264   CPP(TemporalPlainDateTimePrototypeWith)                                      \
1265   /* Temporal #sec-temporal.plaindatetime.prototype.withplainTime */           \
1266   CPP(TemporalPlainDateTimePrototypeWithPlainTime)                             \
1267   /* Temporal #sec-temporal.plaindatetime.prototype.withplainDate */           \
1268   CPP(TemporalPlainDateTimePrototypeWithPlainDate)                             \
1269   /* Temporal #sec-temporal.plaindatetime.prototype.withcalendar */            \
1270   CPP(TemporalPlainDateTimePrototypeWithCalendar)                              \
1271   /* Temporal #sec-temporal.plaindatetime.prototype.add */                     \
1272   CPP(TemporalPlainDateTimePrototypeAdd)                                       \
1273   /* Temporal #sec-temporal.plaindatetime.prototype.subtract */                \
1274   CPP(TemporalPlainDateTimePrototypeSubtract)                                  \
1275   /* Temporal #sec-temporal.plaindatetime.prototype.until */                   \
1276   CPP(TemporalPlainDateTimePrototypeUntil)                                     \
1277   /* Temporal #sec-temporal.plaindatetime.prototype.since */                   \
1278   CPP(TemporalPlainDateTimePrototypeSince)                                     \
1279   /* Temporal #sec-temporal.plaindatetime.prototype.round */                   \
1280   CPP(TemporalPlainDateTimePrototypeRound)                                     \
1281   /* Temporal #sec-temporal.plaindatetime.prototype.equals */                  \
1282   CPP(TemporalPlainDateTimePrototypeEquals)                                    \
1283   /* Temporal #sec-temporal.plaindatetime.prototype.tostring */                \
1284   CPP(TemporalPlainDateTimePrototypeToString)                                  \
1285   /* Temporal #sec-temporal.plainddatetimeprototype.tojson */                  \
1286   CPP(TemporalPlainDateTimePrototypeToJSON)                                    \
1287   /* Temporal #sec-temporal.plaindatetime.prototype.valueof */                 \
1288   CPP(TemporalPlainDateTimePrototypeValueOf)                                   \
1289   /* Temporal #sec-temporal.plaindatetime.prototype.tozoneddatetime */         \
1290   CPP(TemporalPlainDateTimePrototypeToZonedDateTime)                           \
1291   /* Temporal #sec-temporal.plaindatetime.prototype.toplaindate */             \
1292   CPP(TemporalPlainDateTimePrototypeToPlainDate)                               \
1293   /* Temporal #sec-temporal.plaindatetime.prototype.toplainyearmonth */        \
1294   CPP(TemporalPlainDateTimePrototypeToPlainYearMonth)                          \
1295   /* Temporal #sec-temporal.plaindatetime.prototype.toplainmonthday */         \
1296   CPP(TemporalPlainDateTimePrototypeToPlainMonthDay)                           \
1297   /* Temporal #sec-temporal.plaindatetime.prototype.toplaintime */             \
1298   CPP(TemporalPlainDateTimePrototypeToPlainTime)                               \
1299   /* Temporal #sec-temporal.plaindatetime.prototype.getisofields */            \
1300   CPP(TemporalPlainDateTimePrototypeGetISOFields)                              \
1301                                                                                \
1302   /* Temporal.ZonedDateTime */                                                 \
1303   /* Temporal #sec-temporal.zoneddatetime */                                   \
1304   CPP(TemporalZonedDateTimeConstructor)                                        \
1305   /* Temporal #sec-temporal.zoneddatetime.from */                              \
1306   CPP(TemporalZonedDateTimeFrom)                                               \
1307   /* Temporal #sec-temporal.zoneddatetime.compare */                           \
1308   CPP(TemporalZonedDateTimeCompare)                                            \
1309   /* Temporal #sec-get-temporal.zoneddatetime.prototype.calendar */            \
1310   CPP(TemporalZonedDateTimePrototypeCalendar)                                  \
1311   /* Temporal #sec-get-temporal.zoneddatetime.prototype.timezone */            \
1312   CPP(TemporalZonedDateTimePrototypeTimeZone)                                  \
1313   /* Temporal #sec-get-temporal.zoneddatetime.prototype.year */                \
1314   CPP(TemporalZonedDateTimePrototypeYear)                                      \
1315   /* Temporal #sec-get-temporal.zoneddatetime.prototype.month */               \
1316   CPP(TemporalZonedDateTimePrototypeMonth)                                     \
1317   /* Temporal #sec-get-temporal.zoneddatetime.prototype.monthcode */           \
1318   CPP(TemporalZonedDateTimePrototypeMonthCode)                                 \
1319   /* Temporal #sec-get-temporal.zoneddatetime.prototype.day */                 \
1320   CPP(TemporalZonedDateTimePrototypeDay)                                       \
1321   /* Temporal #sec-get-temporal.zoneddatetime.prototype.hour */                \
1322   CPP(TemporalZonedDateTimePrototypeHour)                                      \
1323   /* Temporal #sec-get-temporal.zoneddatetime.prototype.minute */              \
1324   CPP(TemporalZonedDateTimePrototypeMinute)                                    \
1325   /* Temporal #sec-get-temporal.zoneddatetime.prototype.second */              \
1326   CPP(TemporalZonedDateTimePrototypeSecond)                                    \
1327   /* Temporal #sec-get-temporal.zoneddatetime.prototype.millisecond */         \
1328   CPP(TemporalZonedDateTimePrototypeMillisecond)                               \
1329   /* Temporal #sec-get-temporal.zoneddatetime.prototype.microsecond */         \
1330   CPP(TemporalZonedDateTimePrototypeMicrosecond)                               \
1331   /* Temporal #sec-get-temporal.zoneddatetime.prototype.nanosecond */          \
1332   CPP(TemporalZonedDateTimePrototypeNanosecond)                                \
1333   /* Temporal #sec-get-temporal.zoneddatetime.prototype.epochsecond */         \
1334   CPP(TemporalZonedDateTimePrototypeEpochSeconds)                              \
1335   /* Temporal #sec-get-temporal.zoneddatetime.prototype.epochmilliseconds */   \
1336   CPP(TemporalZonedDateTimePrototypeEpochMilliseconds)                         \
1337   /* Temporal #sec-get-temporal.zoneddatetime.prototype.epochmicroseconds */   \
1338   CPP(TemporalZonedDateTimePrototypeEpochMicroseconds)                         \
1339   /* Temporal #sec-get-temporal.zoneddatetime.prototype.epochnanoseconds */    \
1340   CPP(TemporalZonedDateTimePrototypeEpochNanoseconds)                          \
1341   /* Temporal #sec-get-temporal.zoneddatetime.prototype.dayofweek */           \
1342   CPP(TemporalZonedDateTimePrototypeDayOfWeek)                                 \
1343   /* Temporal #sec-get-temporal.zoneddatetime.prototype.dayofyear */           \
1344   CPP(TemporalZonedDateTimePrototypeDayOfYear)                                 \
1345   /* Temporal #sec-get-temporal.zoneddatetime.prototype.weekofyear */          \
1346   CPP(TemporalZonedDateTimePrototypeWeekOfYear)                                \
1347   /* Temporal #sec-get-temporal.zoneddatetime.prototype.hoursinday */          \
1348   CPP(TemporalZonedDateTimePrototypeHoursInDay)                                \
1349   /* Temporal #sec-get-temporal.zoneddatetime.prototype.daysinweek */          \
1350   CPP(TemporalZonedDateTimePrototypeDaysInWeek)                                \
1351   /* Temporal #sec-get-temporal.zoneddatetime.prototype.daysinmonth */         \
1352   CPP(TemporalZonedDateTimePrototypeDaysInMonth)                               \
1353   /* Temporal #sec-get-temporal.zoneddatetime.prototype.daysinyear */          \
1354   CPP(TemporalZonedDateTimePrototypeDaysInYear)                                \
1355   /* Temporal #sec-get-temporal.zoneddatetime.prototype.monthsinyear */        \
1356   CPP(TemporalZonedDateTimePrototypeMonthsInYear)                              \
1357   /* Temporal #sec-get-temporal.zoneddatetime.prototype.inleapyear */          \
1358   CPP(TemporalZonedDateTimePrototypeInLeapYear)                                \
1359   /* Temporal #sec-get-temporal.zoneddatetime.prototype.offsetnanoseconds */   \
1360   CPP(TemporalZonedDateTimePrototypeOffsetNanoseconds)                         \
1361   /* Temporal #sec-get-temporal.zoneddatetime.prototype.offset */              \
1362   CPP(TemporalZonedDateTimePrototypeOffset)                                    \
1363   /* Temporal #sec-temporal.zoneddatetime.prototype.with */                    \
1364   CPP(TemporalZonedDateTimePrototypeWith)                                      \
1365   /* Temporal #sec-temporal.zoneddatetime.prototype.withplaintime */           \
1366   CPP(TemporalZonedDateTimePrototypeWithPlainTime)                             \
1367   /* Temporal #sec-temporal.zoneddatetime.prototype.withplaindate */           \
1368   CPP(TemporalZonedDateTimePrototypeWithPlainDate)                             \
1369   /* Temporal #sec-temporal.zoneddatetime.prototype.withtimezone */            \
1370   CPP(TemporalZonedDateTimePrototypeWithTimeZone)                              \
1371   /* Temporal #sec-temporal.zoneddatetime.prototype.withcalendar */            \
1372   CPP(TemporalZonedDateTimePrototypeWithCalendar)                              \
1373   /* Temporal #sec-temporal.zoneddatetime.prototype.add */                     \
1374   CPP(TemporalZonedDateTimePrototypeAdd)                                       \
1375   /* Temporal #sec-temporal.zoneddatetime.prototype.subtract */                \
1376   CPP(TemporalZonedDateTimePrototypeSubtract)                                  \
1377   /* Temporal #sec-temporal.zoneddatetime.prototype.until */                   \
1378   CPP(TemporalZonedDateTimePrototypeUntil)                                     \
1379   /* Temporal #sec-temporal.zoneddatetime.prototype.since */                   \
1380   CPP(TemporalZonedDateTimePrototypeSince)                                     \
1381   /* Temporal #sec-temporal.zoneddatetime.prototype.round */                   \
1382   CPP(TemporalZonedDateTimePrototypeRound)                                     \
1383   /* Temporal #sec-temporal.zoneddatetime.prototype.equals */                  \
1384   CPP(TemporalZonedDateTimePrototypeEquals)                                    \
1385   /* Temporal #sec-temporal.zoneddatetime.prototype.tostring */                \
1386   CPP(TemporalZonedDateTimePrototypeToString)                                  \
1387   /* Temporal #sec-temporal.zonedddatetimeprototype.tojson */                  \
1388   CPP(TemporalZonedDateTimePrototypeToJSON)                                    \
1389   /* Temporal #sec-temporal.zoneddatetime.prototype.valueof */                 \
1390   CPP(TemporalZonedDateTimePrototypeValueOf)                                   \
1391   /* Temporal #sec-temporal.zoneddatetime.prototype.startofday */              \
1392   CPP(TemporalZonedDateTimePrototypeStartOfDay)                                \
1393   /* Temporal #sec-temporal.zoneddatetime.prototype.toinstant */               \
1394   CPP(TemporalZonedDateTimePrototypeToInstant)                                 \
1395   /* Temporal #sec-temporal.zoneddatetime.prototype.toplaindate */             \
1396   CPP(TemporalZonedDateTimePrototypeToPlainDate)                               \
1397   /* Temporal #sec-temporal.zoneddatetime.prototype.toplaintime */             \
1398   CPP(TemporalZonedDateTimePrototypeToPlainTime)                               \
1399   /* Temporal #sec-temporal.zoneddatetime.prototype.toplaindatetime */         \
1400   CPP(TemporalZonedDateTimePrototypeToPlainDateTime)                           \
1401   /* Temporal #sec-temporal.zoneddatetime.prototype.toplainyearmonth */        \
1402   CPP(TemporalZonedDateTimePrototypeToPlainYearMonth)                          \
1403   /* Temporal #sec-temporal.zoneddatetime.prototype.toplainmonthday */         \
1404   CPP(TemporalZonedDateTimePrototypeToPlainMonthDay)                           \
1405   /* Temporal #sec-temporal.zoneddatetime.prototype.getisofields */            \
1406   CPP(TemporalZonedDateTimePrototypeGetISOFields)                              \
1407                                                                                \
1408   /* Temporal.Duration */                                                      \
1409   /* Temporal #sec-temporal.duration */                                        \
1410   CPP(TemporalDurationConstructor)                                             \
1411   /* Temporal #sec-temporal.duration.from */                                   \
1412   CPP(TemporalDurationFrom)                                                    \
1413   /* Temporal #sec-temporal.duration.compare */                                \
1414   CPP(TemporalDurationCompare)                                                 \
1415   /* Temporal #sec-get-temporal.duration.prototype.years */                    \
1416   CPP(TemporalDurationPrototypeYears)                                          \
1417   /* Temporal #sec-get-temporal.duration.prototype.months */                   \
1418   CPP(TemporalDurationPrototypeMonths)                                         \
1419   /* Temporal #sec-get-temporal.duration.prototype.weeks */                    \
1420   CPP(TemporalDurationPrototypeWeeks)                                          \
1421   /* Temporal #sec-get-temporal.duration.prototype.days */                     \
1422   CPP(TemporalDurationPrototypeDays)                                           \
1423   /* Temporal #sec-get-temporal.duration.prototype.hours */                    \
1424   CPP(TemporalDurationPrototypeHours)                                          \
1425   /* Temporal #sec-get-temporal.duration.prototype.minutes */                  \
1426   CPP(TemporalDurationPrototypeMinutes)                                        \
1427   /* Temporal #sec-get-temporal.duration.prototype.seconds */                  \
1428   CPP(TemporalDurationPrototypeSeconds)                                        \
1429   /* Temporal #sec-get-temporal.duration.prototype.milliseconds */             \
1430   CPP(TemporalDurationPrototypeMilliseconds)                                   \
1431   /* Temporal #sec-get-temporal.duration.prototype.microseconds */             \
1432   CPP(TemporalDurationPrototypeMicroseconds)                                   \
1433   /* Temporal #sec-get-temporal.duration.prototype.nanoseconds */              \
1434   CPP(TemporalDurationPrototypeNanoseconds)                                    \
1435   /* Temporal #sec-get-temporal.duration.prototype.sign */                     \
1436   CPP(TemporalDurationPrototypeSign)                                           \
1437   /* Temporal #sec-get-temporal.duration.prototype.blank */                    \
1438   CPP(TemporalDurationPrototypeBlank)                                          \
1439   /* Temporal #sec-temporal.duration.prototype.with */                         \
1440   CPP(TemporalDurationPrototypeWith)                                           \
1441   /* Temporal #sec-temporal.duration.prototype.negated */                      \
1442   CPP(TemporalDurationPrototypeNegated)                                        \
1443   /* Temporal #sec-temporal.duration.prototype.abs */                          \
1444   CPP(TemporalDurationPrototypeAbs)                                            \
1445   /* Temporal #sec-temporal.duration.prototype.add */                          \
1446   CPP(TemporalDurationPrototypeAdd)                                            \
1447   /* Temporal #sec-temporal.duration.prototype.subtract */                     \
1448   CPP(TemporalDurationPrototypeSubtract)                                       \
1449   /* Temporal #sec-temporal.duration.prototype.round */                        \
1450   CPP(TemporalDurationPrototypeRound)                                          \
1451   /* Temporal #sec-temporal.duration.prototype.total */                        \
1452   CPP(TemporalDurationPrototypeTotal)                                          \
1453   /* Temporal #sec-temporal.duration.prototype.tostring */                     \
1454   CPP(TemporalDurationPrototypeToString)                                       \
1455   /* Temporal #sec-temporal.duration.tojson */                                 \
1456   CPP(TemporalDurationPrototypeToJSON)                                         \
1457   /* Temporal #sec-temporal.duration.prototype.valueof */                      \
1458   CPP(TemporalDurationPrototypeValueOf)                                        \
1459                                                                                \
1460   /* Temporal.Instant */                                                       \
1461   /* Temporal #sec-temporal.instant */                                         \
1462   CPP(TemporalInstantConstructor)                                              \
1463   /* Temporal #sec-temporal.instant.from */                                    \
1464   CPP(TemporalInstantFrom)                                                     \
1465   /* Temporal #sec-temporal.instant.fromepochseconds */                        \
1466   CPP(TemporalInstantFromEpochSeconds)                                         \
1467   /* Temporal #sec-temporal.instant.fromepochmilliseconds */                   \
1468   CPP(TemporalInstantFromEpochMilliseconds)                                    \
1469   /* Temporal #sec-temporal.instant.fromepochmicroseconds */                   \
1470   CPP(TemporalInstantFromEpochMicroseconds)                                    \
1471   /* Temporal #sec-temporal.instant.fromepochnanoseconds */                    \
1472   CPP(TemporalInstantFromEpochNanoseconds)                                     \
1473   /* Temporal #sec-temporal.instant.compare */                                 \
1474   CPP(TemporalInstantCompare)                                                  \
1475   /* Temporal #sec-get-temporal.instant.prototype.epochseconds */              \
1476   CPP(TemporalInstantPrototypeEpochSeconds)                                    \
1477   /* Temporal #sec-get-temporal.instant.prototype.epochmilliseconds */         \
1478   CPP(TemporalInstantPrototypeEpochMilliseconds)                               \
1479   /* Temporal #sec-get-temporal.instant.prototype.epochmicroseconds */         \
1480   CPP(TemporalInstantPrototypeEpochMicroseconds)                               \
1481   /* Temporal #sec-get-temporal.instant.prototype.epochnanoseconds */          \
1482   CPP(TemporalInstantPrototypeEpochNanoseconds)                                \
1483   /* Temporal #sec-temporal.instant.prototype.add */                           \
1484   CPP(TemporalInstantPrototypeAdd)                                             \
1485   /* Temporal #sec-temporal.instant.prototype.subtract */                      \
1486   CPP(TemporalInstantPrototypeSubtract)                                        \
1487   /* Temporal #sec-temporal.instant.prototype.until */                         \
1488   CPP(TemporalInstantPrototypeUntil)                                           \
1489   /* Temporal #sec-temporal.instant.prototype.since */                         \
1490   CPP(TemporalInstantPrototypeSince)                                           \
1491   /* Temporal #sec-temporal.instant.prototype.round */                         \
1492   CPP(TemporalInstantPrototypeRound)                                           \
1493   /* Temporal #sec-temporal.instant.prototype.equals */                        \
1494   CPP(TemporalInstantPrototypeEquals)                                          \
1495   /* Temporal #sec-temporal.instant.prototype.tostring */                      \
1496   CPP(TemporalInstantPrototypeToString)                                        \
1497   /* Temporal #sec-temporal.instant.tojson */                                  \
1498   CPP(TemporalInstantPrototypeToJSON)                                          \
1499   /* Temporal #sec-temporal.instant.prototype.valueof */                       \
1500   CPP(TemporalInstantPrototypeValueOf)                                         \
1501   /* Temporal #sec-temporal.instant.prototype.tozoneddatetime */               \
1502   CPP(TemporalInstantPrototypeToZonedDateTime)                                 \
1503   /* Temporal #sec-temporal.instant.prototype.tozoneddatetimeiso */            \
1504   CPP(TemporalInstantPrototypeToZonedDateTimeISO)                              \
1505                                                                                \
1506   /* Temporal.PlainYearMonth */                                                \
1507   /* Temporal #sec-temporal.plainyearmonth */                                  \
1508   CPP(TemporalPlainYearMonthConstructor)                                       \
1509   /* Temporal #sec-temporal.plainyearmonth.from */                             \
1510   CPP(TemporalPlainYearMonthFrom)                                              \
1511   /* Temporal #sec-temporal.plainyearmonth.compare */                          \
1512   CPP(TemporalPlainYearMonthCompare)                                           \
1513   /* Temporal #sec-get-temporal.plainyearmonth.prototype.calendar */           \
1514   CPP(TemporalPlainYearMonthPrototypeCalendar)                                 \
1515   /* Temporal #sec-get-temporal.plainyearmonth.prototype.year */               \
1516   CPP(TemporalPlainYearMonthPrototypeYear)                                     \
1517   /* Temporal #sec-get-temporal.plainyearmonth.prototype.month */              \
1518   CPP(TemporalPlainYearMonthPrototypeMonth)                                    \
1519   /* Temporal #sec-get-temporal.plainyearmonth.prototype.monthcode */          \
1520   CPP(TemporalPlainYearMonthPrototypeMonthCode)                                \
1521   /* Temporal #sec-get-temporal.plainyearmonth.prototype.daysinyear */         \
1522   CPP(TemporalPlainYearMonthPrototypeDaysInYear)                               \
1523   /* Temporal #sec-get-temporal.plainyearmonth.prototype.daysinmonth */        \
1524   CPP(TemporalPlainYearMonthPrototypeDaysInMonth)                              \
1525   /* Temporal #sec-get-temporal.plainyearmonth.prototype.monthsinyear */       \
1526   CPP(TemporalPlainYearMonthPrototypeMonthsInYear)                             \
1527   /* Temporal #sec-get-temporal.plainyearmonth.prototype.inleapyear */         \
1528   CPP(TemporalPlainYearMonthPrototypeInLeapYear)                               \
1529   /* Temporal #sec-temporal.plainyearmonth.prototype.with */                   \
1530   CPP(TemporalPlainYearMonthPrototypeWith)                                     \
1531   /* Temporal #sec-temporal.plainyearmonth.prototype.add */                    \
1532   CPP(TemporalPlainYearMonthPrototypeAdd)                                      \
1533   /* Temporal #sec-temporal.plainyearmonth.prototype.subtract */               \
1534   CPP(TemporalPlainYearMonthPrototypeSubtract)                                 \
1535   /* Temporal #sec-temporal.plainyearmonth.prototype.until */                  \
1536   CPP(TemporalPlainYearMonthPrototypeUntil)                                    \
1537   /* Temporal #sec-temporal.plainyearmonth.prototype.since */                  \
1538   CPP(TemporalPlainYearMonthPrototypeSince)                                    \
1539   /* Temporal #sec-temporal.plainyearmonth.prototype.equals */                 \
1540   CPP(TemporalPlainYearMonthPrototypeEquals)                                   \
1541   /* Temporal #sec-temporal.plainyearmonth.tostring */                         \
1542   CPP(TemporalPlainYearMonthPrototypeToString)                                 \
1543   /* Temporal #sec-temporal.plainyearmonth.tojson */                           \
1544   CPP(TemporalPlainYearMonthPrototypeToJSON)                                   \
1545   /* Temporal #sec-temporal.plainyearmonth.prototype.valueof */                \
1546   CPP(TemporalPlainYearMonthPrototypeValueOf)                                  \
1547   /* Temporal #sec-temporal.plainyearmonth.prototype.toplaindate */            \
1548   CPP(TemporalPlainYearMonthPrototypeToPlainDate)                              \
1549   /* Temporal #sec-temporal.plainyearmonth.prototype.getisofields */           \
1550   CPP(TemporalPlainYearMonthPrototypeGetISOFields)                             \
1551                                                                                \
1552   /* Temporal.PlainMonthDay */                                                 \
1553   /* Temporal #sec-temporal.plainmonthday */                                   \
1554   CPP(TemporalPlainMonthDayConstructor)                                        \
1555   /* Temporal #sec-temporal.plainmonthday.from */                              \
1556   CPP(TemporalPlainMonthDayFrom)                                               \
1557   /* There are no compare for PlainMonthDay */                                 \
1558   /* See https://github.com/tc39/proposal-temporal/issues/1547 */              \
1559   /* Temporal #sec-get-temporal.plainmonthday.prototype.calendar */            \
1560   CPP(TemporalPlainMonthDayPrototypeCalendar)                                  \
1561   /* Temporal #sec-get-temporal.plainmonthday.prototype.monthcode */           \
1562   CPP(TemporalPlainMonthDayPrototypeMonthCode)                                 \
1563   /* Temporal #sec-get-temporal.plainmonthday.prototype.day */                 \
1564   CPP(TemporalPlainMonthDayPrototypeDay)                                       \
1565   /* Temporal #sec-temporal.plainmonthday.prototype.with */                    \
1566   CPP(TemporalPlainMonthDayPrototypeWith)                                      \
1567   /* Temporal #sec-temporal.plainmonthday.prototype.equals */                  \
1568   CPP(TemporalPlainMonthDayPrototypeEquals)                                    \
1569   /* Temporal #sec-temporal.plainmonthday.prototype.tostring */                \
1570   CPP(TemporalPlainMonthDayPrototypeToString)                                  \
1571   /* Temporal #sec-temporal.plainmonthday.tojson */                            \
1572   CPP(TemporalPlainMonthDayPrototypeToJSON)                                    \
1573   /* Temporal #sec-temporal.plainmonthday.prototype.valueof */                 \
1574   CPP(TemporalPlainMonthDayPrototypeValueOf)                                   \
1575   /* Temporal #sec-temporal.plainmonthday.prototype.toplaindate */             \
1576   CPP(TemporalPlainMonthDayPrototypeToPlainDate)                               \
1577   /* Temporal #sec-temporal.plainmonthday.prototype.getisofields */            \
1578   CPP(TemporalPlainMonthDayPrototypeGetISOFields)                              \
1579                                                                                \
1580   /* Temporal.TimeZone */                                                      \
1581   /* Temporal #sec-temporal.timezone */                                        \
1582   CPP(TemporalTimeZoneConstructor)                                             \
1583   /* Temporal #sec-temporal.timezone.from */                                   \
1584   CPP(TemporalTimeZoneFrom)                                                    \
1585   /* Temporal #sec-get-temporal.timezone.prototype.id */                       \
1586   CPP(TemporalTimeZonePrototypeId)                                             \
1587   /* Temporal #sec-temporal.timezone.prototype.getoffsetnanosecondsfor */      \
1588   CPP(TemporalTimeZonePrototypeGetOffsetNanosecondsFor)                        \
1589   /* Temporal #sec-temporal.timezone.prototype.getoffsetstringfor */           \
1590   CPP(TemporalTimeZonePrototypeGetOffsetStringFor)                             \
1591   /* Temporal #sec-temporal.timezone.prototype.getplaindatetimefor */          \
1592   CPP(TemporalTimeZonePrototypeGetPlainDateTimeFor)                            \
1593   /* Temporal #sec-temporal.timezone.prototype.getinstantfor */                \
1594   CPP(TemporalTimeZonePrototypeGetInstantFor)                                  \
1595   /* Temporal #sec-temporal.timezone.prototype.getpossibleinstantsfor */       \
1596   CPP(TemporalTimeZonePrototypeGetPossibleInstantsFor)                         \
1597   /* Temporal #sec-temporal.timezone.prototype.getnexttransition */            \
1598   CPP(TemporalTimeZonePrototypeGetNextTransition)                              \
1599   /* Temporal #sec-temporal.timezone.prototype.getprevioustransition */        \
1600   CPP(TemporalTimeZonePrototypeGetPreviousTransition)                          \
1601   /* Temporal #sec-temporal.timezone.prototype.tostring */                     \
1602   CPP(TemporalTimeZonePrototypeToString)                                       \
1603   /* Temporal #sec-temporal.timezone.prototype.tojson */                       \
1604   CPP(TemporalTimeZonePrototypeToJSON)                                         \
1605                                                                                \
1606   /* Temporal.Calendar */                                                      \
1607   /* Temporal #sec-temporal.calendar */                                        \
1608   CPP(TemporalCalendarConstructor)                                             \
1609   /* Temporal #sec-temporal.calendar.from */                                   \
1610   CPP(TemporalCalendarFrom)                                                    \
1611   /* Temporal #sec-get-temporal.calendar.prototype.id */                       \
1612   CPP(TemporalCalendarPrototypeId)                                             \
1613   /* Temporal #sec-temporal.calendar.prototype.datefromfields */               \
1614   CPP(TemporalCalendarPrototypeDateFromFields)                                 \
1615   /* Temporal #sec-temporal.calendar.prototype.yearmonthfromfields */          \
1616   CPP(TemporalCalendarPrototypeYearMonthFromFields)                            \
1617   /* Temporal #sec-temporal.calendar.prototype.monthdayfromfields */           \
1618   CPP(TemporalCalendarPrototypeMonthDayFromFields)                             \
1619   /* Temporal #sec-temporal.calendar.prototype.dateadd */                      \
1620   CPP(TemporalCalendarPrototypeDateAdd)                                        \
1621   /* Temporal #sec-temporal.calendar.prototype.dateuntil */                    \
1622   CPP(TemporalCalendarPrototypeDateUntil)                                      \
1623   /* Temporal #sec-temporal.calendar.prototype.year */                         \
1624   CPP(TemporalCalendarPrototypeYear)                                           \
1625   /* Temporal #sec-temporal.calendar.prototype.month */                        \
1626   CPP(TemporalCalendarPrototypeMonth)                                          \
1627   /* Temporal #sec-temporal.calendar.prototype.monthcode */                    \
1628   CPP(TemporalCalendarPrototypeMonthCode)                                      \
1629   /* Temporal #sec-temporal.calendar.prototype.day */                          \
1630   CPP(TemporalCalendarPrototypeDay)                                            \
1631   /* Temporal #sec-temporal.calendar.prototype.dayofweek */                    \
1632   CPP(TemporalCalendarPrototypeDayOfWeek)                                      \
1633   /* Temporal #sec-temporal.calendar.prototype.dayofyear */                    \
1634   CPP(TemporalCalendarPrototypeDayOfYear)                                      \
1635   /* Temporal #sec-temporal.calendar.prototype.weekofyear */                   \
1636   CPP(TemporalCalendarPrototypeWeekOfYear)                                     \
1637   /* Temporal #sec-temporal.calendar.prototype.daysinweek */                   \
1638   CPP(TemporalCalendarPrototypeDaysInWeek)                                     \
1639   /* Temporal #sec-temporal.calendar.prototype.daysinmonth */                  \
1640   CPP(TemporalCalendarPrototypeDaysInMonth)                                    \
1641   /* Temporal #sec-temporal.calendar.prototype.daysinyear */                   \
1642   CPP(TemporalCalendarPrototypeDaysInYear)                                     \
1643   /* Temporal #sec-temporal.calendar.prototype.monthsinyear */                 \
1644   CPP(TemporalCalendarPrototypeMonthsInYear)                                   \
1645   /* Temporal #sec-temporal.calendar.prototype.inleapyear */                   \
1646   CPP(TemporalCalendarPrototypeInLeapYear)                                     \
1647   /* Temporal #sec-temporal.calendar.prototype.fields */                       \
1648   CPP(TemporalCalendarPrototypeFields)                                         \
1649   /* Temporal #sec-temporal.calendar.prototype.mergefields */                  \
1650   CPP(TemporalCalendarPrototypeMergeFields)                                    \
1651   /* Temporal #sec-temporal.calendar.prototype.tostring */                     \
1652   CPP(TemporalCalendarPrototypeToString)                                       \
1653   /* Temporal #sec-temporal.calendar.prototype.tojson */                       \
1654   CPP(TemporalCalendarPrototypeToJSON)                                         \
1655                                                                                \
1656   /* "Private" (created but not exposed) Bulitins needed by Temporal */        \
1657   TFJ(StringFixedArrayFromIterable, kJSArgcReceiverSlots, kIterable)           \
1658   TFJ(TemporalInstantFixedArrayFromIterable, kJSArgcReceiverSlots, kIterable)
1659 
1660 #define BUILTIN_LIST_BASE(CPP, TFJ, TFC, TFS, TFH, ASM) \
1661   BUILTIN_LIST_BASE_TIER0(CPP, TFJ, TFC, TFS, TFH, ASM) \
1662   BUILTIN_LIST_BASE_TIER1(CPP, TFJ, TFC, TFS, TFH, ASM)
1663 
1664 #ifdef V8_INTL_SUPPORT
1665 #define BUILTIN_LIST_INTL(CPP, TFJ, TFS)                               \
1666   /* ecma402 #sec-intl.collator */                                     \
1667   CPP(CollatorConstructor)                                             \
1668   /* ecma 402 #sec-collator-compare-functions*/                        \
1669   CPP(CollatorInternalCompare)                                         \
1670   /* ecma402 #sec-intl.collator.prototype.compare */                   \
1671   CPP(CollatorPrototypeCompare)                                        \
1672   /* ecma402 #sec-intl.collator.supportedlocalesof */                  \
1673   CPP(CollatorSupportedLocalesOf)                                      \
1674   /* ecma402 #sec-intl.collator.prototype.resolvedoptions */           \
1675   CPP(CollatorPrototypeResolvedOptions)                                \
1676   /* ecma402 #sup-date.prototype.tolocaledatestring */                 \
1677   CPP(DatePrototypeToLocaleDateString)                                 \
1678   /* ecma402 #sup-date.prototype.tolocalestring */                     \
1679   CPP(DatePrototypeToLocaleString)                                     \
1680   /* ecma402 #sup-date.prototype.tolocaletimestring */                 \
1681   CPP(DatePrototypeToLocaleTimeString)                                 \
1682   /* ecma402 #sec-intl.datetimeformat */                               \
1683   CPP(DateTimeFormatConstructor)                                       \
1684   /* ecma402 #sec-datetime-format-functions */                         \
1685   CPP(DateTimeFormatInternalFormat)                                    \
1686   /* ecma402 #sec-intl.datetimeformat.prototype.format */              \
1687   CPP(DateTimeFormatPrototypeFormat)                                   \
1688   /* ecma402 #sec-intl.datetimeformat.prototype.formatrange */         \
1689   CPP(DateTimeFormatPrototypeFormatRange)                              \
1690   /* ecma402 #sec-intl.datetimeformat.prototype.formatrangetoparts */  \
1691   CPP(DateTimeFormatPrototypeFormatRangeToParts)                       \
1692   /* ecma402 #sec-intl.datetimeformat.prototype.formattoparts */       \
1693   CPP(DateTimeFormatPrototypeFormatToParts)                            \
1694   /* ecma402 #sec-intl.datetimeformat.prototype.resolvedoptions */     \
1695   CPP(DateTimeFormatPrototypeResolvedOptions)                          \
1696   /* ecma402 #sec-intl.datetimeformat.supportedlocalesof */            \
1697   CPP(DateTimeFormatSupportedLocalesOf)                                \
1698   /* ecma402 #sec-Intl.DisplayNames */                                 \
1699   CPP(DisplayNamesConstructor)                                         \
1700   /* ecma402 #sec-Intl.DisplayNames.prototype.of */                    \
1701   CPP(DisplayNamesPrototypeOf)                                         \
1702   /* ecma402 #sec-Intl.DisplayNames.prototype.resolvedOptions */       \
1703   CPP(DisplayNamesPrototypeResolvedOptions)                            \
1704   /* ecma402 #sec-Intl.DisplayNames.supportedLocalesOf */              \
1705   CPP(DisplayNamesSupportedLocalesOf)                                  \
1706   /* ecma402 #sec-intl.getcanonicallocales */                          \
1707   CPP(IntlGetCanonicalLocales)                                         \
1708   /* ecma402 #sec-intl.supportedvaluesof */                            \
1709   CPP(IntlSupportedValuesOf)                                           \
1710   /* ecma402 #sec-intl-listformat-constructor */                       \
1711   CPP(ListFormatConstructor)                                           \
1712   /* ecma402 #sec-intl-list-format.prototype.format */                 \
1713   TFJ(ListFormatPrototypeFormat, kDontAdaptArgumentsSentinel)          \
1714   /* ecma402 #sec-intl-list-format.prototype.formattoparts */          \
1715   TFJ(ListFormatPrototypeFormatToParts, kDontAdaptArgumentsSentinel)   \
1716   /* ecma402 #sec-intl.listformat.prototype.resolvedoptions */         \
1717   CPP(ListFormatPrototypeResolvedOptions)                              \
1718   /* ecma402 #sec-intl.ListFormat.supportedlocalesof */                \
1719   CPP(ListFormatSupportedLocalesOf)                                    \
1720   /* ecma402 #sec-intl-locale-constructor */                           \
1721   CPP(LocaleConstructor)                                               \
1722   /* ecma402 #sec-Intl.Locale.prototype.baseName */                    \
1723   CPP(LocalePrototypeBaseName)                                         \
1724   /* ecma402 #sec-Intl.Locale.prototype.calendar */                    \
1725   CPP(LocalePrototypeCalendar)                                         \
1726   /* ecma402 #sec-Intl.Locale.prototype.calendars */                   \
1727   CPP(LocalePrototypeCalendars)                                        \
1728   /* ecma402 #sec-Intl.Locale.prototype.caseFirst */                   \
1729   CPP(LocalePrototypeCaseFirst)                                        \
1730   /* ecma402 #sec-Intl.Locale.prototype.collation */                   \
1731   CPP(LocalePrototypeCollation)                                        \
1732   /* ecma402 #sec-Intl.Locale.prototype.collations */                  \
1733   CPP(LocalePrototypeCollations)                                       \
1734   /* ecma402 #sec-Intl.Locale.prototype.hourCycle */                   \
1735   CPP(LocalePrototypeHourCycle)                                        \
1736   /* ecma402 #sec-Intl.Locale.prototype.hourCycles */                  \
1737   CPP(LocalePrototypeHourCycles)                                       \
1738   /* ecma402 #sec-Intl.Locale.prototype.language */                    \
1739   CPP(LocalePrototypeLanguage)                                         \
1740   /* ecma402 #sec-Intl.Locale.prototype.maximize */                    \
1741   CPP(LocalePrototypeMaximize)                                         \
1742   /* ecma402 #sec-Intl.Locale.prototype.minimize */                    \
1743   CPP(LocalePrototypeMinimize)                                         \
1744   /* ecma402 #sec-Intl.Locale.prototype.numeric */                     \
1745   CPP(LocalePrototypeNumeric)                                          \
1746   /* ecma402 #sec-Intl.Locale.prototype.numberingSystem */             \
1747   CPP(LocalePrototypeNumberingSystem)                                  \
1748   /* ecma402 #sec-Intl.Locale.prototype.numberingSystems */            \
1749   CPP(LocalePrototypeNumberingSystems)                                 \
1750   /* ecma402 #sec-Intl.Locale.prototype.region */                      \
1751   CPP(LocalePrototypeRegion)                                           \
1752   /* ecma402 #sec-Intl.Locale.prototype.script */                      \
1753   CPP(LocalePrototypeScript)                                           \
1754   /* ecma402 #sec-Intl.Locale.prototype.textInfo */                    \
1755   CPP(LocalePrototypeTextInfo)                                         \
1756   /* ecma402 #sec-Intl.Locale.prototype.timezones */                   \
1757   CPP(LocalePrototypeTimeZones)                                        \
1758   /* ecma402 #sec-Intl.Locale.prototype.toString */                    \
1759   CPP(LocalePrototypeToString)                                         \
1760   /* ecma402 #sec-Intl.Locale.prototype.weekInfo */                    \
1761   CPP(LocalePrototypeWeekInfo)                                         \
1762   /* ecma402 #sec-intl.numberformat */                                 \
1763   CPP(NumberFormatConstructor)                                         \
1764   /* ecma402 #sec-number-format-functions */                           \
1765   CPP(NumberFormatInternalFormatNumber)                                \
1766   /* ecma402 #sec-intl.numberformat.prototype.format */                \
1767   CPP(NumberFormatPrototypeFormatNumber)                               \
1768   /* ecma402 #sec-intl.numberformat.prototype.formatrange */           \
1769   CPP(NumberFormatPrototypeFormatRange)                                \
1770   /* ecma402 #sec-intl.numberformat.prototype.formatrangetoparts */    \
1771   CPP(NumberFormatPrototypeFormatRangeToParts)                         \
1772   /* ecma402 #sec-intl.numberformat.prototype.formattoparts */         \
1773   CPP(NumberFormatPrototypeFormatToParts)                              \
1774   /* ecma402 #sec-intl.numberformat.prototype.resolvedoptions */       \
1775   CPP(NumberFormatPrototypeResolvedOptions)                            \
1776   /* ecma402 #sec-intl.numberformat.supportedlocalesof */              \
1777   CPP(NumberFormatSupportedLocalesOf)                                  \
1778   /* ecma402 #sec-intl.pluralrules */                                  \
1779   CPP(PluralRulesConstructor)                                          \
1780   /* ecma402 #sec-intl.pluralrules.prototype.resolvedoptions */        \
1781   CPP(PluralRulesPrototypeResolvedOptions)                             \
1782   /* ecma402 #sec-intl.pluralrules.prototype.select */                 \
1783   CPP(PluralRulesPrototypeSelect)                                      \
1784   /* ecma402 #sec-intl.pluralrules.prototype.selectrange */            \
1785   CPP(PluralRulesPrototypeSelectRange)                                 \
1786   /* ecma402 #sec-intl.pluralrules.supportedlocalesof */               \
1787   CPP(PluralRulesSupportedLocalesOf)                                   \
1788   /* ecma402 #sec-intl.RelativeTimeFormat.constructor */               \
1789   CPP(RelativeTimeFormatConstructor)                                   \
1790   /* ecma402 #sec-intl.RelativeTimeFormat.prototype.format */          \
1791   CPP(RelativeTimeFormatPrototypeFormat)                               \
1792   /* ecma402 #sec-intl.RelativeTimeFormat.prototype.formatToParts */   \
1793   CPP(RelativeTimeFormatPrototypeFormatToParts)                        \
1794   /* ecma402 #sec-intl.RelativeTimeFormat.prototype.resolvedOptions */ \
1795   CPP(RelativeTimeFormatPrototypeResolvedOptions)                      \
1796   /* ecma402 #sec-intl.RelativeTimeFormat.supportedlocalesof */        \
1797   CPP(RelativeTimeFormatSupportedLocalesOf)                            \
1798   /* ecma402 #sec-Intl.Segmenter */                                    \
1799   CPP(SegmenterConstructor)                                            \
1800   /* ecma402 #sec-Intl.Segmenter.prototype.resolvedOptions */          \
1801   CPP(SegmenterPrototypeResolvedOptions)                               \
1802   /* ecma402 #sec-Intl.Segmenter.prototype.segment  */                 \
1803   CPP(SegmenterPrototypeSegment)                                       \
1804   /* ecma402  #sec-Intl.Segmenter.supportedLocalesOf */                \
1805   CPP(SegmenterSupportedLocalesOf)                                     \
1806   /* ecma402 #sec-segment-iterator-prototype-next */                   \
1807   CPP(SegmentIteratorPrototypeNext)                                    \
1808   /* ecma402 #sec-%segmentsprototype%.containing */                    \
1809   CPP(SegmentsPrototypeContaining)                                     \
1810   /* ecma402 #sec-%segmentsprototype%-@@iterator */                    \
1811   CPP(SegmentsPrototypeIterator)                                       \
1812   /* ES #sec-string.prototype.normalize */                             \
1813   CPP(StringPrototypeNormalizeIntl)                                    \
1814   /* ecma402 #sup-string.prototype.tolocalelowercase */                \
1815   CPP(StringPrototypeToLocaleLowerCase)                                \
1816   /* ecma402 #sup-string.prototype.tolocaleuppercase */                \
1817   CPP(StringPrototypeToLocaleUpperCase)                                \
1818   /* ES #sec-string.prototype.tolowercase */                           \
1819   TFJ(StringPrototypeToLowerCaseIntl, kJSArgcReceiverSlots, kReceiver) \
1820   /* ES #sec-string.prototype.touppercase */                           \
1821   CPP(StringPrototypeToUpperCaseIntl)                                  \
1822   TFS(StringToLowerCaseIntl, kString)                                  \
1823                                                                        \
1824   /* Temporal */                                                       \
1825   /* Temporal #sec-temporal.calendar.prototype.era */                  \
1826   CPP(TemporalCalendarPrototypeEra)                                    \
1827   /* Temporal #sec-temporal.calendar.prototype.erayear */              \
1828   CPP(TemporalCalendarPrototypeEraYear)                                \
1829   /* Temporal #sec-temporal.duration.prototype.tolocalestring */       \
1830   CPP(TemporalDurationPrototypeToLocaleString)                         \
1831   /* Temporal #sec-temporal.instant.prototype.tolocalestring */        \
1832   CPP(TemporalInstantPrototypeToLocaleString)                          \
1833   /* Temporal #sec-get-temporal.plaindate.prototype.era */             \
1834   CPP(TemporalPlainDatePrototypeEra)                                   \
1835   /* Temporal #sec-get-temporal.plaindate.prototype.erayear */         \
1836   CPP(TemporalPlainDatePrototypeEraYear)                               \
1837   /* Temporal #sec-temporal.plaindate.prototype.tolocalestring */      \
1838   CPP(TemporalPlainDatePrototypeToLocaleString)                        \
1839   /* Temporal #sec-get-temporal.plaindatetime.prototype.era */         \
1840   CPP(TemporalPlainDateTimePrototypeEra)                               \
1841   /* Temporal #sec-get-temporal.plaindatetime.prototype.erayear */     \
1842   CPP(TemporalPlainDateTimePrototypeEraYear)                           \
1843   /* Temporal #sec-temporal.plaindatetime.prototype.tolocalestring */  \
1844   CPP(TemporalPlainDateTimePrototypeToLocaleString)                    \
1845   /* Temporal #sec-temporal.plainmonthday.prototype.tolocalestring */  \
1846   CPP(TemporalPlainMonthDayPrototypeToLocaleString)                    \
1847   /* Temporal #sec-temporal.plaintime.prototype.tolocalestring */      \
1848   CPP(TemporalPlainTimePrototypeToLocaleString)                        \
1849   /* Temporal #sec-get-temporal.plainyearmonth.prototype.era */        \
1850   CPP(TemporalPlainYearMonthPrototypeEra)                              \
1851   /* Temporal #sec-get-temporal.plainyearmonth.prototype.erayear */    \
1852   CPP(TemporalPlainYearMonthPrototypeEraYear)                          \
1853   /* Temporal #sec-temporal.plainyearmonth.prototype.tolocalestring */ \
1854   CPP(TemporalPlainYearMonthPrototypeToLocaleString)                   \
1855   /* Temporal #sec-get-temporal.zoneddatetime.prototype.era */         \
1856   CPP(TemporalZonedDateTimePrototypeEra)                               \
1857   /* Temporal #sec-get-temporal.zoneddatetime.prototype.erayear */     \
1858   CPP(TemporalZonedDateTimePrototypeEraYear)                           \
1859   /* Temporal #sec-temporal.zoneddatetime.prototype.tolocalestring */  \
1860   CPP(TemporalZonedDateTimePrototypeToLocaleString)                    \
1861                                                                        \
1862   CPP(V8BreakIteratorConstructor)                                      \
1863   CPP(V8BreakIteratorInternalAdoptText)                                \
1864   CPP(V8BreakIteratorInternalBreakType)                                \
1865   CPP(V8BreakIteratorInternalCurrent)                                  \
1866   CPP(V8BreakIteratorInternalFirst)                                    \
1867   CPP(V8BreakIteratorInternalNext)                                     \
1868   CPP(V8BreakIteratorPrototypeAdoptText)                               \
1869   CPP(V8BreakIteratorPrototypeBreakType)                               \
1870   CPP(V8BreakIteratorPrototypeCurrent)                                 \
1871   CPP(V8BreakIteratorPrototypeFirst)                                   \
1872   CPP(V8BreakIteratorPrototypeNext)                                    \
1873   CPP(V8BreakIteratorPrototypeResolvedOptions)                         \
1874   CPP(V8BreakIteratorSupportedLocalesOf)
1875 #else
1876 #define BUILTIN_LIST_INTL(CPP, TFJ, TFS)      \
1877   /* no-op fallback version */                \
1878   CPP(StringPrototypeNormalize)               \
1879   /* same as toLowercase; fallback version */ \
1880   CPP(StringPrototypeToLocaleLowerCase)       \
1881   /* same as toUppercase; fallback version */ \
1882   CPP(StringPrototypeToLocaleUpperCase)       \
1883   /* (obsolete) Unibrow version */            \
1884   CPP(StringPrototypeToLowerCase)             \
1885   /* (obsolete) Unibrow version */            \
1886   CPP(StringPrototypeToUpperCase)
1887 #endif  // V8_INTL_SUPPORT
1888 
1889 #define BUILTIN_LIST(CPP, TFJ, TFC, TFS, TFH, BCH, ASM)  \
1890   BUILTIN_LIST_BASE(CPP, TFJ, TFC, TFS, TFH, ASM)        \
1891   BUILTIN_LIST_FROM_TORQUE(CPP, TFJ, TFC, TFS, TFH, ASM) \
1892   BUILTIN_LIST_INTL(CPP, TFJ, TFS)                       \
1893   BUILTIN_LIST_BYTECODE_HANDLERS(BCH)
1894 
1895 // See the comment on top of BUILTIN_LIST_BASE_TIER0 for an explanation of
1896 // tiers.
1897 #define BUILTIN_LIST_TIER0(CPP, TFJ, TFC, TFS, TFH, BCH, ASM) \
1898   BUILTIN_LIST_BASE_TIER0(CPP, TFJ, TFC, TFS, TFH, ASM)
1899 
1900 #define BUILTIN_LIST_TIER1(CPP, TFJ, TFC, TFS, TFH, BCH, ASM) \
1901   BUILTIN_LIST_BASE_TIER1(CPP, TFJ, TFC, TFS, TFH, ASM)       \
1902   BUILTIN_LIST_FROM_TORQUE(CPP, TFJ, TFC, TFS, TFH, ASM)      \
1903   BUILTIN_LIST_INTL(CPP, TFJ, TFS)                            \
1904   BUILTIN_LIST_BYTECODE_HANDLERS(BCH)
1905 
1906 // The exception thrown in the following builtins are caught
1907 // internally and result in a promise rejection.
1908 #define BUILTIN_PROMISE_REJECTION_PREDICTION_LIST(V) \
1909   V(AsyncFromSyncIteratorPrototypeNext)              \
1910   V(AsyncFromSyncIteratorPrototypeReturn)            \
1911   V(AsyncFromSyncIteratorPrototypeThrow)             \
1912   V(AsyncFunctionAwaitCaught)                        \
1913   V(AsyncFunctionAwaitUncaught)                      \
1914   V(AsyncGeneratorResolve)                           \
1915   V(AsyncGeneratorAwaitCaught)                       \
1916   V(AsyncGeneratorAwaitUncaught)                     \
1917   V(PromiseAll)                                      \
1918   V(PromiseAny)                                      \
1919   V(PromiseConstructor)                              \
1920   V(PromiseConstructorLazyDeoptContinuation)         \
1921   V(PromiseFulfillReactionJob)                       \
1922   V(PromiseRejectReactionJob)                        \
1923   V(PromiseRace)                                     \
1924   V(ResolvePromise)
1925 
1926 #define IGNORE_BUILTIN(...)
1927 
1928 #define BUILTIN_LIST_C(V)                                         \
1929   BUILTIN_LIST(V, IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, \
1930                IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN)
1931 
1932 #define BUILTIN_LIST_A(V)                                                      \
1933   BUILTIN_LIST(IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, \
1934                IGNORE_BUILTIN, IGNORE_BUILTIN, V)
1935 
1936 #define BUILTIN_LIST_TFS(V)                                       \
1937   BUILTIN_LIST(IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, V, \
1938                IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN)
1939 
1940 #define BUILTIN_LIST_TFJ(V)                                       \
1941   BUILTIN_LIST(IGNORE_BUILTIN, V, IGNORE_BUILTIN, IGNORE_BUILTIN, \
1942                IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN)
1943 
1944 #define BUILTIN_LIST_TFC(V)                                       \
1945   BUILTIN_LIST(IGNORE_BUILTIN, IGNORE_BUILTIN, V, IGNORE_BUILTIN, \
1946                IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN)
1947 
1948 }  // namespace internal
1949 }  // namespace v8
1950 
1951 #endif  // V8_BUILTINS_BUILTINS_DEFINITIONS_H_
1952