builtins-definitions.h 85.1 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-tq.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 98
  TFC(FastNewFunctionContextEval, FastNewFunctionContext)                      \
  TFC(FastNewFunctionContextFunction, FastNewFunctionContext)                  \
99
  TFS(CreateEmptyLiteralObject)                                                \
100 101 102 103
  TFS(CreateRegExpLiteral, kFeedbackVector, kSlot, kPattern, kFlags)           \
  TFS(CreateEmptyArrayLiteral, kFeedbackVector, kSlot)                         \
  TFS(CreateShallowArrayLiteral, kFeedbackVector, kSlot, kConstantElements)    \
  TFS(CreateShallowObjectLiteral, kFeedbackVector, kSlot,                      \
104
      kObjectBoilerplateDescription, kFlags)                                   \
105
  /* ES6 section 9.5.14 [[Construct]] ( argumentsList, newTarget) */           \
106
  TFC(ConstructProxy, JSTrampoline)                                            \
107 108
                                                                               \
  /* Apply and entries */                                                      \
109 110
  ASM(JSEntry, Dummy)                                                          \
  ASM(JSConstructEntry, Dummy)                                                 \
111
  ASM(JSRunMicrotasksEntry, RunMicrotasksEntry)                                \
112 113
  ASM(JSEntryTrampoline, JSTrampoline)                                         \
  ASM(JSConstructEntryTrampoline, JSTrampoline)                                \
114
  ASM(ResumeGeneratorTrampoline, ResumeGenerator)                              \
115 116
                                                                               \
  /* String helpers */                                                         \
117 118
  TFC(StringCodePointAt, StringAt)                                             \
  TFC(StringFromCodePointAt, StringAtAsString)                                 \
119 120 121
  TFC(StringEqual, Compare)                                                    \
  TFC(StringGreaterThan, Compare)                                              \
  TFC(StringGreaterThanOrEqual, Compare)                                       \
122
  TFS(StringIndexOf, kReceiver, kSearchString, kPosition)                      \
123 124 125
  TFC(StringLessThan, Compare)                                                 \
  TFC(StringLessThanOrEqual, Compare)                                          \
  TFC(StringSubstring, StringSubstring)                                        \
126
                                                                               \
127 128 129
  /* OrderedHashTable helpers */                                               \
  TFS(OrderedHashTableHealIndex, kTable, kIndex)                               \
                                                                               \
130
  /* Interpreter */                                                            \
131
  ASM(InterpreterEntryTrampoline, JSTrampoline)                                \
132 133 134 135 136 137 138 139 140 141 142
  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)                              \
143 144
                                                                               \
  /* Code life-cycle */                                                        \
145 146
  TFC(CompileLazy, JSTrampoline)                                               \
  TFC(CompileLazyDeoptimizedCode, JSTrampoline)                                \
147
  TFC(InstantiateAsmJs, JSTrampoline)                                          \
148
  ASM(NotifyDeoptimized, Dummy)                                                \
149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169
                                                                               \
  /* 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. */                                      \
170 171 172 173
  ASM(ContinueToCodeStubBuiltin, Dummy)                                        \
  ASM(ContinueToCodeStubBuiltinWithResult, Dummy)                              \
  ASM(ContinueToJavaScriptBuiltin, Dummy)                                      \
  ASM(ContinueToJavaScriptBuiltinWithResult, Dummy)                            \
174
                                                                               \
175
  /* API callback handling */                                                  \
176 177
  ASM(CallApiCallback, ApiCallback)                                            \
  ASM(CallApiGetter, ApiGetter)                                                \
178 179 180
  CPP(HandleApiCall)                                                           \
  CPP(HandleApiCallAsFunction)                                                 \
  CPP(HandleApiCallAsConstructor)                                              \
181 182
                                                                               \
  /* Adapters for Turbofan into runtime */                                     \
183
  TFC(AllocateInYoungGeneration, Allocate)                                     \
184
  TFC(AllocateRegularInYoungGeneration, Allocate)                              \
185
  TFC(AllocateInOldGeneration, Allocate)                                       \
186
  TFC(AllocateRegularInOldGeneration, Allocate)                                \
187 188
                                                                               \
  /* TurboFan support builtins */                                              \
189
  TFS(CopyFastSmiOrObjectElements, kObject)                                    \
190 191
  TFC(GrowFastDoubleElements, GrowArrayElements)                               \
  TFC(GrowFastSmiOrObjectElements, GrowArrayElements)                          \
192 193
                                                                               \
  /* Debugger */                                                               \
194
  TFJ(DebugBreakTrampoline, kDontAdaptArgumentsSentinel)                       \
195 196
  ASM(FrameDropperTrampoline, FrameDropperTrampoline)                          \
  ASM(HandleDebuggerStatement, ContextOnly)                                    \
197 198
                                                                               \
  /* Type conversions */                                                       \
199 200 201 202 203
  TFC(ToNumber, TypeConversion)                                                \
  TFC(ToNumberConvertBigInt, TypeConversion)                                   \
  TFC(Typeof, Typeof)                                                          \
  TFC(GetSuperConstructor, Typeof)                                             \
  TFC(BigIntToI64, BigIntToI64)                                                \
204
  TFC(BigIntToI32Pair, BigIntToI32Pair)                                        \
205
  TFC(I64ToBigInt, I64ToBigInt)                                                \
206
  TFC(I32PairToBigInt, I32PairToBigInt)                                        \
207
                                                                               \
208
  /* Type conversions continuations */                                         \
209
  TFC(ToBooleanLazyDeoptContinuation, TypeConversionStackParameter)            \
210
                                                                               \
211
  /* Handlers */                                                               \
212
  TFH(KeyedLoadIC_PolymorphicName, LoadWithVector)                             \
213
  TFH(KeyedStoreIC_Megamorphic, Store)                                         \
214
  TFH(LoadGlobalIC_NoFeedback, LoadGlobalNoFeedback)                           \
215
  TFH(LoadIC_FunctionPrototype, LoadWithVector)                                \
216
  TFH(LoadIC_StringLength, LoadWithVector)                                     \
217
  TFH(LoadIC_StringWrapperLength, LoadWithVector)                              \
218
  TFH(LoadIC_NoFeedback, LoadNoFeedback)                                       \
219
  TFH(StoreGlobalIC_Slow, StoreWithVector)                                     \
220
  TFH(StoreIC_NoFeedback, Store)                                               \
221 222 223 224 225 226
  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)     \
227 228 229 230 231 232 233 234
  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)       \
235 236 237
  TFH(KeyedHasIC_PolymorphicName, LoadWithVector)                              \
  TFH(KeyedHasIC_SloppyArguments, LoadWithVector)                              \
  TFH(HasIndexedInterceptorIC, LoadWithVector)                                 \
238
                                                                               \
239
  /* Microtask helpers */                                                      \
240
  TFS(EnqueueMicrotask, kMicrotask)                                            \
241
  ASM(RunMicrotasksTrampoline, RunMicrotasksEntry)                             \
242
  TFC(RunMicrotasks, RunMicrotasks)                                            \
243
                                                                               \
244
  /* Object property helpers */                                                \
245
  TFS(HasProperty, kObject, kKey)                                              \
246
  TFS(DeleteProperty, kObject, kKey, kLanguageMode)                            \
