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