builtins-definitions.h 83.8 KB
Newer Older
1 2 3 4 5 6 7
// Copyright 2017 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef V8_BUILTINS_BUILTINS_DEFINITIONS_H_
#define V8_BUILTINS_BUILTINS_DEFINITIONS_H_

8
#include "builtins-generated/bytecodes-builtins-list.h"
9

10
// include generated header
11
#include "torque-generated/builtin-definitions.h"
12

13 14 15 16 17 18 19 20
namespace v8 {
namespace internal {

// CPP: Builtin in C++. Entered via BUILTIN_EXIT frame.
//      Args: name
// TFJ: Builtin in Turbofan, with JS linkage (callable as Javascript function).
//      Args: name, arguments count, explicit argument names...
// TFS: Builtin in Turbofan, with CodeStub linkage.
21 22
//      Args: name, explicit argument names...
// 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 30 31 32
//      Args: name, interface descriptor

// TODO(jgruber): Remove DummyDescriptor once all ASM builtins have been
// properly associated with their descriptor.
33

34
#define BUILTIN_LIST_BASE(CPP, TFJ, TFC, TFS, TFH, ASM)                        \
35
  /* GC write barrirer */                                                      \
36
  TFC(RecordWrite, RecordWrite)                                                \
37
  TFC(EphemeronKeyBarrier, EphemeronKeyBarrier)                                \
38
                                                                               \
39
  /* Adaptor for CPP builtin */                                                \
40
  TFC(AdaptorWithBuiltinExitFrame, CppBuiltinAdaptor)                          \
41
                                                                               \
42
  /* Calls */                                                                  \
43
  ASM(ArgumentsAdaptorTrampoline, ArgumentsAdaptor)                            \
44
  /* ES6 section 9.2.1 [[Call]] ( thisArgument, argumentsList) */              \
45 46 47
  ASM(CallFunction_ReceiverIsNullOrUndefined, CallTrampoline)                  \
  ASM(CallFunction_ReceiverIsNotNullOrUndefined, CallTrampoline)               \
  ASM(CallFunction_ReceiverIsAny, CallTrampoline)                              \
48
  /* ES6 section 9.4.1.1 [[Call]] ( thisArgument, argumentsList) */            \
49
  ASM(CallBoundFunction, CallTrampoline)                                       \
50
  /* ES6 section 7.3.12 Call(F, V, [argumentsList]) */                         \
51 52 53
  ASM(Call_ReceiverIsNullOrUndefined, CallTrampoline)                          \
  ASM(Call_ReceiverIsNotNullOrUndefined, CallTrampoline)                       \
  ASM(Call_ReceiverIsAny, CallTrampoline)                                      \
54 55 56 57 58
  TFC(Call_ReceiverIsNullOrUndefined_WithFeedback,                             \
      CallTrampoline_WithFeedback)                                             \
  TFC(Call_ReceiverIsNotNullOrUndefined_WithFeedback,                          \
      CallTrampoline_WithFeedback)                                             \
  TFC(Call_ReceiverIsAny_WithFeedback, CallTrampoline_WithFeedback)            \
59 60
                                                                               \
  /* ES6 section 9.5.12[[Call]] ( thisArgument, argumentsList ) */             \
61
  TFC(CallProxy, CallTrampoline)                                               \
62
  ASM(CallVarargs, CallVarargs)                                                \
63
  TFC(CallWithSpread, CallWithSpread)                                          \
64
  TFC(CallWithSpread_WithFeedback, CallWithSpread_WithFeedback)                \
65
  TFC(CallWithArrayLike, CallWithArrayLike)                                    \
66
  TFC(CallWithArrayLike_WithFeedback, CallWithArrayLike_WithFeedback)          \
67 68
  ASM(CallForwardVarargs, CallForwardVarargs)                                  \
  ASM(CallFunctionForwardVarargs, CallForwardVarargs)                          \
69 70
  /* Call an API callback via a {FunctionTemplateInfo}, doing appropriate */   \
  /* access and compatible receiver checks. */                                 \
71 72
  TFC(CallFunctionTemplate_CheckAccess, CallFunctionTemplate)                  \
  TFC(CallFunctionTemplate_CheckCompatibleReceiver, CallFunctionTemplate)      \
73
  TFC(CallFunctionTemplate_CheckAccessAndCompatibleReceiver,                   \
74
      CallFunctionTemplate)                                                    \
75 76 77
                                                                               \
  /* Construct */                                                              \
  /* ES6 section 9.2.2 [[Construct]] ( argumentsList, newTarget) */            \
78
  ASM(ConstructFunction, JSTrampoline)                                         \
79
  /* ES6 section 9.4.1.2 [[Construct]] (argumentsList, newTarget) */           \
80 81
  ASM(ConstructBoundFunction, JSTrampoline)                                    \
  ASM(ConstructedNonConstructable, JSTrampoline)                               \
82
  /* ES6 section 7.3.13 Construct (F, [argumentsList], [newTarget]) */         \
83 84
  ASM(Construct, JSTrampoline)                                                 \
  ASM(ConstructVarargs, ConstructVarargs)                                      \
85
  TFC(ConstructWithSpread, ConstructWithSpread)                                \
86
  TFC(ConstructWithSpread_WithFeedback, ConstructWithSpread_WithFeedback)      \
87
  TFC(ConstructWithArrayLike, ConstructWithArrayLike)                          \
88 89
  TFC(ConstructWithArrayLike_WithFeedback,                                     \
      ConstructWithArrayLike_WithFeedback)                                     \
90 91
  ASM(ConstructForwardVarargs, ConstructForwardVarargs)                        \
  ASM(ConstructFunctionForwardVarargs, ConstructForwardVarargs)                \
92
  TFC(Construct_WithFeedback, Construct_WithFeedback)                          \
93 94
  ASM(JSConstructStubGeneric, Dummy)                                           \
  ASM(JSBuiltinsConstructStub, Dummy)                                          \
95
  TFC(FastNewObject, FastNewObject)                                            \
96
  TFS(FastNewClosure, kSharedFunctionInfo, kFeedbackCell)                      \
97
  /* ES6 section 9.5.14 [[Construct]] ( argumentsList, newTarget) */           \
98
  TFC(ConstructProxy, JSTrampoline)                                            \
99 100
                                                                               \
  /* Apply and entries */                                                      \
101 102
  ASM(JSEntry, Dummy)                                                          \
  ASM(JSConstructEntry, Dummy)                                                 \
103
  ASM(JSRunMicrotasksEntry, RunMicrotasksEntry)                                \
104 105
  ASM(JSEntryTrampoline, JSTrampoline)                                         \
  ASM(JSConstructEntryTrampoline, JSTrampoline)                                \
106
  ASM(ResumeGeneratorTrampoline, ResumeGenerator)                              \
107 108
                                                                               \
  /* String helpers */                                                         \
109 110
  TFC(StringCodePointAt, StringAt)                                             \
  TFC(StringFromCodePointAt, StringAtAsString)                                 \
111 112 113
  TFC(StringEqual, Compare)                                                    \
  TFC(StringGreaterThan, Compare)                                              \
  TFC(StringGreaterThanOrEqual, Compare)                                       \
114
  TFS(StringIndexOf, kReceiver, kSearchString, kPosition)                      \
115 116 117
  TFC(StringLessThan, Compare)                                                 \
  TFC(StringLessThanOrEqual, Compare)                                          \
  TFC(StringSubstring, StringSubstring)                                        \
118
                                                                               \
119 120 121
  /* OrderedHashTable helpers */                                               \
  TFS(OrderedHashTableHealIndex, kTable, kIndex)                               \
                                                                               \
122
  /* Interpreter */                                                            \
123
  ASM(InterpreterEntryTrampoline, JSTrampoline)                                \
124 125 126 127 128 129 130 131 132 133 134
  ASM(InterpreterPushArgsThenCall, InterpreterPushArgsThenCall)                \
  ASM(InterpreterPushUndefinedAndArgsThenCall, InterpreterPushArgsThenCall)    \
  ASM(InterpreterPushArgsThenCallWithFinalSpread, InterpreterPushArgsThenCall) \
  ASM(InterpreterPushArgsThenConstruct, InterpreterPushArgsThenConstruct)      \
  ASM(InterpreterPushArgsThenConstructArrayFunction,                           \
      InterpreterPushArgsThenConstruct)                                        \
  ASM(InterpreterPushArgsThenConstructWithFinalSpread,                         \
      InterpreterPushArgsThenConstruct)                                        \
  ASM(InterpreterEnterBytecodeAdvance, Dummy)                                  \
  ASM(InterpreterEnterBytecodeDispatch, Dummy)                                 \
  ASM(InterpreterOnStackReplacement, ContextOnly)                              \
135 136
                                                                               \
  /* Code life-cycle */                                                        \
137 138
  TFC(CompileLazy, JSTrampoline)                                               \
  TFC(CompileLazyDeoptimizedCode, JSTrampoline)                                \
139
  TFC(InstantiateAsmJs, JSTrampoline)                                          \
140
  ASM(NotifyDeoptimized, Dummy)                                                \
141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161
                                                                               \
  /* Trampolines called when returning from a deoptimization that expects   */ \
  /* to continue in a JavaScript builtin to finish the functionality of a   */ \
  /* an TF-inlined version of builtin that has side-effects.                */ \
  /*                                                                        */ \
  /* The trampolines work as follows:                                       */ \
  /*   1. Trampoline restores input register values that                    */ \
  /*      the builtin expects from a BuiltinContinuationFrame.              */ \
  /*   2. Trampoline tears down BuiltinContinuationFrame.                   */ \
  /*   3. Trampoline jumps to the builtin's address.                        */ \
  /*   4. Builtin executes as if invoked by the frame above it.             */ \
  /*   5. When the builtin returns, execution resumes normally in the       */ \
  /*      calling frame, processing any return result from the JavaScript   */ \
  /*      builtin as if it had called the builtin directly.                 */ \
  /*                                                                        */ \
  /* There are two variants of the stub that differ in their handling of a  */ \
  /* value returned by the next frame deeper on the stack. For LAZY deopts, */ \
  /* the return value (e.g. rax on x64) is explicitly passed as an extra    */ \
  /* stack parameter to the JavaScript builtin by the "WithResult"          */ \
  /* trampoline variant. The plain variant is used in EAGER deopt contexts  */ \
  /* and has no such special handling. */                                      \
162 163 164 165
  ASM(ContinueToCodeStubBuiltin, Dummy)                                        \
  ASM(ContinueToCodeStubBuiltinWithResult, Dummy)                              \
  ASM(ContinueToJavaScriptBuiltin, Dummy)                                      \
  ASM(ContinueToJavaScriptBuiltinWithResult, Dummy)                            \
166
                                                                               \
167
  /* API callback handling */                                                  \
168 169
  ASM(CallApiCallback, ApiCallback)                                            \
  ASM(CallApiGetter, ApiGetter)                                                \
170 171 172
  CPP(HandleApiCall)                                                           \
  CPP(HandleApiCallAsFunction)                                                 \
  CPP(HandleApiCallAsConstructor)                                              \
173 174
                                                                               \
  /* Adapters for Turbofan into runtime */                                     \
175
  TFC(AllocateInYoungGeneration, Allocate)                                     \
176
  TFC(AllocateRegularInYoungGeneration, Allocate)                              \
177
  TFC(AllocateInOldGeneration, Allocate)                                       \
178
  TFC(AllocateRegularInOldGeneration, Allocate)                                \
179 180
                                                                               \
  /* TurboFan support builtins */                                              \
181
  TFS(CopyFastSmiOrObjectElements, kObject)                                    \
182 183
  TFC(GrowFastDoubleElements, GrowArrayElements)                               \
  TFC(GrowFastSmiOrObjectElements, GrowArrayElements)                          \
184 185
                                                                               \
  /* Debugger */                                                               \
186
  TFJ(DebugBreakTrampoline, kDontAdaptArgumentsSentinel)                       \
187 188
  ASM(FrameDropperTrampoline, FrameDropperTrampoline)                          \
  ASM(HandleDebuggerStatement, ContextOnly)                                    \
189 190
                                                                               \
  /* Type conversions */                                                       \
191
  TFC(ToNumber, TypeConversion)                                                \
192
  TFC(PlainPrimitiveToNumber, TypeConversionNoContext)                         \
193 194 195 196
  TFC(ToNumberConvertBigInt, TypeConversion)                                   \
  TFC(Typeof, Typeof)                                                          \
  TFC(GetSuperConstructor, Typeof)                                             \
  TFC(BigIntToI64, BigIntToI64)                                                \
197
  TFC(BigIntToI32Pair, BigIntToI32Pair)                                        \
198
  TFC(I64ToBigInt, I64ToBigInt)                                                \
199
  TFC(I32PairToBigInt, I32PairToBigInt)                                        \
200
                                                                               \
201
  /* Type conversions continuations */                                         \
202
  TFC(ToBooleanLazyDeoptContinuation, TypeConversionStackParameter)            \
203
                                                                               \
204
  /* Handlers */                                                               \
205
  TFH(KeyedLoadIC_PolymorphicName, LoadWithVector)                             \
206
  TFH(KeyedStoreIC_Megamorphic, Store)                                         \
207
  TFH(LoadGlobalIC_NoFeedback, LoadGlobalNoFeedback)                           \
208
  TFH(LoadIC_FunctionPrototype, LoadWithVector)                                \
209
  TFH(LoadIC_StringLength, LoadWithVector)                                     \
210
  TFH(LoadIC_StringWrapperLength, LoadWithVector)                              \
211
  TFH(LoadIC_NoFeedback, LoadNoFeedback)                                       \
212
  TFH(StoreGlobalIC_Slow, StoreWithVector)                                     \
213
  TFH(StoreIC_NoFeedback, Store)                                               \
214 215 216 217 218 219
  TFH(KeyedLoadIC_SloppyArguments, LoadWithVector)                             \
  TFH(LoadIndexedInterceptorIC, LoadWithVector)                                \
  TFH(KeyedStoreIC_SloppyArguments_Standard, StoreWithVector)                  \
  TFH(KeyedStoreIC_SloppyArguments_GrowNoTransitionHandleCOW, StoreWithVector) \
  TFH(KeyedStoreIC_SloppyArguments_NoTransitionIgnoreOOB, StoreWithVector)     \
  TFH(KeyedStoreIC_SloppyArguments_NoTransitionHandleCOW, StoreWithVector)     \
220 221 222 223 224 225 226 227
  TFH(StoreFastElementIC_Standard, StoreWithVector)                            \
  TFH(StoreFastElementIC_GrowNoTransitionHandleCOW, StoreWithVector)           \
  TFH(StoreFastElementIC_NoTransitionIgnoreOOB, StoreWithVector)               \
  TFH(StoreFastElementIC_NoTransitionHandleCOW, StoreWithVector)               \
  TFH(ElementsTransitionAndStore_Standard, StoreTransition)                    \
  TFH(ElementsTransitionAndStore_GrowNoTransitionHandleCOW, StoreTransition)   \
  TFH(ElementsTransitionAndStore_NoTransitionIgnoreOOB, StoreTransition)       \
  TFH(ElementsTransitionAndStore_NoTransitionHandleCOW, StoreTransition)       \
228 229 230
  TFH(KeyedHasIC_PolymorphicName, LoadWithVector)                              \
  TFH(KeyedHasIC_SloppyArguments, LoadWithVector)                              \
  TFH(HasIndexedInterceptorIC, LoadWithVector)                                 \
231
                                                                               \
232
  /* Microtask helpers */                                                      \
233
  TFS(EnqueueMicrotask, kMicrotask)                                            \
234
  ASM(RunMicrotasksTrampoline, RunMicrotasksEntry)                             \
235
  TFC(RunMicrotasks, RunMicrotasks)                                            \
236
                                                                               \
237
  /* Object property helpers */                                                \
238
  TFS(HasProperty, kObject, kKey)                                              \
239
  TFS(DeleteProperty, kObject, kKey, kLanguageMode)                            \
240 241 242
  /* ES #sec-copydataproperties */                                             \
  TFS(CopyDataProperties, kTarget, kSource)                                    \
  TFS(SetDataProperties, kTarget, kSource)                                     \
243 244
                                                                               \
  /* Abort */                                                                  \
245
  TFC(Abort, Abort)                                                            \
246
  TFC(AbortCSAAssert, Abort)                                                   \
247
                                                                               \
248 249 250 251
  /* Built-in functions for Javascript */                                      \
  /* Special internal builtins */                                              \
  CPP(EmptyFunction)                                                           \
  CPP(Illegal)                                                                 \
252
  CPP(StrictPoisonPillThrower)                                                 \
253
  CPP(UnsupportedThrower)                                                      \
254
  TFJ(ReturnReceiver, 0, kReceiver)                                            \
255 256
                                                                               \
  /* Array */                                                                  \
257 258
  TFC(ArrayConstructor, JSTrampoline)                                          \
  TFC(ArrayConstructorImpl, ArrayConstructor)                                  \
259
  TFC(ArrayNoArgumentConstructor_PackedSmi_DontOverride,                       \
260
      ArrayNoArgumentConstructor)                                              \
261
  TFC(ArrayNoArgumentConstructor_HoleySmi_DontOverride,                        \
262
      ArrayNoArgumentConstructor)                                              \
263
  TFC(ArrayNoArgumentConstructor_PackedSmi_DisableAllocationSites,             \
264
      ArrayNoArgumentConstructor)                                              \
265
  TFC(ArrayNoArgumentConstructor_HoleySmi_DisableAllocationSites,              \
266
      ArrayNoArgumentConstructor)                                              \
267
  TFC(ArrayNoArgumentConstructor_Packed_DisableAllocationSites,                \
268
      ArrayNoArgumentConstructor)                                              \
269
  TFC(ArrayNoArgumentConstructor_Holey_DisableAllocationSites,                 \
270
      ArrayNoArgumentConstructor)                                              \
271
  TFC(ArrayNoArgumentConstructor_PackedDouble_DisableAllocationSites,          \
272
      ArrayNoArgumentConstructor)                                              \
273
  TFC(ArrayNoArgumentConstructor_HoleyDouble_DisableAllocationSites,           \
274
      ArrayNoArgumentConstructor)                                              \
275
  TFC(ArraySingleArgumentConstructor_PackedSmi_DontOverride,                   \
276
      ArraySingleArgumentConstructor)                                          \
277
  TFC(ArraySingleArgumentConstructor_HoleySmi_DontOverride,                    \
278
      ArraySingleArgumentConstructor)                                          \
279
  TFC(ArraySingleArgumentConstructor_PackedSmi_DisableAllocationSites,         \
280
      ArraySingleArgumentConstructor)                                          \
281
  TFC(ArraySingleArgumentConstructor_HoleySmi_DisableAllocationSites,          \
282
      ArraySingleArgumentConstructor)                                          \
283
  TFC(ArraySingleArgumentConstructor_Packed_DisableAllocationSites,            \
284
      ArraySingleArgumentConstructor)                                          \
285
  TFC(ArraySingleArgumentConstructor_Holey_DisableAllocationSites,             \
286
      ArraySingleArgumentConstructor)                                          \
287
  TFC(ArraySingleArgumentConstructor_PackedDouble_DisableAllocationSites,      \
288
      ArraySingleArgumentConstructor)                                          \
289
  TFC(ArraySingleArgumentConstructor_HoleyDouble_DisableAllocationSites,       \
290 291
      ArraySingleArgumentConstructor)                                          \
  TFC(ArrayNArgumentsConstructor, ArrayNArgumentsConstructor)                  \
292
  CPP(ArrayConcat)                                                             \
293 294
  /* ES6 #sec-array.prototype.fill */                                          \
  CPP(ArrayPrototypeFill)                                                      \
295
  /* ES7 #sec-array.prototype.includes */                                      \
296 297 298 299 300 301
  TFS(ArrayIncludesSmiOrObject, kElements, kSearchElement, kLength,            \
      kFromIndex)                                                              \
  TFS(ArrayIncludesPackedDoubles, kElements, kSearchElement, kLength,          \
      kFromIndex)                                                              \
  TFS(ArrayIncludesHoleyDoubles, kElements, kSearchElement, kLength,           \
      kFromIndex)                                                              \
302
  TFJ(ArrayIncludes, kDontAdaptArgumentsSentinel)                              \
303
  /* ES6 #sec-array.prototype.indexof */                                       \
304 305 306 307 308
  TFS(ArrayIndexOfSmiOrObject, kElements, kSearchElement, kLength, kFromIndex) \
  TFS(ArrayIndexOfPackedDoubles, kElements, kSearchElement, kLength,           \
      kFromIndex)                                                              \
  TFS(ArrayIndexOfHoleyDoubles, kElements, kSearchElement, kLength,            \
      kFromIndex)                                                              \
309
  TFJ(ArrayIndexOf, kDontAdaptArgumentsSentinel)                               \
310 311
  /* ES6 #sec-array.prototype.pop */                                           \
  CPP(ArrayPop)                                                                \
312
  TFJ(ArrayPrototypePop, kDontAdaptArgumentsSentinel)                          \
313 314
  /* ES6 #sec-array.prototype.push */                                          \
  CPP(ArrayPush)                                                               \
315
  TFJ(ArrayPrototypePush, kDontAdaptArgumentsSentinel)                         \
316 317 318 319
  /* ES6 #sec-array.prototype.shift */                                         \
  CPP(ArrayShift)                                                              \
  /* ES6 #sec-array.prototype.unshift */                                       \
  CPP(ArrayUnshift)                                                            \
320 321
  /* Support for Array.from and other array-copying idioms */                  \
  TFS(CloneFastJSArray, kSource)                                               \
322
  TFS(CloneFastJSArrayFillingHoles, kSource)                                   \
323
  TFS(ExtractFastJSArray, kSource, kBegin, kCount)                             \
324
  /* ES6 #sec-array.prototype.entries */                                       \
325
  TFJ(ArrayPrototypeEntries, 0, kReceiver)                                     \
326
  /* ES6 #sec-array.prototype.keys */                                          \
327
  TFJ(ArrayPrototypeKeys, 0, kReceiver)                                        \
328
  /* ES6 #sec-array.prototype.values */                                        \
329
  TFJ(ArrayPrototypeValues, 0, kReceiver)                                      \
330
  /* ES6 #sec-%arrayiteratorprototype%.next */                                 \
331
  TFJ(ArrayIteratorPrototypeNext, 0, kReceiver)                                \
332 333 334 335
  /* https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray */          \
  TFS(FlattenIntoArray, kTarget, kSource, kSourceLength, kStart, kDepth)       \
  TFS(FlatMapIntoArray, kTarget, kSource, kSourceLength, kStart, kDepth,       \
      kMapperFunction, kThisArg)                                               \
336
  /* https://tc39.github.io/proposal-flatMap/#sec-Array.prototype.flat */      \
337
  TFJ(ArrayPrototypeFlat, kDontAdaptArgumentsSentinel)                         \
338
  /* https://tc39.github.io/proposal-flatMap/#sec-Array.prototype.flatMap */   \
339
  TFJ(ArrayPrototypeFlatMap, kDontAdaptArgumentsSentinel)                      \
340 341
                                                                               \
  /* ArrayBuffer */                                                            \
342
  /* ES #sec-arraybuffer-constructor */                                        \
343
  CPP(ArrayBufferConstructor)                                                  \
344
  CPP(ArrayBufferConstructor_DoNotInitialize)                                  \
345 346 347
  CPP(ArrayBufferPrototypeSlice)                                               \
                                                                               \
  /* AsyncFunction */                                                          \
348
  TFS(AsyncFunctionEnter, kClosure, kReceiver)                                 \
349 350
  TFS(AsyncFunctionReject, kAsyncFunctionObject, kReason, kCanSuspend)         \
  TFS(AsyncFunctionResolve, kAsyncFunctionObject, kValue, kCanSuspend)         \
351
  TFC(AsyncFunctionLazyDeoptContinuation, AsyncFunctionStackParameter)         \
352 353
  TFS(AsyncFunctionAwaitCaught, kAsyncFunctionObject, kValue)                  \
  TFS(AsyncFunctionAwaitUncaught, kAsyncFunctionObject, kValue)                \
354 355
  TFJ(AsyncFunctionAwaitRejectClosure, 1, kReceiver, kSentError)               \
  TFJ(AsyncFunctionAwaitResolveClosure, 1, kReceiver, kSentValue)              \
356
                                                                               \
357 358 359 360 361 362 363 364
  /* BigInt */                                                                 \
  CPP(BigIntConstructor)                                                       \
  CPP(BigIntAsUintN)                                                           \
  CPP(BigIntAsIntN)                                                            \
  CPP(BigIntPrototypeToLocaleString)                                           \
  CPP(BigIntPrototypeToString)                                                 \
  CPP(BigIntPrototypeValueOf)                                                  \
                                                                               \
365 366 367 368 369 370 371 372 373
  /* CallSite */                                                               \
  CPP(CallSitePrototypeGetColumnNumber)                                        \
  CPP(CallSitePrototypeGetEvalOrigin)                                          \
  CPP(CallSitePrototypeGetFileName)                                            \
  CPP(CallSitePrototypeGetFunction)                                            \
  CPP(CallSitePrototypeGetFunctionName)                                        \
  CPP(CallSitePrototypeGetLineNumber)                                          \
  CPP(CallSitePrototypeGetMethodName)                                          \
  CPP(CallSitePrototypeGetPosition)                                            \
374
  CPP(CallSitePrototypeGetPromiseIndex)                                        \
375 376 377
  CPP(CallSitePrototypeGetScriptNameOrSourceURL)                               \
  CPP(CallSitePrototypeGetThis)                                                \
  CPP(CallSitePrototypeGetTypeName)                                            \
378
  CPP(CallSitePrototypeIsAsync)                                                \
379 380 381
  CPP(CallSitePrototypeIsConstructor)                                          \
  CPP(CallSitePrototypeIsEval)                                                 \
  CPP(CallSitePrototypeIsNative)                                               \
382
  CPP(CallSitePrototypeIsPromiseAll)                                           \
383 384 385
  CPP(CallSitePrototypeIsToplevel)                                             \
  CPP(CallSitePrototypeToString)                                               \
                                                                               \
386 387 388 389 390 391 392 393 394 395 396 397 398 399 400
  /* Console */                                                                \
  CPP(ConsoleDebug)                                                            \
  CPP(ConsoleError)                                                            \
  CPP(ConsoleInfo)                                                             \
  CPP(ConsoleLog)                                                              \
  CPP(ConsoleWarn)                                                             \
  CPP(ConsoleDir)                                                              \
  CPP(ConsoleDirXml)                                                           \
  CPP(ConsoleTable)                                                            \
  CPP(ConsoleTrace)                                                            \
  CPP(ConsoleGroup)                                                            \
  CPP(ConsoleGroupCollapsed)                                                   \
  CPP(ConsoleGroupEnd)                                                         \
  CPP(ConsoleClear)                                                            \
  CPP(ConsoleCount)                                                            \
401
  CPP(ConsoleCountReset)                                                       \
402 403 404 405
  CPP(ConsoleAssert)                                                           \
  CPP(ConsoleProfile)                                                          \
  CPP(ConsoleProfileEnd)                                                       \
  CPP(ConsoleTime)                                                             \
406
  CPP(ConsoleTimeLog)                                                          \
407 408
  CPP(ConsoleTimeEnd)                                                          \
  CPP(ConsoleTimeStamp)                                                        \
409
  CPP(ConsoleContext)                                                          \
410
                                                                               \
411
  /* DataView */                                                               \
412
  /* ES #sec-dataview-constructor */                                           \
413 414 415
  CPP(DataViewConstructor)                                                     \
                                                                               \
  /* Date */                                                                   \
416
  /* ES #sec-date-constructor */                                               \
417 418
  CPP(DateConstructor)                                                         \
  /* ES6 #sec-date.prototype.getdate */                                        \
419
  TFJ(DatePrototypeGetDate, 0, kReceiver)                                      \
420
  /* ES6 #sec-date.prototype.getday */                                         \
421
  TFJ(DatePrototypeGetDay, 0, kReceiver)                                       \
422
  /* ES6 #sec-date.prototype.getfullyear */                                    \
423
  TFJ(DatePrototypeGetFullYear, 0, kReceiver)                                  \
424
  /* ES6 #sec-date.prototype.gethours */                                       \
425
  TFJ(DatePrototypeGetHours, 0, kReceiver)                                     \
426
  /* ES6 #sec-date.prototype.getmilliseconds */                                \
427
  TFJ(DatePrototypeGetMilliseconds, 0, kReceiver)                              \
428
  /* ES6 #sec-date.prototype.getminutes */                                     \
429
  TFJ(DatePrototypeGetMinutes, 0, kReceiver)                                   \
430
  /* ES6 #sec-date.prototype.getmonth */                                       \
431
  TFJ(DatePrototypeGetMonth, 0, kReceiver)                                     \
432
  /* ES6 #sec-date.prototype.getseconds */                                     \
433
  TFJ(DatePrototypeGetSeconds, 0, kReceiver)                                   \
434
  /* ES6 #sec-date.prototype.gettime */                                        \
435
  TFJ(DatePrototypeGetTime, 0, kReceiver)                                      \
436
  /* ES6 #sec-date.prototype.gettimezoneoffset */                              \
437
  TFJ(DatePrototypeGetTimezoneOffset, 0, kReceiver)                            \
438
  /* ES6 #sec-date.prototype.getutcdate */                                     \
439
  TFJ(DatePrototypeGetUTCDate, 0, kReceiver)                                   \
440
  /* ES6 #sec-date.prototype.getutcday */                                      \
441
  TFJ(DatePrototypeGetUTCDay, 0, kReceiver)                                    \
442
  /* ES6 #sec-date.prototype.getutcfullyear */                                 \
443
  TFJ(DatePrototypeGetUTCFullYear, 0, kReceiver)                               \
444
  /* ES6 #sec-date.prototype.getutchours */                                    \
445
  TFJ(DatePrototypeGetUTCHours, 0, kReceiver)                                  \
446
  /* ES6 #sec-date.prototype.getutcmilliseconds */                             \
447
  TFJ(DatePrototypeGetUTCMilliseconds, 0, kReceiver)                           \
448
  /* ES6 #sec-date.prototype.getutcminutes */                                  \
449
  TFJ(DatePrototypeGetUTCMinutes, 0, kReceiver)                                \
450
  /* ES6 #sec-date.prototype.getutcmonth */                                    \
451
  TFJ(DatePrototypeGetUTCMonth, 0, kReceiver)                                  \
452
  /* ES6 #sec-date.prototype.getutcseconds */                                  \
453
  TFJ(DatePrototypeGetUTCSeconds, 0, kReceiver)                                \
454
  /* ES6 #sec-date.prototype.valueof */                                        \
455
  TFJ(DatePrototypeValueOf, 0, kReceiver)                                      \
456
  /* ES6 #sec-date.prototype-@@toprimitive */                                  \
457
  TFJ(DatePrototypeToPrimitive, 1, kReceiver, kHint)                           \
458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491
  CPP(DatePrototypeGetYear)                                                    \
  CPP(DatePrototypeSetYear)                                                    \
  CPP(DateNow)                                                                 \
  CPP(DateParse)                                                               \
  CPP(DatePrototypeSetDate)                                                    \
  CPP(DatePrototypeSetFullYear)                                                \
  CPP(DatePrototypeSetHours)                                                   \
  CPP(DatePrototypeSetMilliseconds)                                            \
  CPP(DatePrototypeSetMinutes)                                                 \
  CPP(DatePrototypeSetMonth)                                                   \
  CPP(DatePrototypeSetSeconds)                                                 \
  CPP(DatePrototypeSetTime)                                                    \
  CPP(DatePrototypeSetUTCDate)                                                 \
  CPP(DatePrototypeSetUTCFullYear)                                             \
  CPP(DatePrototypeSetUTCHours)                                                \
  CPP(DatePrototypeSetUTCMilliseconds)                                         \
  CPP(DatePrototypeSetUTCMinutes)                                              \
  CPP(DatePrototypeSetUTCMonth)                                                \
  CPP(DatePrototypeSetUTCSeconds)                                              \
  CPP(DatePrototypeToDateString)                                               \
  CPP(DatePrototypeToISOString)                                                \
  CPP(DatePrototypeToUTCString)                                                \
  CPP(DatePrototypeToString)                                                   \
  CPP(DatePrototypeToTimeString)                                               \
  CPP(DatePrototypeToJson)                                                     \
  CPP(DateUTC)                                                                 \
                                                                               \
  /* Error */                                                                  \
  CPP(ErrorConstructor)                                                        \
  CPP(ErrorCaptureStackTrace)                                                  \
  CPP(ErrorPrototypeToString)                                                  \
                                                                               \
  /* Function */                                                               \
  CPP(FunctionConstructor)                                                     \
492
  ASM(FunctionPrototypeApply, JSTrampoline)                                    \
493
  CPP(FunctionPrototypeBind)                                                   \
494
  ASM(FunctionPrototypeCall, JSTrampoline)                                     \
495 496 497 498
  /* ES6 #sec-function.prototype.tostring */                                   \
  CPP(FunctionPrototypeToString)                                               \
                                                                               \
  /* Belongs to Objects but is a dependency of GeneratorPrototypeResume */     \
499
  TFS(CreateIterResultObject, kValue, kDone)                                   \
500 501
                                                                               \
  /* Generator and Async */                                                    \
502
  TFS(CreateGeneratorObject, kClosure, kReceiver)                              \
503 504
  CPP(GeneratorFunctionConstructor)                                            \
  /* ES6 #sec-generator.prototype.next */                                      \
505
  TFJ(GeneratorPrototypeNext, kDontAdaptArgumentsSentinel)                     \
506
  /* ES6 #sec-generator.prototype.return */                                    \
507
  TFJ(GeneratorPrototypeReturn, kDontAdaptArgumentsSentinel)                   \
508
  /* ES6 #sec-generator.prototype.throw */                                     \
509
  TFJ(GeneratorPrototypeThrow, kDontAdaptArgumentsSentinel)                    \
510 511
  CPP(AsyncFunctionConstructor)                                                \
                                                                               \
512 513 514
  /* Iterator Protocol */                                                      \
  TFC(GetIteratorWithFeedbackLazyDeoptContinuation, GetIteratorStackParameter) \
                                                                               \
515 516 517 518 519 520 521 522 523
  /* Global object */                                                          \
  CPP(GlobalDecodeURI)                                                         \
  CPP(GlobalDecodeURIComponent)                                                \
  CPP(GlobalEncodeURI)                                                         \
  CPP(GlobalEncodeURIComponent)                                                \
  CPP(GlobalEscape)                                                            \
  CPP(GlobalUnescape)                                                          \
  CPP(GlobalEval)                                                              \
  /* ES6 #sec-isfinite-number */                                               \
524
  TFJ(GlobalIsFinite, 1, kReceiver, kNumber)                                   \
525
  /* ES6 #sec-isnan-number */                                                  \
526
  TFJ(GlobalIsNaN, 1, kReceiver, kNumber)                                      \
527 528 529 530 531 532
                                                                               \
  /* JSON */                                                                   \
  CPP(JsonParse)                                                               \
  CPP(JsonStringify)                                                           \
                                                                               \
  /* ICs */                                                                    \
533
  TFH(LoadIC, LoadWithVector)                                                  \
534
  TFH(LoadIC_Megamorphic, LoadWithVector)                                      \
535 536
  TFH(LoadIC_Noninlined, LoadWithVector)                                       \
  TFH(LoadICTrampoline, Load)                                                  \
537
  TFH(LoadICTrampoline_Megamorphic, Load)                                      \
538
  TFH(LoadSuperIC, LoadWithReceiverAndVector)                                  \
539
  TFH(KeyedLoadIC, LoadWithVector)                                             \
540
  TFH(KeyedLoadIC_Megamorphic, LoadWithVector)                                 \
541
  TFH(KeyedLoadICTrampoline, Load)                                             \
542
  TFH(KeyedLoadICTrampoline_Megamorphic, Load)                                 \
543 544
  TFH(StoreGlobalIC, StoreGlobalWithVector)                                    \
  TFH(StoreGlobalICTrampoline, StoreGlobal)                                    \
545 546 547 548
  TFH(StoreIC, StoreWithVector)                                                \
  TFH(StoreICTrampoline, Store)                                                \
  TFH(KeyedStoreIC, StoreWithVector)                                           \
  TFH(KeyedStoreICTrampoline, Store)                                           \
549
  TFH(StoreInArrayLiteralIC, StoreWithVector)                                  \
550 551 552 553
  TFH(LoadGlobalIC, LoadGlobalWithVector)                                      \
  TFH(LoadGlobalICInsideTypeof, LoadGlobalWithVector)                          \
  TFH(LoadGlobalICTrampoline, LoadGlobal)                                      \
  TFH(LoadGlobalICInsideTypeofTrampoline, LoadGlobal)                          \
554
  TFH(CloneObjectIC, CloneObjectWithVector)                                    \
555
  TFH(CloneObjectIC_Slow, CloneObjectWithVector)                               \
556 557
  TFH(KeyedHasIC, LoadWithVector)                                              \
  TFH(KeyedHasIC_Megamorphic, LoadWithVector)                                  \
558
                                                                               \
559 560
  /* IterableToList */                                                         \
  /* ES #sec-iterabletolist */                                                 \
561
  TFS(IterableToList, kIterable, kIteratorFn)                                  \
562
  TFS(IterableToFixedArray, kIterable, kIteratorFn)                            \
563
  TFS(IterableToListWithSymbolLookup, kIterable)                               \
564
  TFS(IterableToFixedArrayWithSymbolLookupSlow, kIterable)                     \
565
  TFS(IterableToListMayPreserveHoles, kIterable, kIteratorFn)                  \
566
  TFS(IterableToFixedArrayForWasm, kIterable, kExpectedLength)                 \
567
                                                                               \
568 569 570
  /* #sec-createstringlistfromiterable */                                      \
  TFS(StringListFromIterable, kIterable)                                       \
                                                                               \
571
  /* Map */                                                                    \
572
  TFS(FindOrderedHashMapEntry, kTable, kKey)                                   \
573
  TFJ(MapConstructor, kDontAdaptArgumentsSentinel)                             \
574 575 576 577
  TFJ(MapPrototypeSet, 2, kReceiver, kKey, kValue)                             \
  TFJ(MapPrototypeDelete, 1, kReceiver, kKey)                                  \
  TFJ(MapPrototypeGet, 1, kReceiver, kKey)                                     \
  TFJ(MapPrototypeHas, 1, kReceiver, kKey)                                     \
578
  CPP(MapPrototypeClear)                                                       \
579
  /* ES #sec-map.prototype.entries */                                          \
580
  TFJ(MapPrototypeEntries, 0, kReceiver)                                       \
581
  /* ES #sec-get-map.prototype.size */                                         \
582
  TFJ(MapPrototypeGetSize, 0, kReceiver)                                       \
583
  /* ES #sec-map.prototype.forEach */                                          \
584
  TFJ(MapPrototypeForEach, kDontAdaptArgumentsSentinel)                        \
585
  /* ES #sec-map.prototype.keys */                                             \
586
  TFJ(MapPrototypeKeys, 0, kReceiver)                                          \
587
  /* ES #sec-map.prototype.values */                                           \
588
  TFJ(MapPrototypeValues, 0, kReceiver)                                        \
589
  /* ES #sec-%mapiteratorprototype%.next */                                    \
590
  TFJ(MapIteratorPrototypeNext, 0, kReceiver)                                  \
591
  TFS(MapIteratorToList, kSource)                                              \
592
                                                                               \
593
  /* ES #sec-number-constructor */                                             \
594 595 596 597
  CPP(NumberPrototypeToExponential)                                            \
  CPP(NumberPrototypeToFixed)                                                  \
  CPP(NumberPrototypeToLocaleString)                                           \
  CPP(NumberPrototypeToPrecision)                                              \
598
  TFC(SameValue, Compare)                                                      \
599
  TFC(SameValueNumbersOnly, Compare)                                           \
600
                                                                               \
601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628
  /* Binary ops with feedback collection */                                    \
  TFC(Add_WithFeedback, BinaryOp_WithFeedback)                                 \
  TFC(Subtract_WithFeedback, BinaryOp_WithFeedback)                            \
  TFC(Multiply_WithFeedback, BinaryOp_WithFeedback)                            \
  TFC(Divide_WithFeedback, BinaryOp_WithFeedback)                              \
  TFC(Modulus_WithFeedback, BinaryOp_WithFeedback)                             \
  TFC(Exponentiate_WithFeedback, BinaryOp_WithFeedback)                        \
  TFC(BitwiseAnd_WithFeedback, BinaryOp_WithFeedback)                          \
  TFC(BitwiseOr_WithFeedback, BinaryOp_WithFeedback)                           \
  TFC(BitwiseXor_WithFeedback, BinaryOp_WithFeedback)                          \
  TFC(ShiftLeft_WithFeedback, BinaryOp_WithFeedback)                           \
  TFC(ShiftRight_WithFeedback, BinaryOp_WithFeedback)                          \
  TFC(ShiftRightLogical_WithFeedback, BinaryOp_WithFeedback)                   \
                                                                               \
  /* Compare ops with feedback collection */                                   \
  TFC(Equal_WithFeedback, Compare_WithFeedback)                                \
  TFC(StrictEqual_WithFeedback, Compare_WithFeedback)                          \
  TFC(LessThan_WithFeedback, Compare_WithFeedback)                             \
  TFC(GreaterThan_WithFeedback, Compare_WithFeedback)                          \
  TFC(LessThanOrEqual_WithFeedback, Compare_WithFeedback)                      \
  TFC(GreaterThanOrEqual_WithFeedback, Compare_WithFeedback)                   \
                                                                               \
  /* Unary ops with feedback collection */                                     \
  TFC(BitwiseNot_WithFeedback, UnaryOp_WithFeedback)                           \
  TFC(Decrement_WithFeedback, UnaryOp_WithFeedback)                            \
  TFC(Increment_WithFeedback, UnaryOp_WithFeedback)                            \
  TFC(Negate_WithFeedback, UnaryOp_WithFeedback)                               \
                                                                               \
629
  /* Object */                                                                 \
630
  /* ES #sec-object-constructor */                                             \
631
  TFJ(ObjectAssign, kDontAdaptArgumentsSentinel)                               \
632
  /* ES #sec-object.create */                                                  \
633
  TFJ(ObjectCreate, kDontAdaptArgumentsSentinel)                               \
634 635 636 637
  CPP(ObjectDefineGetter)                                                      \
  CPP(ObjectDefineProperties)                                                  \
  CPP(ObjectDefineProperty)                                                    \
  CPP(ObjectDefineSetter)                                                      \
638
  TFJ(ObjectEntries, 1, kReceiver, kObject)                                    \
639
  CPP(ObjectFreeze)                                                            \
640
  TFJ(ObjectGetOwnPropertyDescriptor, kDontAdaptArgumentsSentinel)             \
641
  CPP(ObjectGetOwnPropertyDescriptors)                                         \
642
  TFJ(ObjectGetOwnPropertyNames, 1, kReceiver, kObject)                        \
643
  CPP(ObjectGetOwnPropertySymbols)                                             \
644
  TFJ(ObjectIs, 2, kReceiver, kLeft, kRight)                                   \
645 646
  CPP(ObjectIsFrozen)                                                          \
  CPP(ObjectIsSealed)                                                          \
647
  TFJ(ObjectKeys, 1, kReceiver, kObject)                                       \
648 649
  CPP(ObjectLookupGetter)                                                      \
  CPP(ObjectLookupSetter)                                                      \
650
  /* ES6 #sec-object.prototype.hasownproperty */                               \
651 652
  TFJ(ObjectPrototypeHasOwnProperty, 1, kReceiver, kKey)                       \
  TFJ(ObjectPrototypeIsPrototypeOf, 1, kReceiver, kValue)                      \
653 654 655 656
  CPP(ObjectPrototypePropertyIsEnumerable)                                     \
  CPP(ObjectPrototypeGetProto)                                                 \
  CPP(ObjectPrototypeSetProto)                                                 \
  CPP(ObjectSeal)                                                              \
657
  TFS(ObjectToString, kReceiver)                                               \
658
  TFJ(ObjectValues, 1, kReceiver, kObject)                                     \
659 660
                                                                               \
  /* instanceof */                                                             \
661 662
  TFC(OrdinaryHasInstance, Compare)                                            \
  TFC(InstanceOf, Compare)                                                     \
663
  TFC(InstanceOf_WithFeedback, Compare_WithFeedback)                           \
664 665
                                                                               \
  /* for-in */                                                                 \
666
  TFS(ForInEnumerate, kReceiver)                                               \
667
  TFS(ForInFilter, kKey, kObject)                                              \
668 669
                                                                               \
  /* Reflect */                                                                \
670 671
  ASM(ReflectApply, JSTrampoline)                                              \
  ASM(ReflectConstruct, JSTrampoline)                                          \
672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687
  CPP(ReflectDefineProperty)                                                   \
  CPP(ReflectGetOwnPropertyDescriptor)                                         \
  CPP(ReflectOwnKeys)                                                          \
  CPP(ReflectSet)                                                              \
                                                                               \
  /* RegExp */                                                                 \
  CPP(RegExpCapture1Getter)                                                    \
  CPP(RegExpCapture2Getter)                                                    \
  CPP(RegExpCapture3Getter)                                                    \
  CPP(RegExpCapture4Getter)                                                    \
  CPP(RegExpCapture5Getter)                                                    \
  CPP(RegExpCapture6Getter)                                                    \
  CPP(RegExpCapture7Getter)                                                    \
  CPP(RegExpCapture8Getter)                                                    \
  CPP(RegExpCapture9Getter)                                                    \
  /* ES #sec-regexp-pattern-flags */                                           \
688
  TFJ(RegExpConstructor, 2, kReceiver, kPattern, kFlags)                       \
689 690 691 692 693 694
  CPP(RegExpInputGetter)                                                       \
  CPP(RegExpInputSetter)                                                       \
  CPP(RegExpLastMatchGetter)                                                   \
  CPP(RegExpLastParenGetter)                                                   \
  CPP(RegExpLeftContextGetter)                                                 \
  /* ES #sec-regexp.prototype.compile */                                       \
695
  TFJ(RegExpPrototypeCompile, 2, kReceiver, kPattern, kFlags)                  \
696 697 698
  CPP(RegExpPrototypeToString)                                                 \
  CPP(RegExpRightContextGetter)                                                \
                                                                               \
699 700
  /* RegExp helpers */                                                         \
  TFS(RegExpExecAtom, kRegExp, kString, kLastIndex, kMatchInfo)                \
701
  TFS(RegExpExecInternal, kRegExp, kString, kLastIndex, kMatchInfo)            \
702
  ASM(RegExpInterpreterTrampoline, CCall)                                      \
703
  ASM(RegExpExperimentalTrampoline, CCall)                                     \
704
                                                                               \
705
  /* Set */                                                                    \
706
  TFJ(SetConstructor, kDontAdaptArgumentsSentinel)                             \
707 708 709
  TFJ(SetPrototypeHas, 1, kReceiver, kKey)                                     \
  TFJ(SetPrototypeAdd, 1, kReceiver, kKey)                                     \
  TFJ(SetPrototypeDelete, 1, kReceiver, kKey)                                  \
710
  CPP(SetPrototypeClear)                                                       \
711
  /* ES #sec-set.prototype.entries */                                          \
712
  TFJ(SetPrototypeEntries, 0, kReceiver)                                       \
713
  /* ES #sec-get-set.prototype.size */                                         \
714
  TFJ(SetPrototypeGetSize, 0, kReceiver)                                       \
715
  /* ES #sec-set.prototype.foreach */                                          \
716
  TFJ(SetPrototypeForEach, kDontAdaptArgumentsSentinel)                        \
717
  /* ES #sec-set.prototype.values */                                           \
718
  TFJ(SetPrototypeValues, 0, kReceiver)                                        \
719
  /* ES #sec-%setiteratorprototype%.next */                                    \
720
  TFJ(SetIteratorPrototypeNext, 0, kReceiver)                                  \
721
  TFS(SetOrSetIteratorToList, kSource)                                         \
722
                                                                               \
723 724
  /* SharedArrayBuffer */                                                      \
  CPP(SharedArrayBufferPrototypeSlice)                                         \
725 726 727 728 729 730 731 732 733 734
  TFJ(AtomicsLoad, 2, kReceiver, kArray, kIndex)                               \
  TFJ(AtomicsStore, 3, kReceiver, kArray, kIndex, kValue)                      \
  TFJ(AtomicsExchange, 3, kReceiver, kArray, kIndex, kValue)                   \
  TFJ(AtomicsCompareExchange, 4, kReceiver, kArray, kIndex, kOldValue,         \
      kNewValue)                                                               \
  TFJ(AtomicsAdd, 3, kReceiver, kArray, kIndex, kValue)                        \
  TFJ(AtomicsSub, 3, kReceiver, kArray, kIndex, kValue)                        \
  TFJ(AtomicsAnd, 3, kReceiver, kArray, kIndex, kValue)                        \
  TFJ(AtomicsOr, 3, kReceiver, kArray, kIndex, kValue)                         \
  TFJ(AtomicsXor, 3, kReceiver, kArray, kIndex, kValue)                        \
735
  CPP(AtomicsNotify)                                                           \
736 737
  CPP(AtomicsIsLockFree)                                                       \
  CPP(AtomicsWait)                                                             \
738
  CPP(AtomicsWaitAsync)                                                        \
739 740
                                                                               \
  /* String */                                                                 \
741
  /* ES #sec-string.fromcodepoint */                                           \
742 743
  CPP(StringFromCodePoint)                                                     \
  /* ES6 #sec-string.fromcharcode */                                           \
744
  TFJ(StringFromCharCode, kDontAdaptArgumentsSentinel)                         \
745
  /* ES6 #sec-string.prototype.includes */                                     \
746
  TFJ(StringPrototypeIncludes, kDontAdaptArgumentsSentinel)                    \
747
  /* ES6 #sec-string.prototype.indexof */                                      \
748
  TFJ(StringPrototypeIndexOf, kDontAdaptArgumentsSentinel)                     \
749 750
  /* ES6 #sec-string.prototype.lastindexof */                                  \
  CPP(StringPrototypeLastIndexOf)                                              \
751
  /* ES6 #sec-string.prototype.match */                                        \
752
  TFJ(StringPrototypeMatch, 1, kReceiver, kRegexp)                             \
753
  /* ES #sec-string.prototype.matchAll */                                      \
754
  TFJ(StringPrototypeMatchAll, 1, kReceiver, kRegexp)                          \
755 756 757
  /* ES6 #sec-string.prototype.localecompare */                                \
  CPP(StringPrototypeLocaleCompare)                                            \
  /* ES6 #sec-string.prototype.replace */                                      \
758
  TFJ(StringPrototypeReplace, 2, kReceiver, kSearch, kReplace)                 \
759
  /* ES6 #sec-string.prototype.search */                                       \
760
  TFJ(StringPrototypeSearch, 1, kReceiver, kRegexp)                            \
761
  /* ES6 #sec-string.prototype.split */                                        \
762 763 764 765
  TFJ(StringPrototypeSplit, kDontAdaptArgumentsSentinel)                       \
  TFJ(StringPrototypeTrim, kDontAdaptArgumentsSentinel)                        \
  TFJ(StringPrototypeTrimEnd, kDontAdaptArgumentsSentinel)                     \
  TFJ(StringPrototypeTrimStart, kDontAdaptArgumentsSentinel)                   \
766 767
  /* ES6 #sec-string.raw */                                                    \
  CPP(StringRaw)                                                               \
768 769
                                                                               \
  /* Symbol */                                                                 \
770
  /* ES #sec-symbol-constructor */                                             \
771 772 773 774 775 776 777
  CPP(SymbolConstructor)                                                       \
  /* ES6 #sec-symbol.for */                                                    \
  CPP(SymbolFor)                                                               \
  /* ES6 #sec-symbol.keyfor */                                                 \
  CPP(SymbolKeyFor)                                                            \
                                                                               \
  /* TypedArray */                                                             \
778
  /* ES #sec-typedarray-constructors */                                        \
779
  TFJ(TypedArrayBaseConstructor, 0, kReceiver)                                 \
780
  TFJ(TypedArrayConstructor, kDontAdaptArgumentsSentinel)                      \
781 782
  CPP(TypedArrayPrototypeBuffer)                                               \
  /* ES6 #sec-get-%typedarray%.prototype.bytelength */                         \
783
  TFJ(TypedArrayPrototypeByteLength, 0, kReceiver)                             \
784
  /* ES6 #sec-get-%typedarray%.prototype.byteoffset */                         \
785
  TFJ(TypedArrayPrototypeByteOffset, 0, kReceiver)                             \
786
  /* ES6 #sec-get-%typedarray%.prototype.length */                             \
787
  TFJ(TypedArrayPrototypeLength, 0, kReceiver)                                 \
788 789 790 791 792 793 794 795 796 797 798 799
  /* ES6 #sec-%typedarray%.prototype.copywithin */                             \
  CPP(TypedArrayPrototypeCopyWithin)                                           \
  /* ES6 #sec-%typedarray%.prototype.fill */                                   \
  CPP(TypedArrayPrototypeFill)                                                 \
  /* ES7 #sec-%typedarray%.prototype.includes */                               \
  CPP(TypedArrayPrototypeIncludes)                                             \
  /* ES6 #sec-%typedarray%.prototype.indexof */                                \
  CPP(TypedArrayPrototypeIndexOf)                                              \
  /* ES6 #sec-%typedarray%.prototype.lastindexof */                            \
  CPP(TypedArrayPrototypeLastIndexOf)                                          \
  /* ES6 #sec-%typedarray%.prototype.reverse */                                \
  CPP(TypedArrayPrototypeReverse)                                              \
800
  /* ES6 #sec-get-%typedarray%.prototype-@@tostringtag */                      \
801
  TFJ(TypedArrayPrototypeToStringTag, 0, kReceiver)                            \
802
  /* ES6 %TypedArray%.prototype.map */                                         \
803
  TFJ(TypedArrayPrototypeMap, kDontAdaptArgumentsSentinel)                     \
804 805
                                                                               \
  /* Wasm */                                                                   \
806
  ASM(GenericJSToWasmWrapper, Dummy)                                           \
807
  ASM(WasmCompileLazy, Dummy)                                                  \
808
  ASM(WasmDebugBreak, Dummy)                                                   \
809
  TFC(WasmFloat32ToNumber, WasmFloat32ToNumber)                                \
810
  TFC(WasmFloat64ToNumber, WasmFloat64ToNumber)                                \
811
  TFS(WasmAllocateArrayWithRtt, kMap, kLength, kElementSize)                   \
812 813
  TFC(WasmI32AtomicWait32, WasmI32AtomicWait32)                                \
  TFC(WasmI64AtomicWait32, WasmI64AtomicWait32)                                \
814
                                                                               \
815
  /* WeakMap */                                                                \
816
  TFJ(WeakMapConstructor, kDontAdaptArgumentsSentinel)                         \
817
  TFS(WeakMapLookupHashIndex, kTable, kKey)                                    \
818
  TFJ(WeakMapGet, 1, kReceiver, kKey)                                          \
819
  TFJ(WeakMapPrototypeHas, 1, kReceiver, kKey)                                 \
820 821
  TFJ(WeakMapPrototypeSet, 2, kReceiver, kKey, kValue)                         \
  TFJ(WeakMapPrototypeDelete, 1, kReceiver, kKey)                              \
822
                                                                               \
823
  /* WeakSet */                                                                \
824
  TFJ(WeakSetConstructor, kDontAdaptArgumentsSentinel)                         \
825
  TFJ(WeakSetPrototypeHas, 1, kReceiver, kKey)                                 \
826 827
  TFJ(WeakSetPrototypeAdd, 1, kReceiver, kValue)                               \
  TFJ(WeakSetPrototypeDelete, 1, kReceiver, kValue)                            \
828 829
                                                                               \
  /* WeakSet / WeakMap Helpers */                                              \
830
  TFS(WeakCollectionDelete, kCollection, kKey)                                 \
831
  TFS(WeakCollectionSet, kCollection, kKey, kValue)                            \
832
                                                                               \
833 834
  /* AsyncGenerator */                                                         \
                                                                               \
835 836
  TFS(AsyncGeneratorResolve, kGenerator, kValue, kDone)                        \
  TFS(AsyncGeneratorReject, kGenerator, kValue)                                \
837
  TFS(AsyncGeneratorYield, kGenerator, kValue, kIsCaught)                      \
838
  TFS(AsyncGeneratorReturn, kGenerator, kValue, kIsCaught)                     \
839
  TFS(AsyncGeneratorResumeNext, kGenerator)                                    \
840 841 842 843 844 845
                                                                               \
  /* AsyncGeneratorFunction( p1, p2, ... pn, body ) */                         \
  /* proposal-async-iteration/#sec-asyncgeneratorfunction-constructor */       \
  CPP(AsyncGeneratorFunctionConstructor)                                       \
  /* AsyncGenerator.prototype.next ( value ) */                                \
  /* proposal-async-iteration/#sec-asyncgenerator-prototype-next */            \
846
  TFJ(AsyncGeneratorPrototypeNext, kDontAdaptArgumentsSentinel)                \
847 848
  /* AsyncGenerator.prototype.return ( value ) */                              \
  /* proposal-async-iteration/#sec-asyncgenerator-prototype-return */          \
849
  TFJ(AsyncGeneratorPrototypeReturn, kDontAdaptArgumentsSentinel)              \
850 851
  /* AsyncGenerator.prototype.throw ( exception ) */                           \
  /* proposal-async-iteration/#sec-asyncgenerator-prototype-throw */           \
852
  TFJ(AsyncGeneratorPrototypeThrow, kDontAdaptArgumentsSentinel)               \
853
                                                                               \
854 855
  /* Await (proposal-async-iteration/#await), with resume behaviour */         \
  /* specific to Async Generators. Internal / Not exposed to JS code. */       \
856 857
  TFS(AsyncGeneratorAwaitCaught, kAsyncGeneratorObject, kValue)                \
  TFS(AsyncGeneratorAwaitUncaught, kAsyncGeneratorObject, kValue)              \
858 859 860 861 862 863
  TFJ(AsyncGeneratorAwaitResolveClosure, 1, kReceiver, kValue)                 \
  TFJ(AsyncGeneratorAwaitRejectClosure, 1, kReceiver, kValue)                  \
  TFJ(AsyncGeneratorYieldResolveClosure, 1, kReceiver, kValue)                 \
  TFJ(AsyncGeneratorReturnClosedResolveClosure, 1, kReceiver, kValue)          \
  TFJ(AsyncGeneratorReturnClosedRejectClosure, 1, kReceiver, kValue)           \
  TFJ(AsyncGeneratorReturnResolveClosure, 1, kReceiver, kValue)                \
864
                                                                               \
865 866 867 868 869
  /* Async-from-Sync Iterator */                                               \
                                                                               \
  /* %AsyncFromSyncIteratorPrototype% */                                       \
  /* See tc39.github.io/proposal-async-iteration/ */                           \
  /* #sec-%asyncfromsynciteratorprototype%-object) */                          \
870
  TFJ(AsyncFromSyncIteratorPrototypeNext, kDontAdaptArgumentsSentinel)         \
871
  /* #sec-%asyncfromsynciteratorprototype%.throw */                            \
872
  TFJ(AsyncFromSyncIteratorPrototypeThrow, kDontAdaptArgumentsSentinel)        \
873
  /* #sec-%asyncfromsynciteratorprototype%.return */                           \
874
  TFJ(AsyncFromSyncIteratorPrototypeReturn, kDontAdaptArgumentsSentinel)       \
875
  /* #sec-async-iterator-value-unwrap-functions */                             \
876
  TFJ(AsyncIteratorValueUnwrap, 1, kReceiver, kValue)                          \
877
                                                                               \
878
  /* CEntry */                                                                 \
879 880 881 882 883 884 885 886 887 888 889
  ASM(CEntry_Return1_DontSaveFPRegs_ArgvOnStack_NoBuiltinExit, Dummy)          \
  ASM(CEntry_Return1_DontSaveFPRegs_ArgvOnStack_BuiltinExit, Dummy)            \
  ASM(CEntry_Return1_DontSaveFPRegs_ArgvInRegister_NoBuiltinExit, Dummy)       \
  ASM(CEntry_Return1_SaveFPRegs_ArgvOnStack_NoBuiltinExit, Dummy)              \
  ASM(CEntry_Return1_SaveFPRegs_ArgvOnStack_BuiltinExit, Dummy)                \
  ASM(CEntry_Return2_DontSaveFPRegs_ArgvOnStack_NoBuiltinExit, Dummy)          \
  ASM(CEntry_Return2_DontSaveFPRegs_ArgvOnStack_BuiltinExit, Dummy)            \
  ASM(CEntry_Return2_DontSaveFPRegs_ArgvInRegister_NoBuiltinExit, Dummy)       \
  ASM(CEntry_Return2_SaveFPRegs_ArgvOnStack_NoBuiltinExit, Dummy)              \
  ASM(CEntry_Return2_SaveFPRegs_ArgvOnStack_BuiltinExit, Dummy)                \
  ASM(DirectCEntry, Dummy)                                                     \
890
                                                                               \
891
  /* String helpers */                                                         \
892
  TFS(StringAdd_CheckNone, kLeft, kRight)                                      \
893
  TFS(SubString, kString, kFrom, kTo)                                          \
894
                                                                               \
895
  /* Miscellaneous */                                                          \
896
  ASM(StackCheck, Dummy)                                                       \
897
  ASM(DoubleToI, Dummy)                                                        \
898
  TFC(GetProperty, GetProperty)                                                \
899
  TFS(GetPropertyWithReceiver, kObject, kKey, kReceiver, kOnNonExistent)       \
900
  TFS(SetProperty, kReceiver, kKey, kValue)                                    \
901
  TFS(SetPropertyInLiteral, kReceiver, kKey, kValue)                           \
902 903
  ASM(MemCopyUint8Uint8, CCall)                                                \
  ASM(MemMove, CCall)                                                          \
904 905 906
                                                                               \
  /* Trace */                                                                  \
  CPP(IsTraceCategoryEnabled)                                                  \
907 908 909
  CPP(Trace)                                                                   \
                                                                               \
  /* Weak refs */                                                              \
910
  CPP(FinalizationRegistryUnregister)                                          \
911 912
                                                                               \
  /* Async modules */                                                          \
913
  TFJ(AsyncModuleEvaluate, kDontAdaptArgumentsSentinel)                        \
914 915 916 917
                                                                               \
  /* CallAsyncModule* are spec anonymyous functions */                         \
  CPP(CallAsyncModuleFulfilled)                                                \
  CPP(CallAsyncModuleRejected)
918

919
#ifdef V8_INTL_SUPPORT
920
#define BUILTIN_LIST_INTL(CPP, TFJ, TFS)                               \
921 922
  /* ecma402 #sec-intl.collator */                                     \
  CPP(CollatorConstructor)                                             \
923 924 925 926
  /* ecma 402 #sec-collator-compare-functions*/                        \
  CPP(CollatorInternalCompare)                                         \
  /* ecma402 #sec-intl.collator.prototype.compare */                   \
  CPP(CollatorPrototypeCompare)                                        \
927 928
  /* ecma402 #sec-intl.collator.supportedlocalesof */                  \
  CPP(CollatorSupportedLocalesOf)                                      \
929
  CPP(CollatorPrototypeResolvedOptions)                                \
930 931 932 933 934 935
  /* ecma402 #sup-date.prototype.tolocaledatestring */                 \
  CPP(DatePrototypeToLocaleDateString)                                 \
  /* ecma402 #sup-date.prototype.tolocalestring */                     \
  CPP(DatePrototypeToLocaleString)                                     \
  /* ecma402 #sup-date.prototype.tolocaletimestring */                 \
  CPP(DatePrototypeToLocaleTimeString)                                 \
936 937
  /* ecma402 #sec-intl.datetimeformat */                               \
  CPP(DateTimeFormatConstructor)                                       \
938 939 940 941
  /* ecma402 #sec-datetime-format-functions */                         \
  CPP(DateTimeFormatInternalFormat)                                    \
  /* ecma402 #sec-intl.datetimeformat.prototype.format */              \
  CPP(DateTimeFormatPrototypeFormat)                                   \
942 943 944 945
  /* ecma402 #sec-intl.datetimeformat.prototype.formatrange */         \
  CPP(DateTimeFormatPrototypeFormatRange)                              \
  /* ecma402 #sec-intl.datetimeformat.prototype.formatrangetoparts */  \
  CPP(DateTimeFormatPrototypeFormatRangeToParts)                       \
946 947
  /* ecma402 #sec-intl.datetimeformat.prototype.formattoparts */       \
  CPP(DateTimeFormatPrototypeFormatToParts)                            \
948 949
  /* ecma402 #sec-intl.datetimeformat.prototype.resolvedoptions */     \
  CPP(DateTimeFormatPrototypeResolvedOptions)                          \
950 951
  /* ecma402 #sec-intl.datetimeformat.supportedlocalesof */            \
  CPP(DateTimeFormatSupportedLocalesOf)                                \
952 953 954 955 956 957 958 959
  /* ecma402 #sec-Intl.DisplayNames */                                 \
  CPP(DisplayNamesConstructor)                                         \
  /* ecma402 #sec-Intl.DisplayNames.prototype.of */                    \
  CPP(DisplayNamesPrototypeOf)                                         \
  /* ecma402 #sec-Intl.DisplayNames.prototype.resolvedOptions */       \
  CPP(DisplayNamesPrototypeResolvedOptions)                            \
  /* ecma402 #sec-Intl.DisplayNames.supportedLocalesOf */              \
  CPP(DisplayNamesSupportedLocalesOf)                                  \
960 961
  /* ecma402 #sec-intl.getcanonicallocales */                          \
  CPP(IntlGetCanonicalLocales)                                         \
962
  /* ecma402 #sec-intl-listformat-constructor */                       \
963
  CPP(ListFormatConstructor)                                           \
964
  /* ecma402 #sec-intl-list-format.prototype.format */                 \
965
  TFJ(ListFormatPrototypeFormat, kDontAdaptArgumentsSentinel)          \
966
  /* ecma402 #sec-intl-list-format.prototype.formattoparts */          \
967
  TFJ(ListFormatPrototypeFormatToParts, kDontAdaptArgumentsSentinel)   \
968 969
  /* ecma402 #sec-intl.listformat.prototype.resolvedoptions */         \
  CPP(ListFormatPrototypeResolvedOptions)                              \
970 971
  /* ecma402 #sec-intl.ListFormat.supportedlocalesof */                \
  CPP(ListFormatSupportedLocalesOf)                                    \
972 973 974 975 976 977 978
  /* ecma402 #sec-intl-locale-constructor */                           \
  CPP(LocaleConstructor)                                               \
  CPP(LocalePrototypeBaseName)                                         \
  CPP(LocalePrototypeCalendar)                                         \
  CPP(LocalePrototypeCaseFirst)                                        \
  CPP(LocalePrototypeCollation)                                        \
  CPP(LocalePrototypeHourCycle)                                        \
979
  CPP(LocalePrototypeLanguage)                                         \
980 981 982 983
  /* ecma402 #sec-Intl.Locale.prototype.maximize */                    \
  CPP(LocalePrototypeMaximize)                                         \
  /* ecma402 #sec-Intl.Locale.prototype.minimize */                    \
  CPP(LocalePrototypeMinimize)                                         \
984 985 986 987 988 989 990
  CPP(LocalePrototypeNumeric)                                          \
  CPP(LocalePrototypeNumberingSystem)                                  \
  CPP(LocalePrototypeRegion)                                           \
  CPP(LocalePrototypeScript)                                           \
  CPP(LocalePrototypeToString)                                         \
  /* ecma402 #sec-intl.numberformat */                                 \
  CPP(NumberFormatConstructor)                                         \
991 992 993 994
  /* ecma402 #sec-number-format-functions */                           \
  CPP(NumberFormatInternalFormatNumber)                                \
  /* ecma402 #sec-intl.numberformat.prototype.format */                \
  CPP(NumberFormatPrototypeFormatNumber)                               \
995 996
  /* ecma402 #sec-intl.numberformat.prototype.formattoparts */         \
  CPP(NumberFormatPrototypeFormatToParts)                              \
997 998
  /* ecma402 #sec-intl.numberformat.prototype.resolvedoptions */       \
  CPP(NumberFormatPrototypeResolvedOptions)                            \
999 1000
  /* ecma402 #sec-intl.numberformat.supportedlocalesof */              \
  CPP(NumberFormatSupportedLocalesOf)                                  \
1001 1002
  /* ecma402 #sec-intl.pluralrules */                                  \
  CPP(PluralRulesConstructor)                                          \
1003
  CPP(PluralRulesPrototypeResolvedOptions)                             \
1004 1005
  /* ecma402 #sec-intl.pluralrules.prototype.select */                 \
  CPP(PluralRulesPrototypeSelect)                                      \
1006 1007
  /* ecma402 #sec-intl.pluralrules.supportedlocalesof */               \
  CPP(PluralRulesSupportedLocalesOf)                                   \
1008
  /* ecma402 #sec-intl.RelativeTimeFormat.constructor */               \
1009
  CPP(RelativeTimeFormatConstructor)                                   \
1010 1011 1012
  /* ecma402 #sec-intl.RelativeTimeFormat.prototype.format */          \
  CPP(RelativeTimeFormatPrototypeFormat)                               \
  /* ecma402 #sec-intl.RelativeTimeFormat.prototype.formatToParts */   \
1013
  CPP(RelativeTimeFormatPrototypeFormatToParts)                        \
1014 1015 1016 1017
  /* ecma402 #sec-intl.RelativeTimeFormat.prototype.resolvedOptions */ \
  CPP(RelativeTimeFormatPrototypeResolvedOptions)                      \
  /* ecma402 #sec-intl.RelativeTimeFormat.supportedlocalesof */        \
  CPP(RelativeTimeFormatSupportedLocalesOf)                            \
1018 1019 1020 1021 1022 1023 1024 1025 1026 1027
  /* ecma402 #sec-Intl.Segmenter */                                    \
  CPP(SegmenterConstructor)                                            \
  /* ecma402 #sec-Intl.Segmenter.prototype.resolvedOptions */          \
  CPP(SegmenterPrototypeResolvedOptions)                               \
  /* ecma402 #sec-Intl.Segmenter.prototype.segment  */                 \
  CPP(SegmenterPrototypeSegment)                                       \
  /* ecma402  #sec-Intl.Segmenter.supportedLocalesOf */                \
  CPP(SegmenterSupportedLocalesOf)                                     \
  /* ecma402 #sec-segment-iterator-prototype-next */                   \
  CPP(SegmentIteratorPrototypeNext)                                    \
1028 1029 1030 1031
  /* ecma402 #sec-%segmentsprototype%.containing */                    \
  CPP(SegmentsPrototypeContaining)                                     \
  /* ecma402 #sec-%segmentsprototype%-@@iterator */                    \
  CPP(SegmentsPrototypeIterator)                                       \
1032 1033
  /* ES #sec-string.prototype.normalize */                             \
  CPP(StringPrototypeNormalizeIntl)                                    \
1034 1035 1036
  /* ecma402 #sup-string.prototype.tolocalelowercase */                \
  CPP(StringPrototypeToLocaleLowerCase)                                \
  /* ecma402 #sup-string.prototype.tolocaleuppercase */                \
1037
  CPP(StringPrototypeToLocaleUpperCase)                                \
1038 1039 1040 1041 1042 1043
  /* ES #sec-string.prototype.tolowercase */                           \
  TFJ(StringPrototypeToLowerCaseIntl, 0, kReceiver)                    \
  /* ES #sec-string.prototype.touppercase */                           \
  CPP(StringPrototypeToUpperCaseIntl)                                  \
  TFS(StringToLowerCaseIntl, kString)                                  \
  CPP(V8BreakIteratorConstructor)                                      \
1044
  CPP(V8BreakIteratorInternalAdoptText)                                \
1045 1046
  CPP(V8BreakIteratorInternalBreakType)                                \
  CPP(V8BreakIteratorInternalCurrent)                                  \
1047 1048
  CPP(V8BreakIteratorInternalFirst)                                    \
  CPP(V8BreakIteratorInternalNext)                                     \
1049
  CPP(V8BreakIteratorPrototypeAdoptText)                               \
1050
  CPP(V8BreakIteratorPrototypeBreakType)                               \
1051 1052 1053 1054 1055
  CPP(V8BreakIteratorPrototypeCurrent)                                 \
  CPP(V8BreakIteratorPrototypeFirst)                                   \
  CPP(V8BreakIteratorPrototypeNext)                                    \
  CPP(V8BreakIteratorPrototypeResolvedOptions)                         \
  CPP(V8BreakIteratorSupportedLocalesOf)
1056
#else
1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069
#define BUILTIN_LIST_INTL(CPP, TFJ, TFS)      \
  /* no-op fallback version */                \
  CPP(StringPrototypeNormalize)               \
  /* same as toLowercase; fallback version */ \
  CPP(StringPrototypeToLocaleLowerCase)       \
  /* same as toUppercase; fallback version */ \
  CPP(StringPrototypeToLocaleUpperCase)       \
  /* (obsolete) Unibrow version */            \
  CPP(StringPrototypeToLowerCase)             \
  /* (obsolete) Unibrow version */            \
  CPP(StringPrototypeToUpperCase)
#endif  // V8_INTL_SUPPORT

1070 1071 1072 1073
#define BUILTIN_LIST(CPP, TFJ, TFC, TFS, TFH, BCH, ASM)  \
  BUILTIN_LIST_BASE(CPP, TFJ, TFC, TFS, TFH, ASM)        \
  BUILTIN_LIST_FROM_TORQUE(CPP, TFJ, TFC, TFS, TFH, ASM) \
  BUILTIN_LIST_INTL(CPP, TFJ, TFS)                       \
1074
  BUILTIN_LIST_BYTECODE_HANDLERS(BCH)
1075

1076 1077
// The exception thrown in the following builtins are caught
// internally and result in a promise rejection.
1078 1079 1080 1081
#define BUILTIN_PROMISE_REJECTION_PREDICTION_LIST(V) \
  V(AsyncFromSyncIteratorPrototypeNext)              \
  V(AsyncFromSyncIteratorPrototypeReturn)            \
  V(AsyncFromSyncIteratorPrototypeThrow)             \
1082 1083
  V(AsyncFunctionAwaitCaught)                        \
  V(AsyncFunctionAwaitUncaught)                      \
1084
  V(AsyncGeneratorResolve)                           \
1085 1086
  V(AsyncGeneratorAwaitCaught)                       \
  V(AsyncGeneratorAwaitUncaught)                     \
1087
  V(PromiseAll)                                      \
1088
  V(PromiseAny)                                      \
1089
  V(PromiseConstructor)                              \
1090
  V(PromiseConstructorLazyDeoptContinuation)         \
1091
  V(PromiseFulfillReactionJob)                       \
1092
  V(PromiseRace)                                     \
1093 1094
  V(ResolvePromise)

1095 1096
// The exception thrown in the following builtins are caught internally and will
// not be propagated further or re-thrown
1097
#define BUILTIN_EXCEPTION_CAUGHT_PREDICTION_LIST(V) V(PromiseRejectReactionJob)
1098 1099 1100

#define IGNORE_BUILTIN(...)

1101 1102
#define BUILTIN_LIST_C(V)                                         \
  BUILTIN_LIST(V, IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, \
1103
               IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN)
1104 1105 1106

#define BUILTIN_LIST_A(V)                                                      \
  BUILTIN_LIST(IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, \
1107
               IGNORE_BUILTIN, IGNORE_BUILTIN, V)
1108

1109 1110 1111
#define BUILTIN_LIST_TFS(V)                                       \
  BUILTIN_LIST(IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, V, \
               IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN)
1112

1113
#define BUILTIN_LIST_TFJ(V)                                       \
1114 1115
  BUILTIN_LIST(IGNORE_BUILTIN, V, IGNORE_BUILTIN, IGNORE_BUILTIN, \
               IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN)
1116

1117
#define BUILTIN_LIST_TFC(V)                                       \
1118 1119
  BUILTIN_LIST(IGNORE_BUILTIN, IGNORE_BUILTIN, V, IGNORE_BUILTIN, \
               IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN)
1120

1121 1122 1123 1124
}  // namespace internal
}  // namespace v8

#endif  // V8_BUILTINS_BUILTINS_DEFINITIONS_H_