247 248 249
  /* ES #sec-copydataproperties */                                             \
  TFS(CopyDataProperties, kTarget, kSource)                                    \
  TFS(SetDataProperties, kTarget, kSource)                                     \
250 251
                                                                               \
  /* Abort */                                                                  \
252
  TFC(Abort, Abort)                                                            \
253
  TFC(AbortCSAAssert, Abort)                                                   \
254
                                                                               \
255 256 257 258
  /* Built-in functions for Javascript */                                      \
  /* Special internal builtins */                                              \
  CPP(EmptyFunction)                                                           \
  CPP(Illegal)                                                                 \
259
  CPP(StrictPoisonPillThrower)                                                 \
260
  CPP(UnsupportedThrower)                                                      \
261
  TFJ(ReturnReceiver, 0, kReceiver)                                            \
262 263
                                                                               \
  /* Array */                                                                  \
264 265
  TFC(ArrayConstructor, JSTrampoline)                                          \
  TFC(ArrayConstructorImpl, ArrayConstructor)                                  \
266
  TFC(ArrayNoArgumentConstructor_PackedSmi_DontOverride,                       \
267
      ArrayNoArgumentConstructor)                                              \
268
  TFC(ArrayNoArgumentConstructor_HoleySmi_DontOverride,                        \
269
      ArrayNoArgumentConstructor)                                              \
270
  TFC(ArrayNoArgumentConstructor_PackedSmi_DisableAllocationSites,             \
271
      ArrayNoArgumentConstructor)                                              \
272
  TFC(ArrayNoArgumentConstructor_HoleySmi_DisableAllocationSites,              \
273
      ArrayNoArgumentConstructor)                                              \
274
  TFC(ArrayNoArgumentConstructor_Packed_DisableAllocationSites,                \
275
      ArrayNoArgumentConstructor)                                              \
276
  TFC(ArrayNoArgumentConstructor_Holey_DisableAllocationSites,                 \
277
      ArrayNoArgumentConstructor)                                              \
278
  TFC(ArrayNoArgumentConstructor_PackedDouble_DisableAllocationSites,          \
279
      ArrayNoArgumentConstructor)                                              \
280
  TFC(ArrayNoArgumentConstructor_HoleyDouble_DisableAllocationSites,           \
281
      ArrayNoArgumentConstructor)                                              \
282
  TFC(ArraySingleArgumentConstructor_PackedSmi_DontOverride,                   \
283
      ArraySingleArgumentConstructor)                                          \
284
  TFC(ArraySingleArgumentConstructor_HoleySmi_DontOverride,                    \
285
      ArraySingleArgumentConstructor)                                          \
286
  TFC(ArraySingleArgumentConstructor_PackedSmi_DisableAllocationSites,         \
287
      ArraySingleArgumentConstructor)                                          \
288
  TFC(ArraySingleArgumentConstructor_HoleySmi_DisableAllocationSites,          \
289
      ArraySingleArgumentConstructor)                                          \
290
  TFC(ArraySingleArgumentConstructor_Packed_DisableAllocationSites,            \
291
      ArraySingleArgumentConstructor)                                          \
292
  TFC(ArraySingleArgumentConstructor_Holey_DisableAllocationSites,             \
293
      ArraySingleArgumentConstructor)                                          \
294
  TFC(ArraySingleArgumentConstructor_PackedDouble_DisableAllocationSites,      \
295
      ArraySingleArgumentConstructor)                                          \
296
  TFC(ArraySingleArgumentConstructor_HoleyDouble_DisableAllocationSites,       \
297 298
      ArraySingleArgumentConstructor)                                          \
  TFC(ArrayNArgumentsConstructor, ArrayNArgumentsConstructor)                  \
299
  CPP(ArrayConcat)                                                             \
300 301
  /* ES6 #sec-array.prototype.fill */                                          \
  CPP(ArrayPrototypeFill)                                                      \
302
  /* ES7 #sec-array.prototype.includes */                                      \
303 304 305 306 307 308
  TFS(ArrayIncludesSmiOrObject, kElements, kSearchElement, kLength,            \
      kFromIndex)                                                              \
  TFS(ArrayIncludesPackedDoubles, kElements, kSearchElement, kLength,          \
      kFromIndex)                                                              \
  TFS(ArrayIncludesHoleyDoubles, kElements, kSearchElement, kLength,           \
      kFromIndex)                                                              \
309
  TFJ(ArrayIncludes, kDontAdaptArgumentsSentinel)                              \
310
  /* ES6 #sec-array.prototype.indexof */                                       \
311 312 313 314 315
  TFS(ArrayIndexOfSmiOrObject, kElements, kSearchElement, kLength, kFromIndex) \
  TFS(ArrayIndexOfPackedDoubles, kElements, kSearchElement, kLength,           \
      kFromIndex)                                                              \
  TFS(ArrayIndexOfHoleyDoubles, kElements, kSearchElement, kLength,            \
      kFromIndex)                                                              \
316
  TFJ(ArrayIndexOf, kDontAdaptArgumentsSentinel)                               \
317 318
  /* ES6 #sec-array.prototype.pop */                                           \
  CPP(ArrayPop)                                                                \
319
  TFJ(ArrayPrototypePop, kDontAdaptArgumentsSentinel)                          \
320 321
  /* ES6 #sec-array.prototype.push */                                          \
  CPP(ArrayPush)                                                               \
322
  TFJ(ArrayPrototypePush, kDontAdaptArgumentsSentinel)                         \
323 324 325 326
  /* ES6 #sec-array.prototype.shift */                                         \
  CPP(ArrayShift)                                                              \
  /* ES6 #sec-array.prototype.unshift */                                       \
  CPP(ArrayUnshift)                                                            \
327 328
  /* Support for Array.from and other array-copying idioms */                  \
  TFS(CloneFastJSArray, kSource)                                               \
329
  TFS(CloneFastJSArrayFillingHoles, kSource)                                   \
330
  TFS(ExtractFastJSArray, kSource, kBegin, kCount)                             \
331
  /* ES6 #sec-array.prototype.entries */                                       \
332
  TFJ(ArrayPrototypeEntries, 0, kReceiver)                                     \
333
  /* ES6 #sec-array.prototype.keys */                                          \
334
  TFJ(ArrayPrototypeKeys, 0, kReceiver)                                        \
335
  /* ES6 #sec-array.prototype.values */                                        \
336
  TFJ(ArrayPrototypeValues, 0, kReceiver)                                      \
337
  /* ES6 #sec-%arrayiteratorprototype%.next */                                 \
338
  TFJ(ArrayIteratorPrototypeNext, 0, kReceiver)                                \
339 340 341 342
  /* https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray */          \
  TFS(FlattenIntoArray, kTarget, kSource, kSourceLength, kStart, kDepth)       \
  TFS(FlatMapIntoArray, kTarget, kSource, kSourceLength, kStart, kDepth,       \
      kMapperFunction, kThisArg)                                               \
343
  /* https://tc39.github.io/proposal-flatMap/#sec-Array.prototype.flat */      \
344
  TFJ(ArrayPrototypeFlat, kDontAdaptArgumentsSentinel)                         \
345
  /* https://tc39.github.io/proposal-flatMap/#sec-Array.prototype.flatMap */   \
346
  TFJ(ArrayPrototypeFlatMap, kDontAdaptArgumentsSentinel)                      \
347 348
                                                                               \
  /* ArrayBuffer */                                                            \
349
  /* ES #sec-arraybuffer-constructor */                                        \
