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