350
  CPP(ArrayBufferConstructor)                                                  \
351
  CPP(ArrayBufferConstructor_DoNotInitialize)                                  \
352 353 354 355 356
  CPP(ArrayBufferPrototypeGetByteLength)                                       \
  CPP(ArrayBufferIsView)                                                       \
  CPP(ArrayBufferPrototypeSlice)                                               \
                                                                               \
  /* AsyncFunction */                                                          \
357
  TFS(AsyncFunctionEnter, kClosure, kReceiver)                                 \
358 359
  TFS(AsyncFunctionReject, kAsyncFunctionObject, kReason, kCanSuspend)         \
  TFS(AsyncFunctionResolve, kAsyncFunctionObject, kValue, kCanSuspend)         \
360
  TFC(AsyncFunctionLazyDeoptContinuation, AsyncFunctionStackParameter)         \
361 362
  TFS(AsyncFunctionAwaitCaught, kAsyncFunctionObject, kValue)                  \
  TFS(AsyncFunctionAwaitUncaught, kAsyncFunctionObject, kValue)                \
363 364
  TFJ(AsyncFunctionAwaitRejectClosure, 1, kReceiver, kSentError)               \
  TFJ(AsyncFunctionAwaitResolveClosure, 1, kReceiver, kSentValue)              \
365
                                                                               \
366 367 368 369 370 371 372 373
  /* BigInt */                                                                 \
  CPP(BigIntConstructor)                                                       \
  CPP(BigIntAsUintN)                                                           \
  CPP(BigIntAsIntN)                                                            \
  CPP(BigIntPrototypeToLocaleString)                                           \
  CPP(BigIntPrototypeToString)                                                 \
  CPP(BigIntPrototypeValueOf)                                                  \
                                                                               \
374 375 376 377 378 379 380 381 382
  /* CallSite */                                                               \
  CPP(CallSitePrototypeGetColumnNumber)                                        \
  CPP(CallSitePrototypeGetEvalOrigin)                                          \
  CPP(CallSitePrototypeGetFileName)                                            \
  CPP(CallSitePrototypeGetFunction)                                            \
  CPP(CallSitePrototypeGetFunctionName)                                        \
  CPP(CallSitePrototypeGetLineNumber)                                          \
  CPP(CallSitePrototypeGetMethodName)                                          \
  CPP(CallSitePrototypeGetPosition)                                            \
383
  CPP(CallSitePrototypeGetPromiseIndex)                                        \
384 385 386
  CPP(CallSitePrototypeGetScriptNameOrSourceURL)                               \
  CPP(CallSitePrototypeGetThis)                                                \
  CPP(CallSitePrototypeGetTypeName)                                            \
387
  CPP(CallSitePrototypeIsAsync)                                                \
388 389 390
  CPP(CallSitePrototypeIsConstructor)                                          \
  CPP(CallSitePrototypeIsEval)                                                 \
  CPP(CallSitePrototypeIsNative)                                               \
391
  CPP(CallSitePrototypeIsPromiseAll)                                           \
392 393 394
  CPP(CallSitePrototypeIsToplevel)                                             \
  CPP(CallSitePrototypeToString)                                               \
                                                                               \
395 396 397 398 399 400 401 402 403 404 405 406 407 408 409
  /* 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)                                                            \
410
  CPP(ConsoleCountReset)                                                       \
411 412 413 414
  CPP(ConsoleAssert)                                                           \
  CPP(ConsoleProfile)                                                          \
  CPP(ConsoleProfileEnd)                                                       \
  CPP(ConsoleTime)                                                             \
415
  CPP(ConsoleTimeLog)                                                          \
416 417
  CPP(ConsoleTimeEnd)                                                          \
  CPP(ConsoleTimeStamp)                                                        \
418
  CPP(ConsoleContext)                                                          \
419
                                                                               \
420
  /* DataView */                                                               \
421
  /* ES #sec-dataview-constructor */                                           \
422 423 424
  CPP(DataViewConstructor)                                                     \
                                                                               \
  /* Date */                                                                   \
425
  /* ES #sec-date-constructor */                                               \
426 427
  CPP(DateConstructor)                                                         \
  /* ES6 #sec-date.prototype.getdate */                                        \
428
  TFJ(DatePrototypeGetDate, 0, kReceiver)                                      \
429
  /* ES6 #sec-date.prototype.getday */                                         \
430
  TFJ(DatePrototypeGetDay, 0, kReceiver)                                       \
431
  /* ES6 #sec-date.prototype.getfullyear */                                    \
432
  TFJ(DatePrototypeGetFullYear, 0, kReceiver)                                  \
433
  /* ES6 #sec-date.prototype.gethours */                                       \
434
  TFJ(DatePrototypeGetHours, 0, kReceiver)                                     \
435
  /* ES6 #sec-date.prototype.getmilliseconds */                                \
436
  TFJ(DatePrototypeGetMilliseconds, 0, kReceiver)                              \
437
  /* ES6 #sec-date.prototype.getminutes */                                     \
438
  TFJ(DatePrototypeGetMinutes, 0, kReceiver)                                   \
439
  /* ES6 #sec-date.prototype.getmonth */                                       \
440
  TFJ(DatePrototypeGetMonth, 0, kReceiver)                                     \
441
  /* ES6 #sec-date.prototype.getseconds */                                     \
442
  TFJ(DatePrototypeGetSeconds, 0, kReceiver)                                   \
443
  /* ES6 #sec-date.prototype.gettime */                                        \
444
  TFJ(DatePrototypeGetTime, 0, kReceiver)                                      \
445
  /* ES6 #sec-date.prototype.gettimezoneoffset */                              \
446
  TFJ(DatePrototypeGetTimezoneOffset, 0, kReceiver)                            \
447
  /* ES6 #sec-date.prototype.getutcdate */                                     \
448
  TFJ(DatePrototypeGetUTCDate, 0, kReceiver)                                   \
449
  /* ES6 #sec-date.prototype.getutcday */                                      \
450
  TFJ(DatePrototypeGetUTCDay, 0, kReceiver)                                    \
451
  /* ES6 #sec-date.prototype.getutcfullyear */                                 \
452
  TFJ(DatePrototypeGetUTCFullYear, 0, kReceiver)                               \
453
  /* ES6 #sec-date.prototype.getutchours */                                    \
454
  TFJ(DatePrototypeGetUTCHours, 0, kReceiver)                                  \
455
  /* ES6 #sec-date.prototype.getutcmilliseconds */                             \
456
  TFJ(DatePrototypeGetUTCMilliseconds, 0, kReceiver)                           \
457
  /* ES6 #sec-date.prototype.getutcminutes */                                  \
458
  TFJ(DatePrototypeGetUTCMinutes, 0, kReceiver)                                \
459
  /* ES6 #sec-date.prototype.getutcmonth */                                    \
460
  TFJ(DatePrototypeGetUTCMonth, 0, kReceiver)                                  \
461
  /* ES6 #sec-date.prototype.getutcseconds */                                  \
462
  TFJ(DatePrototypeGetUTCSeconds, 0, kReceiver)                                \
463
  /* ES6 #sec-date.prototype.valueof */                                        \
464
  TFJ(DatePrototypeValueOf, 0, kReceiver)                                      \
465
  /* ES6 #sec-date.prototype-@@toprimitive */                                  \
466
  TFJ(DatePrototypeToPrimitive, 1, kReceiver, kHint)                           \
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 492 493 494 495 496 497 498 499 500
  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)                                                     \
501
  ASM(FunctionPrototypeApply, JSTrampoline)                                    \
502
  CPP(FunctionPrototypeBind)                                                   \
503
  ASM(FunctionPrototypeCall, JSTrampoline)                                     \
504 505 506 507
  /* ES6 #sec-function.prototype.tostring */                                   \
  CPP(FunctionPrototypeToString)                                               \
                                                                               \
  /* Belongs to Objects but is a dependency of GeneratorPrototypeResume */     \
508
  TFS(CreateIterResultObject, kValue, kDone)                                   \
509 510
                                                                               \
  /* Generator and Async */                                                    \
511
  TFS(CreateGeneratorObject, kClosure, kReceiver)                              \
512 513
  CPP(GeneratorFunctionConstructor)                                            \
  /* ES6 #sec-generator.prototype.next */                                      \
514
  TFJ(GeneratorPrototypeNext, kDontAdaptArgumentsSentinel)                     \
515
  /* ES6 #sec-generator.prototype.return */                                    \
516
  TFJ(GeneratorPrototypeReturn, kDontAdaptArgumentsSentinel)                   \
517
  /* ES6 #sec-generator.prototype.throw */                                     \
518
  TFJ(GeneratorPrototypeThrow, kDontAdaptArgumentsSentinel)                    \
519 520
  CPP(AsyncFunctionConstructor)                                                \
                                                                               \
521 522 523
  /* Iterator Protocol */                                                      \
  TFC(GetIteratorWithFeedbackLazyDeoptContinuation, GetIteratorStackParameter) \
                                                                               \
524 525 526 527 528 529 530 531 532
  /* Global object */                                                          \
  CPP(GlobalDecodeURI)                                                         \
  CPP(GlobalDecodeURIComponent)                                                \
  CPP(GlobalEncodeURI)                                                         \
  CPP(GlobalEncodeURIComponent)                                                \
  CPP(GlobalEscape)                                                            \
  CPP(GlobalUnescape)                                                          \
  CPP(GlobalEval)                                                              \
  /* ES6 #sec-isfinite-number */                                               \
533
  TFJ(GlobalIsFinite, 1, kReceiver, kNumber)                                   \
534
  /* ES6 #sec-isnan-number */                                                  \
535
  TFJ(GlobalIsNaN, 1, kReceiver, kNumber)                                      \
536 537 538 539 540 541
                                                                               \
  /* JSON */                                                                   \
  CPP(JsonParse)                                                               \
  CPP(JsonStringify)                                                           \
                                                                               \
  /* ICs */                                                                    \
542
  TFH(LoadIC, LoadWithVector)                                                  \
543
  TFH(LoadIC_Megamorphic, LoadWithVector)                                      \
544 545
  TFH(LoadIC_Noninlined, LoadWithVector)                                       \
  TFH(LoadICTrampoline, Load)                                                  \
546
  TFH(LoadICTrampoline_Megamorphic, Load)                                      \
547
  TFH(KeyedLoadIC, LoadWithVector)                                             \
548
  TFH(KeyedLoadIC_Megamorphic, LoadWithVector)                                 \
549
  TFH(KeyedLoadICTrampoline, Load)                                             \
550
  TFH(KeyedLoadICTrampoline_Megamorphic, Load)                                 \
551 552
  TFH(StoreGlobalIC, StoreGlobalWithVector)                                    \
  TFH(StoreGlobalICTrampoline, StoreGlobal)                                    \
553 554 555 556
  TFH(StoreIC, StoreWithVector)                                                \
  TFH(StoreICTrampoline, Store)                                                \
  TFH(KeyedStoreIC, StoreWithVector)                                           \
  TFH(KeyedStoreICTrampoline, Store)                                           \
557
  TFH(StoreInArrayLiteralIC, StoreWithVector)                                  \
558 559 560 561
  TFH(LoadGlobalIC, LoadGlobalWithVector)                                      \
  TFH(LoadGlobalICInsideTypeof, LoadGlobalWithVector)                          \
  TFH(LoadGlobalICTrampoline, LoadGlobal)                                      \
  TFH(LoadGlobalICInsideTypeofTrampoline, LoadGlobal)                          \
562
  TFH(CloneObjectIC, CloneObjectWithVector)                                    \
563
  TFH(CloneObjectIC_Slow, CloneObjectWithVector)                               \
564 565
  TFH(KeyedHasIC, LoadWithVector)                                              \
  TFH(KeyedHasIC_Megamorphic, LoadWithVector)                                  \
566
                                                                               \
567 568
  /* IterableToList */                                                         \
  /* ES #sec-iterabletolist */                                                 \
569
  TFS(IterableToList, kIterable, kIteratorFn)                                  \
570
  TFS(IterableToFixedArray, kIterable, kIteratorFn)                            \
571
  TFS(IterableToListWithSymbolLookup, kIterable)                               \
572
  TFS(IterableToFixedArrayWithSymbolLookupSlow, kIterable)                     \
573
  TFS(IterableToListMayPreserveHoles, kIterable, kIteratorFn)                  \
574
  TFS(IterableToFixedArrayForWasm, kIterable, kExpectedLength)                 \
575
                                                                               \
576 577 578
  /* #sec-createstringlistfromiterable */                                      \
  TFS(StringListFromIterable, kIterable)                                       \
                                                                               \
579
  /* Map */                                                                    \
580
  TFS(FindOrderedHashMapEntry, kTable, kKey)                                   \
581
  TFJ(MapConstructor, kDontAdaptArgumentsSentinel)                             \
582 583 584 585
  TFJ(MapPrototypeSet, 2, kReceiver, kKey, kValue)                             \
  TFJ(MapPrototypeDelete, 1, kReceiver, kKey)                                  \
  TFJ(MapPrototypeGet, 1, kReceiver, kKey)                                     \
  TFJ(MapPrototypeHas, 1, kReceiver, kKey)                                     \
586
  CPP(MapPrototypeClear)                                                       \
587
  /* ES #sec-map.prototype.entries */                                          \
588
  TFJ(MapPrototypeEntries, 0, kReceiver)                                       \
589
  /* ES #sec-get-map.prototype.size */                                         \
590
  TFJ(MapPrototypeGetSize, 0, kReceiver)                                       \
591
  /* ES #sec-map.prototype.forEach */                                          \
592
  TFJ(MapPrototypeForEach, kDontAdaptArgumentsSentinel)                        \
593
  /* ES #sec-map.prototype.keys */                                             \
594
  TFJ(MapPrototypeKeys, 0, kReceiver)                                          \
595
  /* ES #sec-map.prototype.values */                                           \
596
  TFJ(MapPrototypeValues, 0, kReceiver)                                        \
597
  /* ES #sec-%mapiteratorprototype%.next */                                    \
598
  TFJ(MapIteratorPrototypeNext, 0, kReceiver)                                  \
599
  TFS(MapIteratorToList, kSource)                                              \
600
                                                                               \
601
  /* ES #sec-number-constructor */                                             \
602
  TFJ(NumberConstructor, kDontAdaptArgumentsSentinel)                          \
603 604 605 606
  CPP(NumberPrototypeToExponential)                                            \
  CPP(NumberPrototypeToFixed)                                                  \
  CPP(NumberPrototypeToLocaleString)                                           \
  CPP(NumberPrototypeToPrecision)                                              \
607
  TFC(SameValue, Compare)                                                      \
608
  TFC(SameValueNumbersOnly, Compare)                                           \
609
                                                                               \
610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637
  /* 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)                               \
                                                                               \
638
  /* Object */                                                                 \
639
  /* ES #sec-object-constructor */                                             \
640 641
  TFJ(ObjectConstructor, kDontAdaptArgumentsSentinel)                          \
  TFJ(ObjectAssign, kDontAdaptArgumentsSentinel)                               \
642
  /* ES #sec-object.create */                                                  \
643
  TFJ(ObjectCreate, kDontAdaptArgumentsSentinel)                               \
644 645 646 647
  CPP(ObjectDefineGetter)                                                      \
  CPP(ObjectDefineProperties)                                                  \
  CPP(ObjectDefineProperty)                                                    \
  CPP(ObjectDefineSetter)                                                      \
648
  TFJ(ObjectEntries, 1, kReceiver, kObject)                                    \
649
  CPP(ObjectFreeze)                                                            \
650
  TFJ(ObjectGetOwnPropertyDescriptor, kDontAdaptArgumentsSentinel)             \
651
  CPP(ObjectGetOwnPropertyDescriptors)                                         \
652
  TFJ(ObjectGetOwnPropertyNames, 1, kReceiver, kObject)                        \
653
  CPP(ObjectGetOwnPropertySymbols)                                             \
654
  TFJ(ObjectIs, 2, kReceiver, kLeft, kRight)                                   \
655 656
  CPP(ObjectIsFrozen)                                                          \
  CPP(ObjectIsSealed)                                                          \
657
  TFJ(ObjectKeys, 1, kReceiver, kObject)                                       \
658 659
  CPP(ObjectLookupGetter)                                                      \
  CPP(ObjectLookupSetter)                                                      \
660
  /* ES6 #sec-object.prototype.hasownproperty */                               \
661 662
  TFJ(ObjectPrototypeHasOwnProperty, 1, kReceiver, kKey)                       \
  TFJ(ObjectPrototypeIsPrototypeOf, 1, kReceiver, kValue)                      \
663 664 665 666
  CPP(ObjectPrototypePropertyIsEnumerable)                                     \
  CPP(ObjectPrototypeGetProto)                                                 \
  CPP(ObjectPrototypeSetProto)                                                 \
  CPP(ObjectSeal)                                                              \
667
  TFS(ObjectToString, kReceiver)                                               \
668
  TFJ(ObjectValues, 1, kReceiver, kObject)                                     \
669 670
                                                                               \
  /* instanceof */                                                             \
671 672
  TFC(OrdinaryHasInstance, Compare)                                            \
  TFC(InstanceOf, Compare)                                                     \
673
  TFC(InstanceOf_WithFeedback, Compare_WithFeedback)                           \
674 675
                                                                               \
  /* for-in */                                                                 \
676
  TFS(ForInEnumerate, kReceiver)                                               \
677
  TFS(ForInFilter, kKey, kObject)                                              \
678 679
                                                                               \
  /* Reflect */                                                                \
680 681
  ASM(ReflectApply, JSTrampoline)                                              \
  ASM(ReflectConstruct, JSTrampoline)                                          \
682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697
  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 */                                           \
698
  TFJ(RegExpConstructor, 2, kReceiver, kPattern, kFlags)                       \
699 700 701 702 703 704
  CPP(RegExpInputGetter)                                                       \
  CPP(RegExpInputSetter)                                                       \
  CPP(RegExpLastMatchGetter)                                                   \
  CPP(RegExpLastParenGetter)                                                   \
  CPP(RegExpLeftContextGetter)                                                 \
  /* ES #sec-regexp.prototype.compile */                                       \
705
  TFJ(RegExpPrototypeCompile, 2, kReceiver, kPattern, kFlags)                  \
706 707 708
  CPP(RegExpPrototypeToString)                                                 \
  CPP(RegExpRightContextGetter)                                                \
                                                                               \
709 710
  /* RegExp helpers */                                                         \
  TFS(RegExpExecAtom, kRegExp, kString, kLastIndex, kMatchInfo)                \
711
  TFS(RegExpExecInternal, kRegExp, kString, kLastIndex, kMatchInfo)            \
712
  ASM(RegExpInterpreterTrampoline, CCall)                                      \
713
                                                                               \
714
  /* Set */                                                                    \
715
  TFJ(SetConstructor, kDontAdaptArgumentsSentinel)                             \
716 717 718
  TFJ(SetPrototypeHas, 1, kReceiver, kKey)                                     \
  TFJ(SetPrototypeAdd, 1, kReceiver, kKey)                                     \
  TFJ(SetPrototypeDelete, 1, kReceiver, kKey)                                  \
719
  CPP(SetPrototypeClear)                                                       \
720
  /* ES #sec-set.prototype.entries */                                          \
721
  TFJ(SetPrototypeEntries, 0, kReceiver)                                       \
722
  /* ES #sec-get-set.prototype.size */                                         \
723
  TFJ(SetPrototypeGetSize, 0, kReceiver)                                       \
724
  /* ES #sec-set.prototype.foreach */                                          \
725
  TFJ(SetPrototypeForEach, kDontAdaptArgumentsSentinel)                        \
726
  /* ES #sec-set.prototype.values */                                           \
727
  TFJ(SetPrototypeValues, 0, kReceiver)                                        \
728
  /* ES #sec-%setiteratorprototype%.next */                                    \
729
  TFJ(SetIteratorPrototypeNext, 0, kReceiver)                                  \
730
  TFS(SetOrSetIteratorToList, kSource)                                         \
731
                                                                               \
732 733 734
  /* SharedArrayBuffer */                                                      \
  CPP(SharedArrayBufferPrototypeGetByteLength)                                 \
  CPP(SharedArrayBufferPrototypeSlice)                                         \
735 736 737 738 739 740 741 742 743 744
  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)                        \
745
  CPP(AtomicsNotify)                                                           \
746 747
  CPP(AtomicsIsLockFree)                                                       \
  CPP(AtomicsWait)                                                             \
748
  CPP(AtomicsWaitAsync)                                                        \
749 750 751
  CPP(AtomicsWake)                                                             \
                                                                               \
  /* String */                                                                 \
752
  /* ES #sec-string.fromcodepoint */                                           \
753 754
  CPP(StringFromCodePoint)                                                     \
  /* ES6 #sec-string.fromcharcode */                                           \
755
  TFJ(StringFromCharCode, kDontAdaptArgumentsSentinel)                         \
756
  /* ES6 #sec-string.prototype.includes */                                     \
757
  TFJ(StringPrototypeIncludes, kDontAdaptArgumentsSentinel)                    \
758
  /* ES6 #sec-string.prototype.indexof */                                      \
759
  TFJ(StringPrototypeIndexOf, kDontAdaptArgumentsSentinel)                     \
760 761
  /* ES6 #sec-string.prototype.lastindexof */                                  \
  CPP(StringPrototypeLastIndexOf)                                              \
762
  /* ES6 #sec-string.prototype.match */                                        \
763
  TFJ(StringPrototypeMatch, 1, kReceiver, kRegexp)                             \
764
  /* ES #sec-string.prototype.matchAll */                                      \
765
  TFJ(StringPrototypeMatchAll, 1, kReceiver, kRegexp)                          \
766 767 768
  /* ES6 #sec-string.prototype.localecompare */                                \
  CPP(StringPrototypeLocaleCompare)                                            \
  /* ES6 #sec-string.prototype.replace */                                      \
769
  TFJ(StringPrototypeReplace, 2, kReceiver, kSearch, kReplace)                 \
770
  /* ES6 #sec-string.prototype.search */                                       \
771
  TFJ(StringPrototypeSearch, 1, kReceiver, kRegexp)                            \
772
  /* ES6 #sec-string.prototype.split */                                        \
773 774 775 776
  TFJ(StringPrototypeSplit, kDontAdaptArgumentsSentinel)                       \
  TFJ(StringPrototypeTrim, kDontAdaptArgumentsSentinel)                        \
  TFJ(StringPrototypeTrimEnd, kDontAdaptArgumentsSentinel)                     \
  TFJ(StringPrototypeTrimStart, kDontAdaptArgumentsSentinel)                   \
777 778
  /* ES6 #sec-string.raw */                                                    \
  CPP(StringRaw)                                                               \
779 780
                                                                               \
  /* Symbol */                                                                 \
781
  /* ES #sec-symbol-constructor */                                             \
782 783 784 785 786 787 788
  CPP(SymbolConstructor)                                                       \
  /* ES6 #sec-symbol.for */                                                    \
  CPP(SymbolFor)                                                               \
  /* ES6 #sec-symbol.keyfor */                                                 \
  CPP(SymbolKeyFor)                                                            \
                                                                               \
  /* TypedArray */                                                             \
789
  /* ES #sec-typedarray-constructors */                                        \
790
  TFJ(TypedArrayBaseConstructor, 0, kReceiver)                                 \
791
  TFJ(GenericLazyDeoptContinuation, 1, kReceiver, kResult)                     \
792
  TFJ(TypedArrayConstructor, kDontAdaptArgumentsSentinel)                      \
793 794
  CPP(TypedArrayPrototypeBuffer)                                               \
  /* ES6 #sec-get-%typedarray%.prototype.bytelength */                         \
795
  TFJ(TypedArrayPrototypeByteLength, 0, kReceiver)                             \
796
  /* ES6 #sec-get-%typedarray%.prototype.byteoffset */                         \
797
  TFJ(TypedArrayPrototypeByteOffset, 0, kReceiver)                             \
798
  /* ES6 #sec-get-%typedarray%.prototype.length */                             \
799
  TFJ(TypedArrayPrototypeLength, 0, kReceiver)                                 \
800 801 802 803 804 805 806 807 808 809 810 811
  /* 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)                                              \
812
  /* ES6 #sec-get-%typedarray%.prototype-@@tostringtag */                      \
813
  TFJ(TypedArrayPrototypeToStringTag, 0, kReceiver)                            \
814
  /* ES6 %TypedArray%.prototype.map */                                         \
815
  TFJ(TypedArrayPrototypeMap, kDontAdaptArgumentsSentinel)                     \
816 817
                                                                               \
  /* Wasm */                                                                   \
818
  ASM(WasmCompileLazy, Dummy)                                                  \
819
  ASM(WasmDebugBreak, Dummy)                                                   \
820
  TFC(WasmFloat32ToNumber, WasmFloat32ToNumber)                                \
821
  TFC(WasmFloat64ToNumber, WasmFloat64ToNumber)                                \
822
  TFS(WasmAllocateArrayWithRtt, kMap, kLength, kElementSize)                   \
823 824
  TFC(WasmI32AtomicWait32, WasmI32AtomicWait32)                                \
  TFC(WasmI64AtomicWait32, WasmI64AtomicWait32)                                \
825
                                                                               \
826
  /* WeakMap */                                                                \
827
  TFJ(WeakMapConstructor, kDontAdaptArgumentsSentinel)                         \
828
  TFS(WeakMapLookupHashIndex, kTable, kKey)                                    \
829
  TFJ(WeakMapGet, 1, kReceiver, kKey)                                          \
830
  TFJ(WeakMapPrototypeHas, 1, kReceiver, kKey)                                 \
831 832
  TFJ(WeakMapPrototypeSet, 2, kReceiver, kKey, kValue)                         \
  TFJ(WeakMapPrototypeDelete, 1, kReceiver, kKey)                              \
833
                                                                               \
834
  /* WeakSet */                                                                \
835
  TFJ(WeakSetConstructor, kDontAdaptArgumentsSentinel)                         \
836
  TFJ(WeakSetPrototypeHas, 1, kReceiver, kKey)                                 \
837 838
  TFJ(WeakSetPrototypeAdd, 1, kReceiver, kValue)                               \
  TFJ(WeakSetPrototypeDelete, 1, kReceiver, kValue)                            \
839 840
                                                                               \
  /* WeakSet / WeakMap Helpers */                                              \
841
  TFS(WeakCollectionDelete, kCollection, kKey)                                 \
842
  TFS(WeakCollectionSet, kCollection, kKey, kValue)                            \
843
                                                                               \
844 845
  /* AsyncGenerator */                                                         \
                                                                               \
846 847
  TFS(AsyncGeneratorResolve, kGenerator, kValue, kDone)                        \
  TFS(AsyncGeneratorReject, kGenerator, kValue)                                \
848
  TFS(AsyncGeneratorYield, kGenerator, kValue, kIsCaught)                      \
849
  TFS(AsyncGeneratorReturn, kGenerator, kValue, kIsCaught)                     \
850
  TFS(AsyncGeneratorResumeNext, kGenerator)                                    \
851 852 853 854 855 856
                                                                               \
  /* AsyncGeneratorFunction( p1, p2, ... pn, body ) */                         \
  /* proposal-async-iteration/#sec-asyncgeneratorfunction-constructor */       \
  CPP(AsyncGeneratorFunctionConstructor)                                       \
  /* AsyncGenerator.prototype.next ( value ) */                                \
  /* proposal-async-iteration/#sec-asyncgenerator-prototype-next */            \
857
  TFJ(AsyncGeneratorPrototypeNext, kDontAdaptArgumentsSentinel)                \
858 859
  /* AsyncGenerator.prototype.return ( value ) */                              \
  /* proposal-async-iteration/#sec-asyncgenerator-prototype-return */          \
860
  TFJ(AsyncGeneratorPrototypeReturn, kDontAdaptArgumentsSentinel)              \
861 862
  /* AsyncGenerator.prototype.throw ( exception ) */                           \
  /* proposal-async-iteration/#sec-asyncgenerator-prototype-throw */           \
863
  TFJ(AsyncGeneratorPrototypeThrow, kDontAdaptArgumentsSentinel)               \
864
                                                                               \
865 866
  /* Await (proposal-async-iteration/#await), with resume behaviour */         \
  /* specific to Async Generators. Internal / Not exposed to JS code. */       \
867 868
  TFS(AsyncGeneratorAwaitCaught, kAsyncGeneratorObject, kValue)                \
  TFS(AsyncGeneratorAwaitUncaught, kAsyncGeneratorObject, kValue)              \
869 870 871 872 873 874
  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)                \
875
                                                                               \
876 877 878 879 880
  /* Async-from-Sync Iterator */                                               \
                                                                               \
  /* %AsyncFromSyncIteratorPrototype% */                                       \
  /* See tc39.github.io/proposal-async-iteration/ */                           \
  /* #sec-%asyncfromsynciteratorprototype%-object) */                          \
881
  TFJ(AsyncFromSyncIteratorPrototypeNext, kDontAdaptArgumentsSentinel)         \
882
  /* #sec-%asyncfromsynciteratorprototype%.throw */                            \
883
  TFJ(AsyncFromSyncIteratorPrototypeThrow, kDontAdaptArgumentsSentinel)        \
884
  /* #sec-%asyncfromsynciteratorprototype%.return */                           \
885
  TFJ(AsyncFromSyncIteratorPrototypeReturn, kDontAdaptArgumentsSentinel)       \
886
  /* #sec-async-iterator-value-unwrap-functions */                             \
887
  TFJ(AsyncIteratorValueUnwrap, 1, kReceiver, kValue)                          \
888
                                                                               \
889
  /* CEntry */                                                                 \
890 891 892 893 894 895 896 897 898 899 900
  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)                                                     \
901
                                                                               \
902
  /* String helpers */                                                         \
903
  TFS(StringAdd_CheckNone, kLeft, kRight)                                      \
904
  TFS(SubString, kString, kFrom, kTo)                                          \
905
                                                                               \
906
  /* Miscellaneous */                                                          \
907
  ASM(StackCheck, Dummy)                                                       \
908
  ASM(DoubleToI, Dummy)                                                        \
909
  TFC(GetProperty, GetProperty)                                                \
910
  TFS(GetPropertyWithReceiver, kObject, kKey, kReceiver, kOnNonExistent)       \
911
  TFS(SetProperty, kReceiver, kKey, kValue)                                    \
912
  TFS(SetPropertyInLiteral, kReceiver, kKey, kValue)                           \
913 914
  ASM(MemCopyUint8Uint8, CCall)                                                \
  ASM(MemMove, CCall)                                                          \
915 916 917
                                                                               \
  /* Trace */                                                                  \
  CPP(IsTraceCategoryEnabled)                                                  \
918 919 920
  CPP(Trace)                                                                   \
                                                                               \
  /* Weak refs */                                                              \
921 922
  CPP(FinalizationRegistryRegister)                                            \
  CPP(FinalizationRegistryUnregister)                                          \
923 924
                                                                               \
  /* Async modules */                                                          \
925
  TFJ(AsyncModuleEvaluate, kDontAdaptArgumentsSentinel)                        \
926 927 928 929
                                                                               \
  /* CallAsyncModule* are spec anonymyous functions */                         \
  CPP(CallAsyncModuleFulfilled)                                                \
  CPP(CallAsyncModuleRejected)
930

931
#ifdef V8_INTL_SUPPORT
932
#define BUILTIN_LIST_INTL(CPP, TFJ, TFS)                               \
933 934
  /* ecma402 #sec-intl.collator */                                     \
  CPP(CollatorConstructor)                                             \
935 936 937 938
  /* ecma 402 #sec-collator-compare-functions*/                        \
  CPP(CollatorInternalCompare)                                         \
  /* ecma402 #sec-intl.collator.prototype.compare */                   \
  CPP(CollatorPrototypeCompare)                                        \
939 940
  /* ecma402 #sec-intl.collator.supportedlocalesof */                  \
  CPP(CollatorSupportedLocalesOf)                                      \
941
  CPP(CollatorPrototypeResolvedOptions)                                \
942 943 944 945 946 947
  /* ecma402 #sup-date.prototype.tolocaledatestring */                 \
  CPP(DatePrototypeToLocaleDateString)                                 \
  /* ecma402 #sup-date.prototype.tolocalestring */                     \
  CPP(DatePrototypeToLocaleString)                                     \
  /* ecma402 #sup-date.prototype.tolocaletimestring */                 \
  CPP(DatePrototypeToLocaleTimeString)                                 \
948 949
  /* ecma402 #sec-intl.datetimeformat */                               \
  CPP(DateTimeFormatConstructor)                                       \
950 951 952 953
  /* ecma402 #sec-datetime-format-functions */                         \
  CPP(DateTimeFormatInternalFormat)                                    \
  /* ecma402 #sec-intl.datetimeformat.prototype.format */              \
  CPP(DateTimeFormatPrototypeFormat)                                   \
954 955 956 957
  /* ecma402 #sec-intl.datetimeformat.prototype.formatrange */         \
  CPP(DateTimeFormatPrototypeFormatRange)                              \
  /* ecma402 #sec-intl.datetimeformat.prototype.formatrangetoparts */  \
  CPP(DateTimeFormatPrototypeFormatRangeToParts)                       \
958 959
  /* ecma402 #sec-intl.datetimeformat.prototype.formattoparts */       \
  CPP(DateTimeFormatPrototypeFormatToParts)                            \
960 961
  /* ecma402 #sec-intl.datetimeformat.prototype.resolvedoptions */     \
  CPP(DateTimeFormatPrototypeResolvedOptions)                          \
962 963
  /* ecma402 #sec-intl.datetimeformat.supportedlocalesof */            \
  CPP(DateTimeFormatSupportedLocalesOf)                                \
964 965 966 967 968 969 970 971
  /* 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)                                  \
972 973
  /* ecma402 #sec-intl.getcanonicallocales */                          \
  CPP(IntlGetCanonicalLocales)                                         \
974
  /* ecma402 #sec-intl-listformat-constructor */                       \
975
  CPP(ListFormatConstructor)                                           \
976
  /* ecma402 #sec-intl-list-format.prototype.format */                 \
977
  TFJ(ListFormatPrototypeFormat, kDontAdaptArgumentsSentinel)          \
978
  /* ecma402 #sec-intl-list-format.prototype.formattoparts */          \
979
  TFJ(ListFormatPrototypeFormatToParts, kDontAdaptArgumentsSentinel)   \
980 981
  /* ecma402 #sec-intl.listformat.prototype.resolvedoptions */         \
  CPP(ListFormatPrototypeResolvedOptions)                              \
982 983
  /* ecma402 #sec-intl.ListFormat.supportedlocalesof */                \
  CPP(ListFormatSupportedLocalesOf)                                    \
984 985 986 987 988 989 990
  /* ecma402 #sec-intl-locale-constructor */                           \
  CPP(LocaleConstructor)                                               \
  CPP(LocalePrototypeBaseName)                                         \
  CPP(LocalePrototypeCalendar)                                         \
  CPP(LocalePrototypeCaseFirst)                                        \
  CPP(LocalePrototypeCollation)                                        \
  CPP(LocalePrototypeHourCycle)                                        \
991
  CPP(LocalePrototypeLanguage)                                         \
992 993 994 995
  /* ecma402 #sec-Intl.Locale.prototype.maximize */                    \
  CPP(LocalePrototypeMaximize)                                         \
  /* ecma402 #sec-Intl.Locale.prototype.minimize */                    \
  CPP(LocalePrototypeMinimize)                                         \
996 997 998 999 1000 1001 1002
  CPP(LocalePrototypeNumeric)                                          \
  CPP(LocalePrototypeNumberingSystem)                                  \
  CPP(LocalePrototypeRegion)                                           \
  CPP(LocalePrototypeScript)                                           \
  CPP(LocalePrototypeToString)                                         \
  /* ecma402 #sec-intl.numberformat */                                 \
  CPP(NumberFormatConstructor)                                         \
1003 1004 1005 1006
  /* ecma402 #sec-number-format-functions */                           \
  CPP(NumberFormatInternalFormatNumber)                                \
  /* ecma402 #sec-intl.numberformat.prototype.format */                \
  CPP(NumberFormatPrototypeFormatNumber)                               \
1007 1008
  /* ecma402 #sec-intl.numberformat.prototype.formattoparts */         \
  CPP(NumberFormatPrototypeFormatToParts)                              \
1009 1010
  /* ecma402 #sec-intl.numberformat.prototype.resolvedoptions */       \
  CPP(NumberFormatPrototypeResolvedOptions)                            \
1011 1012
  /* ecma402 #sec-intl.numberformat.supportedlocalesof */              \
  CPP(NumberFormatSupportedLocalesOf)                                  \
1013 1014
  /* ecma402 #sec-intl.pluralrules */                                  \
  CPP(PluralRulesConstructor)                                          \
1015
  CPP(PluralRulesPrototypeResolvedOptions)                             \
1016 1017
  /* ecma402 #sec-intl.pluralrules.prototype.select */                 \
  CPP(PluralRulesPrototypeSelect)                                      \
1018 1019
  /* ecma402 #sec-intl.pluralrules.supportedlocalesof */               \
  CPP(PluralRulesSupportedLocalesOf)                                   \
1020
  /* ecma402 #sec-intl.RelativeTimeFormat.constructor */               \
1021
  CPP(RelativeTimeFormatConstructor)                                   \
1022 1023 1024
  /* ecma402 #sec-intl.RelativeTimeFormat.prototype.format */          \
  CPP(RelativeTimeFormatPrototypeFormat)                               \
  /* ecma402 #sec-intl.RelativeTimeFormat.prototype.formatToParts */   \
1025
  CPP(RelativeTimeFormatPrototypeFormatToParts)                        \
1026 1027 1028 1029
  /* ecma402 #sec-intl.RelativeTimeFormat.prototype.resolvedOptions */ \
  CPP(RelativeTimeFormatPrototypeResolvedOptions)                      \
  /* ecma402 #sec-intl.RelativeTimeFormat.supportedlocalesof */        \
  CPP(RelativeTimeFormatSupportedLocalesOf)                            \
1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043
  /* 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-breakType */              \
  CPP(SegmentIteratorPrototypeBreakType)                               \
  /* ecma402 #sec-segment-iterator-prototype-following */              \
  CPP(SegmentIteratorPrototypeFollowing)                               \
  /* ecma402 #sec-segment-iterator-prototype-preceding */              \
  CPP(SegmentIteratorPrototypePreceding)                               \
1044 1045
  /* ecma402 #sec-segment-iterator-prototype-index */                  \
  CPP(SegmentIteratorPrototypeIndex)                                   \
1046 1047
  /* ecma402 #sec-segment-iterator-prototype-next */                   \
  CPP(SegmentIteratorPrototypeNext)                                    \
1048 1049
  /* ES #sec-string.prototype.normalize */                             \
  CPP(StringPrototypeNormalizeIntl)                                    \
1050 1051 1052
  /* ecma402 #sup-string.prototype.tolocalelowercase */                \
  CPP(StringPrototypeToLocaleLowerCase)                                \
  /* ecma402 #sup-string.prototype.tolocaleuppercase */                \
1053
  CPP(StringPrototypeToLocaleUpperCase)                                \
1054 1055 1056 1057 1058 1059
  /* ES #sec-string.prototype.tolowercase */                           \
  TFJ(StringPrototypeToLowerCaseIntl, 0, kReceiver)                    \
  /* ES #sec-string.prototype.touppercase */                           \
  CPP(StringPrototypeToUpperCaseIntl)                                  \
  TFS(StringToLowerCaseIntl, kString)                                  \
  CPP(V8BreakIteratorConstructor)                                      \
1060
  CPP(V8BreakIteratorInternalAdoptText)                                \
1061 1062
  CPP(V8BreakIteratorInternalBreakType)                                \
  CPP(V8BreakIteratorInternalCurrent)                                  \
1063 1064
  CPP(V8BreakIteratorInternalFirst)                                    \
  CPP(V8BreakIteratorInternalNext)                                     \
1065
  CPP(V8BreakIteratorPrototypeAdoptText)                               \
1066
  CPP(V8BreakIteratorPrototypeBreakType)                               \
1067 1068 1069 1070 1071
  CPP(V8BreakIteratorPrototypeCurrent)                                 \
  CPP(V8BreakIteratorPrototypeFirst)                                   \
  CPP(V8BreakIteratorPrototypeNext)                                    \
  CPP(V8BreakIteratorPrototypeResolvedOptions)                         \
  CPP(V8BreakIteratorSupportedLocalesOf)
1072
#else
1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085
#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

1086 1087 1088 1089
#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)                       \
1090
  BUILTIN_LIST_BYTECODE_HANDLERS(BCH)
1091

1092 1093
// The exception thrown in the following builtins are caught
// internally and result in a promise rejection.
1094 1095 1096 1097
#define BUILTIN_PROMISE_REJECTION_PREDICTION_LIST(V) \
  V(AsyncFromSyncIteratorPrototypeNext)              \
  V(AsyncFromSyncIteratorPrototypeReturn)            \
  V(AsyncFromSyncIteratorPrototypeThrow)             \
1098 1099
  V(AsyncFunctionAwaitCaught)                        \
  V(AsyncFunctionAwaitUncaught)                      \
1100
  V(AsyncGeneratorResolve)                           \
1101 1102
  V(AsyncGeneratorAwaitCaught)                       \
  V(AsyncGeneratorAwaitUncaught)                     \
1103
  V(PromiseAll)                                      \
1104
  V(PromiseAny)                                      \
1105
  V(PromiseConstructor)                              \
1106
  V(PromiseConstructorLazyDeoptContinuation)         \
1107
  V(PromiseFulfillReactionJob)                       \
1108
  V(PromiseRace)                                     \
1109 1110
  V(ResolvePromise)

1111 1112
// The exception thrown in the following builtins are caught internally and will
// not be propagated further or re-thrown
1113
#define BUILTIN_EXCEPTION_CAUGHT_PREDICTION_LIST(V) V(PromiseRejectReactionJob)
1114 1115 1116

#define IGNORE_BUILTIN(...)

1117 1118
#define BUILTIN_LIST_C(V)                                         \
  BUILTIN_LIST(V, IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, \
1119
               IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN)
1120 1121 1122

#define BUILTIN_LIST_A(V)                                                      \
  BUILTIN_LIST(IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, \
1123
               IGNORE_BUILTIN, IGNORE_BUILTIN, V)
1124

1125 1126 1127
#define BUILTIN_LIST_TFS(V)                                       \
  BUILTIN_LIST(IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, V, \
               IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN)
1128

1129
#define BUILTIN_LIST_TFJ(V)                                       \
1130 1131
  BUILTIN_LIST(IGNORE_BUILTIN, V, IGNORE_BUILTIN, IGNORE_BUILTIN, \
               IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN)
1132

1133
#define BUILTIN_LIST_TFC(V)                                       \
1134 1135
  BUILTIN_LIST(IGNORE_BUILTIN, IGNORE_BUILTIN, V, IGNORE_BUILTIN, \
               IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN)
1136

1137 1138 1139 1140
}  // namespace internal
}  // namespace v8

#endif  // V8_BUILTINS_BUILTINS_DEFINITIONS_H_