v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
Loading...
Searching...
No Matches
builtins-definitions.h
Go to the documentation of this file.
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"
10
11// include generated header
12#include "torque-generated/builtin-definitions.h"
13
14namespace v8 {
15namespace internal {
16
17#ifdef V8_ENABLE_EXPERIMENTAL_TSA_BUILTINS
18// EXPAND is needed to work around MSVC's broken __VA_ARGS__ expansion.
19#define IF_TSA(TSA_MACRO, CSA_MACRO, ...) EXPAND(TSA_MACRO(__VA_ARGS__))
20#else
21// EXPAND is needed to work around MSVC's broken __VA_ARGS__ expansion.
22#define IF_TSA(TSA_MACRO, CSA_MACRO, ...) EXPAND(CSA_MACRO(__VA_ARGS__))
23#endif
24
25// CPP: Builtin in C++. Entered via BUILTIN_EXIT frame.
26// Args: name, formal parameter count
27// TFJ: Builtin in Turbofan, with JS linkage (callable as Javascript function).
28// Args: name, formal parameter count, explicit argument names...
29// TSJ: Builtin in Turboshaft, with JS linkage (callable as Javascript
30// function).
31// Args: name, formal parameter count, explicit argument names...
32// TFS: Builtin in Turbofan, with CodeStub linkage.
33// Args: name, needs context, explicit argument names...
34// TFC: Builtin in Turbofan, with CodeStub linkage and custom descriptor.
35// Args: name, interface descriptor
36// TSC: Builtin in Turboshaft, with CodeStub linkage and custom descriptor.
37// Args: name, interface descriptor
38// TFH: Handlers in Turbofan, with CodeStub linkage.
39// Args: name, interface descriptor
40// BCH: Bytecode Handlers, with bytecode dispatch linkage.
41// Args: name, OperandScale, Bytecode
42// ASM: Builtin in platform-dependent assembly.
43// Args: name, interface descriptor
44
45// Builtins are additionally split into tiers, where the tier determines the
46// distance of the builtins table from the root register within IsolateData.
47//
48// - Tier 0 (T0) are guaranteed to be close to the root register and can thus
49// be accessed efficiently root-relative calls (so not, e.g., calls from
50// generated code when short-builtin-calls is on).
51// - T1 builtins have no distance guarantees.
52//
53// Note, this mechanism works only if the set of T0 builtins is kept as small
54// as possible. Please, resist the temptation to add your builtin here unless
55// there's a very good reason.
56#define BUILTIN_LIST_BASE_TIER0(CPP, TFJ, TFC, TFS, TFH, ASM) \
57 /* Deoptimization entries. */ \
58 ASM(DeoptimizationEntry_Eager, DeoptimizationEntry) \
59 ASM(DeoptimizationEntry_Lazy, DeoptimizationEntry) \
60 \
61 /* GC write barrier. */ \
62 TFC(RecordWriteSaveFP, WriteBarrier) \
63 TFC(RecordWriteIgnoreFP, WriteBarrier) \
64 TFC(EphemeronKeyBarrierSaveFP, WriteBarrier) \
65 TFC(EphemeronKeyBarrierIgnoreFP, WriteBarrier) \
66 \
67 /* TODO(ishell): dummy builtin added here just to keep the Tier0 table */ \
68 /* size unmodified to avoid unexpected performance implications. */ \
69 /* It should be removed. */ \
70 CPP(DummyBuiltin, kDontAdaptArgumentsSentinel)
71
72#ifdef V8_ENABLE_LEAPTIERING
73
74/* Tiering related builtins
75 *
76 * These builtins are used for tiering. Some special conventions apply. They,
77 * - can be passed to the JSDispatchTable::SetTieringRequest to be executed
78 * instead of the actual JSFunction's code.
79 * - need to uninstall themselves using JSDispatchTable::ResetTieringRequest.
80 * - need to tail call the actual JSFunction's code.
81 *
82 * Also, there are lifecycle considerations since the tiering requests are
83 * mutually exclusive.
84 *
85 * For RCS the optimizing builtins should include the work `Optimize` in their
86 * name (see tools/callstats_groups.py).
87 *
88 * */
89#define BUILTIN_LIST_BASE_TIERING_TURBOFAN(TFC) \
90 TFC(StartTurbofanOptimizeJob, JSTrampoline) \
91 TFC(OptimizeTurbofanEager, JSTrampoline)
92
93#define BUILTIN_LIST_BASE_TIERING_MAGLEV(TFC) \
94 TFC(StartMaglevOptimizeJob, JSTrampoline) \
95 TFC(OptimizeMaglevEager, JSTrampoline)
96
97#define BUILTIN_LIST_BASE_TIERING(TFC) \
98 BUILTIN_LIST_BASE_TIERING_MAGLEV(TFC) \
99 BUILTIN_LIST_BASE_TIERING_TURBOFAN(TFC) \
100 TFC(FunctionLogNextExecution, JSTrampoline) \
101 TFC(MarkReoptimizeLazyDeoptimized, JSTrampoline) \
102 TFC(MarkLazyDeoptimized, JSTrampoline)
103
104#else
105
106#define BUILTIN_LIST_BASE_TIERING(TFC) \
107 /* TODO(saelo): should this use a different descriptor? */ \
108 TFC(CompileLazyDeoptimizedCode, JSTrampoline)
109
110#endif
111
112#define BUILTIN_LIST_BASE_TIER1(CPP, TSJ, TFJ, TSC, TFC, TFS, TFH, ASM) \
113 /* GC write barriers */ \
114 TFC(IndirectPointerBarrierSaveFP, IndirectPointerWriteBarrier) \
115 TFC(IndirectPointerBarrierIgnoreFP, IndirectPointerWriteBarrier) \
116 \
117 /* Adaptors for CPP builtins with various formal parameter counts. */ \
118 /* We split these versions for simplicity (not all architectures have */ \
119 /* enough registers for extra CEntry arguments) and speculatively for */ \
120 /* performance reasons. */ \
121 TFC(AdaptorWithBuiltinExitFrame0, CppBuiltinAdaptor) \
122 TFC(AdaptorWithBuiltinExitFrame1, CppBuiltinAdaptor) \
123 TFC(AdaptorWithBuiltinExitFrame2, CppBuiltinAdaptor) \
124 TFC(AdaptorWithBuiltinExitFrame3, CppBuiltinAdaptor) \
125 TFC(AdaptorWithBuiltinExitFrame4, CppBuiltinAdaptor) \
126 TFC(AdaptorWithBuiltinExitFrame5, CppBuiltinAdaptor) \
127 \
128 /* TSAN support for stores in generated code. */ \
129 IF_TSAN(TFC, TSANRelaxedStore8IgnoreFP, TSANStore) \
130 IF_TSAN(TFC, TSANRelaxedStore8SaveFP, TSANStore) \
131 IF_TSAN(TFC, TSANRelaxedStore16IgnoreFP, TSANStore) \
132 IF_TSAN(TFC, TSANRelaxedStore16SaveFP, TSANStore) \
133 IF_TSAN(TFC, TSANRelaxedStore32IgnoreFP, TSANStore) \
134 IF_TSAN(TFC, TSANRelaxedStore32SaveFP, TSANStore) \
135 IF_TSAN(TFC, TSANRelaxedStore64IgnoreFP, TSANStore) \
136 IF_TSAN(TFC, TSANRelaxedStore64SaveFP, TSANStore) \
137 IF_TSAN(TFC, TSANSeqCstStore8IgnoreFP, TSANStore) \
138 IF_TSAN(TFC, TSANSeqCstStore8SaveFP, TSANStore) \
139 IF_TSAN(TFC, TSANSeqCstStore16IgnoreFP, TSANStore) \
140 IF_TSAN(TFC, TSANSeqCstStore16SaveFP, TSANStore) \
141 IF_TSAN(TFC, TSANSeqCstStore32IgnoreFP, TSANStore) \
142 IF_TSAN(TFC, TSANSeqCstStore32SaveFP, TSANStore) \
143 IF_TSAN(TFC, TSANSeqCstStore64IgnoreFP, TSANStore) \
144 IF_TSAN(TFC, TSANSeqCstStore64SaveFP, TSANStore) \
145 \
146 /* TSAN support for loads in generated code. */ \
147 IF_TSAN(TFC, TSANRelaxedLoad32IgnoreFP, TSANLoad) \
148 IF_TSAN(TFC, TSANRelaxedLoad32SaveFP, TSANLoad) \
149 IF_TSAN(TFC, TSANRelaxedLoad64IgnoreFP, TSANLoad) \
150 IF_TSAN(TFC, TSANRelaxedLoad64SaveFP, TSANLoad) \
151 \
152 /* Calls */ \
153 /* ES6 section 9.2.1 [[Call]] ( thisArgument, argumentsList) */ \
154 ASM(CallFunction_ReceiverIsNullOrUndefined, CallTrampoline) \
155 ASM(CallFunction_ReceiverIsNotNullOrUndefined, CallTrampoline) \
156 ASM(CallFunction_ReceiverIsAny, CallTrampoline) \
157 /* ES6 section 9.4.1.1 [[Call]] ( thisArgument, argumentsList) */ \
158 ASM(CallBoundFunction, CallTrampoline) \
159 /* #sec-wrapped-function-exotic-objects-call-thisargument-argumentslist */ \
160 TFC(CallWrappedFunction, CallTrampoline) \
161 /* ES6 section 7.3.12 Call(F, V, [argumentsList]) */ \
162 ASM(Call_ReceiverIsNullOrUndefined, CallTrampoline) \
163 ASM(Call_ReceiverIsNotNullOrUndefined, CallTrampoline) \
164 ASM(Call_ReceiverIsAny, CallTrampoline) \
165 TFC(Call_ReceiverIsNullOrUndefined_Baseline_Compact, \
166 CallTrampoline_Baseline_Compact) \
167 TFC(Call_ReceiverIsNullOrUndefined_Baseline, CallTrampoline_Baseline) \
168 TFC(Call_ReceiverIsNotNullOrUndefined_Baseline_Compact, \
169 CallTrampoline_Baseline_Compact) \
170 TFC(Call_ReceiverIsNotNullOrUndefined_Baseline, CallTrampoline_Baseline) \
171 TFC(Call_ReceiverIsAny_Baseline_Compact, CallTrampoline_Baseline_Compact) \
172 TFC(Call_ReceiverIsAny_Baseline, CallTrampoline_Baseline) \
173 TFC(Call_ReceiverIsNullOrUndefined_WithFeedback, \
174 CallTrampoline_WithFeedback) \
175 TFC(Call_ReceiverIsNotNullOrUndefined_WithFeedback, \
176 CallTrampoline_WithFeedback) \
177 TFC(Call_ReceiverIsAny_WithFeedback, CallTrampoline_WithFeedback) \
178 \
179 /* ES6 section 9.5.12[[Call]] ( thisArgument, argumentsList ) */ \
180 TFC(CallProxy, CallTrampoline) \
181 ASM(CallVarargs, CallVarargs) \
182 TFC(CallWithSpread, CallWithSpread) \
183 TFC(CallWithSpread_Baseline, CallWithSpread_Baseline) \
184 TFC(CallWithSpread_WithFeedback, CallWithSpread_WithFeedback) \
185 TFC(CallWithArrayLike, CallWithArrayLike) \
186 TFC(CallWithArrayLike_WithFeedback, CallWithArrayLike_WithFeedback) \
187 ASM(CallForwardVarargs, CallForwardVarargs) \
188 ASM(CallFunctionForwardVarargs, CallForwardVarargs) \
189 /* Call an API callback via a {FunctionTemplateInfo}, doing appropriate */ \
190 /* access and compatible receiver checks. */ \
191 TFC(CallFunctionTemplate_Generic, CallFunctionTemplateGeneric) \
192 TFC(CallFunctionTemplate_CheckAccess, CallFunctionTemplate) \
193 TFC(CallFunctionTemplate_CheckCompatibleReceiver, CallFunctionTemplate) \
194 TFC(CallFunctionTemplate_CheckAccessAndCompatibleReceiver, \
195 CallFunctionTemplate) \
196 \
197 /* Construct */ \
198 /* ES6 section 9.2.2 [[Construct]] ( argumentsList, newTarget) */ \
199 ASM(ConstructFunction, JSTrampoline) \
200 /* ES6 section 9.4.1.2 [[Construct]] (argumentsList, newTarget) */ \
201 ASM(ConstructBoundFunction, JSTrampoline) \
202 ASM(ConstructedNonConstructable, JSTrampoline) \
203 /* ES6 section 7.3.13 Construct (F, [argumentsList], [newTarget]) */ \
204 ASM(Construct, ConstructStub) \
205 ASM(ConstructVarargs, ConstructVarargs) \
206 TFC(ConstructWithSpread, ConstructWithSpread) \
207 TFC(ConstructWithSpread_Baseline, ConstructWithSpread_Baseline) \
208 TFC(ConstructWithSpread_WithFeedback, ConstructWithSpread_WithFeedback) \
209 TFC(ConstructWithArrayLike, ConstructWithArrayLike) \
210 ASM(ConstructForwardVarargs, ConstructForwardVarargs) \
211 ASM(ConstructForwardAllArgs, ConstructForwardAllArgs) \
212 TFC(ConstructForwardAllArgs_Baseline, ConstructForwardAllArgs_Baseline) \
213 TFC(ConstructForwardAllArgs_WithFeedback, \
214 ConstructForwardAllArgs_WithFeedback) \
215 ASM(ConstructFunctionForwardVarargs, ConstructForwardVarargs) \
216 TFC(Construct_Baseline, Construct_Baseline) \
217 TFC(Construct_WithFeedback, Construct_WithFeedback) \
218 ASM(JSConstructStubGeneric, ConstructStub) \
219 ASM(JSBuiltinsConstructStub, ConstructStub) \
220 TFC(FastNewObject, FastNewObject) \
221 TFS(FastNewClosure, NeedsContext::kYes, kSharedFunctionInfo, kFeedbackCell) \
222 /* ES6 section 9.5.14 [[Construct]] ( argumentsList, newTarget) */ \
223 TFC(ConstructProxy, JSTrampoline) \
224 \
225 /* Apply and entries */ \
226 ASM(JSEntry, JSEntry) \
227 ASM(JSConstructEntry, JSEntry) \
228 ASM(JSRunMicrotasksEntry, RunMicrotasksEntry) \
229 /* Call a JSValue. */ \
230 ASM(JSEntryTrampoline, JSEntry) \
231 /* Construct a JSValue. */ \
232 ASM(JSConstructEntryTrampoline, JSEntry) \
233 ASM(ResumeGeneratorTrampoline, ResumeGenerator) \
234 \
235 /* String helpers */ \
236 IF_TSA(TSC, TFC, StringFromCodePointAt, StringAtAsString) \
237 TFC(StringEqual, StringEqual) \
238 TFC(StringGreaterThan, CompareNoContext) \
239 TFC(StringGreaterThanOrEqual, CompareNoContext) \
240 TFC(StringLessThan, CompareNoContext) \
241 TFC(StringLessThanOrEqual, CompareNoContext) \
242 TFC(StringCompare, CompareNoContext) \
243 TFC(StringSubstring, StringSubstring) \
244 \
245 /* OrderedHashTable helpers */ \
246 TFS(OrderedHashTableHealIndex, NeedsContext::kYes, kTable, kIndex) \
247 \
248 /* Interpreter */ \
249 /* InterpreterEntryTrampoline dispatches to the interpreter to run a */ \
250 /* JSFunction in the form of bytecodes */ \
251 ASM(InterpreterEntryTrampoline, JSTrampoline) \
252 ASM(InterpreterEntryTrampolineForProfiling, JSTrampoline) \
253 ASM(InterpreterForwardAllArgsThenConstruct, ConstructForwardAllArgs) \
254 ASM(InterpreterPushArgsThenCall, InterpreterPushArgsThenCall) \
255 ASM(InterpreterPushUndefinedAndArgsThenCall, InterpreterPushArgsThenCall) \
256 ASM(InterpreterPushArgsThenCallWithFinalSpread, InterpreterPushArgsThenCall) \
257 ASM(InterpreterPushArgsThenConstruct, InterpreterPushArgsThenConstruct) \
258 ASM(InterpreterPushArgsThenFastConstructFunction, \
259 InterpreterPushArgsThenConstruct) \
260 ASM(InterpreterPushArgsThenConstructArrayFunction, \
261 InterpreterPushArgsThenConstruct) \
262 ASM(InterpreterPushArgsThenConstructWithFinalSpread, \
263 InterpreterPushArgsThenConstruct) \
264 ASM(InterpreterEnterAtBytecode, Void) \
265 ASM(InterpreterEnterAtNextBytecode, Void) \
266 ASM(InterpreterOnStackReplacement, OnStackReplacement) \
267 \
268 /* Baseline Compiler */ \
269 ASM(BaselineOutOfLinePrologue, BaselineOutOfLinePrologue) \
270 ASM(BaselineOutOfLinePrologueDeopt, Void) \
271 ASM(BaselineOnStackReplacement, OnStackReplacement) \
272 ASM(BaselineLeaveFrame, BaselineLeaveFrame) \
273 ASM(InterpreterOnStackReplacement_ToBaseline, Void) \
274 \
275 /* Maglev Compiler */ \
276 ASM(MaglevFunctionEntryStackCheck_WithoutNewTarget, Void) \
277 ASM(MaglevFunctionEntryStackCheck_WithNewTarget, Void) \
278 ASM(MaglevOptimizeCodeOrTailCallOptimizedCodeSlot, \
279 MaglevOptimizeCodeOrTailCallOptimizedCodeSlot) \
280 \
281 /* Code life-cycle */ \
282 TFC(CompileLazy, JSTrampoline) \
283 TFC(InstantiateAsmJs, JSTrampoline) \
284 ASM(NotifyDeoptimized, Void) \
285 \
286 BUILTIN_LIST_BASE_TIERING(TFC) \
287 \
288 /* Trampolines called when returning from a deoptimization that expects */ \
289 /* to continue in a JavaScript builtin to finish the functionality of a */ \
290 /* an TF-inlined version of builtin that has side-effects. */ \
291 /* */ \
292 /* The trampolines work as follows: */ \
293 /* 1. Trampoline restores input register values that */ \
294 /* the builtin expects from a BuiltinContinuationFrame. */ \
295 /* 2. Trampoline tears down BuiltinContinuationFrame. */ \
296 /* 3. Trampoline jumps to the builtin's address. */ \
297 /* 4. Builtin executes as if invoked by the frame above it. */ \
298 /* 5. When the builtin returns, execution resumes normally in the */ \
299 /* calling frame, processing any return result from the JavaScript */ \
300 /* builtin as if it had called the builtin directly. */ \
301 /* */ \
302 /* There are two variants of the stub that differ in their handling of a */ \
303 /* value returned by the next frame deeper on the stack. For LAZY deopts, */ \
304 /* the return value (e.g. rax on x64) is explicitly passed as an extra */ \
305 /* stack parameter to the JavaScript builtin by the "WithResult" */ \
306 /* trampoline variant. The plain variant is used in EAGER deopt contexts */ \
307 /* and has no such special handling. */ \
308 ASM(ContinueToCodeStubBuiltin, ContinueToBuiltin) \
309 ASM(ContinueToCodeStubBuiltinWithResult, ContinueToBuiltin) \
310 ASM(ContinueToJavaScriptBuiltin, ContinueToBuiltin) \
311 ASM(ContinueToJavaScriptBuiltinWithResult, ContinueToBuiltin) \
312 \
313 /* API callback handling */ \
314 ASM(CallApiCallbackGeneric, CallApiCallbackGeneric) \
315 ASM(CallApiCallbackOptimizedNoProfiling, CallApiCallbackOptimized) \
316 ASM(CallApiCallbackOptimized, CallApiCallbackOptimized) \
317 ASM(CallApiGetter, ApiGetter) \
318 TFC(HandleApiCallOrConstruct, JSTrampoline) \
319 CPP(HandleApiConstruct, kDontAdaptArgumentsSentinel) \
320 CPP(HandleApiCallAsFunctionDelegate, kDontAdaptArgumentsSentinel) \
321 CPP(HandleApiCallAsConstructorDelegate, kDontAdaptArgumentsSentinel) \
322 \
323 /* Adapters for Turbofan into runtime */ \
324 TFC(AllocateInYoungGeneration, Allocate) \
325 TFC(AllocateInOldGeneration, Allocate) \
326 IF_WASM(TFC, WasmAllocateInYoungGeneration, Allocate) \
327 IF_WASM(TFC, WasmAllocateInOldGeneration, Allocate) \
328 \
329 TFC(NewHeapNumber, NewHeapNumber) \
330 \
331 /* TurboFan support builtins */ \
332 TFS(CopyFastSmiOrObjectElements, NeedsContext::kNo, kObject) \
333 TFC(GrowFastDoubleElements, GrowArrayElements) \
334 TFC(GrowFastSmiOrObjectElements, GrowArrayElements) \
335 \
336 /* Debugger */ \
337 TFJ(DebugBreakTrampoline, kDontAdaptArgumentsSentinel) \
338 ASM(RestartFrameTrampoline, RestartFrameTrampoline) \
339 \
340 /* Type conversions */ \
341 TFC(ToNumber, TypeConversion) \
342 TFC(ToBigInt, TypeConversion) \
343 TFC(ToNumber_Baseline, TypeConversion_Baseline) \
344 TFC(ToNumeric_Baseline, TypeConversion_Baseline) \
345 TFC(PlainPrimitiveToNumber, TypeConversionNoContext) \
346 TFC(ToNumberConvertBigInt, TypeConversion) \
347 TFC(ToBigIntConvertNumber, TypeConversion) \
348 TFC(Typeof, Typeof) \
349 TFC(Typeof_Baseline, UnaryOp_Baseline) \
350 TFC(BigIntToI64, BigIntToI64) \
351 TFC(BigIntToI32Pair, BigIntToI32Pair) \
352 TFC(I64ToBigInt, I64ToBigInt) \
353 TFC(I32PairToBigInt, I32PairToBigInt) \
354 \
355 /* Type conversions continuations */ \
356 TFC(ToBooleanLazyDeoptContinuation, SingleParameterOnStack) \
357 TFC(MathCeilContinuation, SingleParameterOnStack) \
358 TFC(MathFloorContinuation, SingleParameterOnStack) \
359 TFC(MathRoundContinuation, SingleParameterOnStack) \
360 \
361 /* Handlers */ \
362 TFH(KeyedLoadIC_PolymorphicName, LoadWithVector) \
363 TFH(KeyedStoreIC_Megamorphic, StoreWithVector) \
364 TFH(DefineKeyedOwnIC_Megamorphic, StoreNoFeedback) \
365 TFH(LoadGlobalIC_NoFeedback, LoadGlobalNoFeedback) \
366 TFH(LoadIC_FunctionPrototype, LoadWithVector) \
367 TFH(LoadIC_StringLength, LoadWithVector) \
368 TFH(LoadIC_StringWrapperLength, LoadWithVector) \
369 TFH(LoadIC_NoFeedback, LoadNoFeedback) \
370 TFH(StoreGlobalIC_Slow, StoreWithVector) \
371 TFH(StoreIC_NoFeedback, StoreNoFeedback) \
372 TFH(DefineNamedOwnIC_NoFeedback, StoreNoFeedback) \
373 TFH(KeyedLoadIC_SloppyArguments, LoadWithVector) \
374 TFH(LoadIndexedInterceptorIC, LoadWithVector) \
375 TFH(KeyedStoreIC_SloppyArguments_InBounds, StoreWithVector) \
376 TFH(KeyedStoreIC_SloppyArguments_NoTransitionGrowAndHandleCOW, \
377 StoreWithVector) \
378 TFH(KeyedStoreIC_SloppyArguments_NoTransitionIgnoreTypedArrayOOB, \
379 StoreWithVector) \
380 TFH(KeyedStoreIC_SloppyArguments_NoTransitionHandleCOW, StoreWithVector) \
381 TFH(StoreFastElementIC_InBounds, StoreWithVector) \
382 TFH(StoreFastElementIC_NoTransitionGrowAndHandleCOW, StoreWithVector) \
383 TFH(StoreFastElementIC_NoTransitionIgnoreTypedArrayOOB, StoreWithVector) \
384 TFH(StoreFastElementIC_NoTransitionHandleCOW, StoreWithVector) \
385 TFH(ElementsTransitionAndStore_InBounds, StoreTransition) \
386 TFH(ElementsTransitionAndStore_NoTransitionGrowAndHandleCOW, \
387 StoreTransition) \
388 TFH(ElementsTransitionAndStore_NoTransitionIgnoreTypedArrayOOB, \
389 StoreTransition) \
390 TFH(ElementsTransitionAndStore_NoTransitionHandleCOW, StoreTransition) \
391 TFH(KeyedHasIC_PolymorphicName, LoadWithVector) \
392 TFH(KeyedHasIC_SloppyArguments, LoadWithVector) \
393 TFH(HasIndexedInterceptorIC, LoadWithVector) \
394 \
395 /* Microtask helpers */ \
396 TFS(EnqueueMicrotask, NeedsContext::kYes, kMicrotask) \
397 ASM(RunMicrotasksTrampoline, RunMicrotasksEntry) \
398 TFC(RunMicrotasks, RunMicrotasks) \
399 \
400 /* Object property helpers */ \
401 TFS(HasProperty, NeedsContext::kYes, kObject, kKey) \
402 TFS(DeleteProperty, NeedsContext::kYes, kObject, kKey, kLanguageMode) \
403 /* ES #sec-copydataproperties */ \
404 TFS(CopyDataProperties, NeedsContext::kYes, kTarget, kSource) \
405 TFS(SetDataProperties, NeedsContext::kYes, kTarget, kSource) \
406 TFC(CopyDataPropertiesWithExcludedPropertiesOnStack, \
407 CopyDataPropertiesWithExcludedPropertiesOnStack) \
408 TFC(CopyDataPropertiesWithExcludedProperties, \
409 CopyDataPropertiesWithExcludedProperties) \
410 \
411 /* Abort */ \
412 TFC(Abort, Abort) \
413 TFC(AbortCSADcheck, Abort) \
414 \
415 /* Built-in functions for Javascript */ \
416 /* Special internal builtins */ \
417 CPP(EmptyFunction, kDontAdaptArgumentsSentinel) \
418 CPP(EmptyFunction1, JSParameterCount(1)) \
419 CPP(Illegal, kDontAdaptArgumentsSentinel) \
420 CPP(IllegalInvocationThrower, kDontAdaptArgumentsSentinel) \
421 CPP(StrictPoisonPillThrower, JSParameterCount(0)) \
422 CPP(UnsupportedThrower, kDontAdaptArgumentsSentinel) \
423 TFJ(ReturnReceiver, kJSArgcReceiverSlots, kReceiver) \
424 \
425 /* AbstractModuleSource */ \
426 CPP(AbstractModuleSourceToStringTag, JSParameterCount(0)) \
427 \
428 /* Array */ \
429 TFC(ArrayConstructor, JSTrampoline) \
430 TFC(ArrayConstructorImpl, ArrayConstructor) \
431 TFC(ArrayNoArgumentConstructor_PackedSmi_DontOverride, \
432 ArrayNoArgumentConstructor) \
433 TFC(ArrayNoArgumentConstructor_HoleySmi_DontOverride, \
434 ArrayNoArgumentConstructor) \
435 TFC(ArrayNoArgumentConstructor_PackedSmi_DisableAllocationSites, \
436 ArrayNoArgumentConstructor) \
437 TFC(ArrayNoArgumentConstructor_HoleySmi_DisableAllocationSites, \
438 ArrayNoArgumentConstructor) \
439 TFC(ArrayNoArgumentConstructor_Packed_DisableAllocationSites, \
440 ArrayNoArgumentConstructor) \
441 TFC(ArrayNoArgumentConstructor_Holey_DisableAllocationSites, \
442 ArrayNoArgumentConstructor) \
443 TFC(ArrayNoArgumentConstructor_PackedDouble_DisableAllocationSites, \
444 ArrayNoArgumentConstructor) \
445 TFC(ArrayNoArgumentConstructor_HoleyDouble_DisableAllocationSites, \
446 ArrayNoArgumentConstructor) \
447 TFC(ArraySingleArgumentConstructor_PackedSmi_DontOverride, \
448 ArraySingleArgumentConstructor) \
449 TFC(ArraySingleArgumentConstructor_HoleySmi_DontOverride, \
450 ArraySingleArgumentConstructor) \
451 TFC(ArraySingleArgumentConstructor_PackedSmi_DisableAllocationSites, \
452 ArraySingleArgumentConstructor) \
453 TFC(ArraySingleArgumentConstructor_HoleySmi_DisableAllocationSites, \
454 ArraySingleArgumentConstructor) \
455 TFC(ArraySingleArgumentConstructor_Packed_DisableAllocationSites, \
456 ArraySingleArgumentConstructor) \
457 TFC(ArraySingleArgumentConstructor_Holey_DisableAllocationSites, \
458 ArraySingleArgumentConstructor) \
459 TFC(ArraySingleArgumentConstructor_PackedDouble_DisableAllocationSites, \
460 ArraySingleArgumentConstructor) \
461 TFC(ArraySingleArgumentConstructor_HoleyDouble_DisableAllocationSites, \
462 ArraySingleArgumentConstructor) \
463 TFC(ArrayNArgumentsConstructor, ArrayNArgumentsConstructor) \
464 CPP(ArrayConcat, kDontAdaptArgumentsSentinel) \
465 /* ES6 #sec-array.prototype.fill */ \
466 CPP(ArrayPrototypeFill, kDontAdaptArgumentsSentinel) \
467 /* ES7 #sec-array.prototype.includes */ \
468 TFS(ArrayIncludesSmi, NeedsContext::kYes, kElements, kSearchElement, \
469 kLength, kFromIndex) \
470 TFS(ArrayIncludesSmiOrObject, NeedsContext::kYes, kElements, kSearchElement, \
471 kLength, kFromIndex) \
472 TFS(ArrayIncludesPackedDoubles, NeedsContext::kYes, kElements, \
473 kSearchElement, kLength, kFromIndex) \
474 TFS(ArrayIncludesHoleyDoubles, NeedsContext::kYes, kElements, \
475 kSearchElement, kLength, kFromIndex) \
476 TFJ(ArrayIncludes, kDontAdaptArgumentsSentinel) \
477 /* ES6 #sec-array.prototype.indexof */ \
478 TFS(ArrayIndexOfSmi, NeedsContext::kYes, kElements, kSearchElement, kLength, \
479 kFromIndex) \
480 TFS(ArrayIndexOfSmiOrObject, NeedsContext::kYes, kElements, kSearchElement, \
481 kLength, kFromIndex) \
482 TFS(ArrayIndexOfPackedDoubles, NeedsContext::kYes, kElements, \
483 kSearchElement, kLength, kFromIndex) \
484 TFS(ArrayIndexOfHoleyDoubles, NeedsContext::kYes, kElements, kSearchElement, \
485 kLength, kFromIndex) \
486 TFJ(ArrayIndexOf, kDontAdaptArgumentsSentinel) \
487 /* ES6 #sec-array.prototype.pop */ \
488 CPP(ArrayPop, kDontAdaptArgumentsSentinel) \
489 TFJ(ArrayPrototypePop, kDontAdaptArgumentsSentinel) \
490 /* ES6 #sec-array.prototype.push */ \
491 CPP(ArrayPush, kDontAdaptArgumentsSentinel) \
492 TFJ(ArrayPrototypePush, kDontAdaptArgumentsSentinel) \
493 /* ES6 #sec-array.prototype.shift */ \
494 CPP(ArrayShift, kDontAdaptArgumentsSentinel) \
495 /* ES6 #sec-array.prototype.unshift */ \
496 CPP(ArrayUnshift, kDontAdaptArgumentsSentinel) \
497 /* Support for Array.from and other array-copying idioms */ \
498 TFS(CloneFastJSArray, NeedsContext::kYes, kSource) \
499 TFS(CloneFastJSArrayFillingHoles, NeedsContext::kYes, kSource) \
500 TFS(ExtractFastJSArray, NeedsContext::kYes, kSource, kBegin, kCount) \
501 TFS(CreateArrayFromSlowBoilerplate, NeedsContext::kYes, kFeedbackVector, \
502 kSlot, kBoilerplateDescriptor, kFlags) \
503 TFS(CreateObjectFromSlowBoilerplate, NeedsContext::kYes, kFeedbackVector, \
504 kSlot, kBoilerplateDescriptor, kFlags) \
505 TFC(CreateArrayFromSlowBoilerplateHelper, CreateFromSlowBoilerplateHelper) \
506 TFC(CreateObjectFromSlowBoilerplateHelper, CreateFromSlowBoilerplateHelper) \
507 /* ES6 #sec-array.prototype.entries */ \
508 TFJ(ArrayPrototypeEntries, kJSArgcReceiverSlots, kReceiver) \
509 /* ES6 #sec-array.prototype.keys */ \
510 TFJ(ArrayPrototypeKeys, kJSArgcReceiverSlots, kReceiver) \
511 /* ES6 #sec-array.prototype.values */ \
512 TFJ(ArrayPrototypeValues, kJSArgcReceiverSlots, kReceiver) \
513 /* ES6 #sec-%arrayiteratorprototype%.next */ \
514 TFJ(ArrayIteratorPrototypeNext, kJSArgcReceiverSlots, kReceiver) \
515 \
516 /* ArrayBuffer */ \
517 /* ES #sec-arraybuffer-constructor */ \
518 CPP(ArrayBufferConstructor, JSParameterCount(1)) \
519 CPP(ArrayBufferConstructor_DoNotInitialize, kDontAdaptArgumentsSentinel) \
520 CPP(ArrayBufferPrototypeSlice, JSParameterCount(2)) \
521 /* https://tc39.es/proposal-resizablearraybuffer/ */ \
522 CPP(ArrayBufferPrototypeResize, JSParameterCount(1)) \
523 /* https://tc39.es/proposal-arraybuffer-transfer/ */ \
524 CPP(ArrayBufferPrototypeTransfer, kDontAdaptArgumentsSentinel) \
525 CPP(ArrayBufferPrototypeTransferToFixedLength, kDontAdaptArgumentsSentinel) \
526 \
527 /* AsyncFunction */ \
528 TFS(AsyncFunctionEnter, NeedsContext::kYes, kClosure, kReceiver) \
529 TFS(AsyncFunctionReject, NeedsContext::kYes, kAsyncFunctionObject, kReason) \
530 TFS(AsyncFunctionResolve, NeedsContext::kYes, kAsyncFunctionObject, kValue) \
531 TFC(AsyncFunctionLazyDeoptContinuation, AsyncFunctionStackParameter) \
532 TFS(AsyncFunctionAwait, NeedsContext::kYes, kAsyncFunctionObject, kValue) \
533 TFJ(AsyncFunctionAwaitRejectClosure, kJSArgcReceiverSlots + 1, kReceiver, \
534 kSentError) \
535 TFJ(AsyncFunctionAwaitResolveClosure, kJSArgcReceiverSlots + 1, kReceiver, \
536 kSentValue) \
537 \
538 /* BigInt */ \
539 CPP(BigIntConstructor, kDontAdaptArgumentsSentinel) \
540 CPP(BigIntAsUintN, kDontAdaptArgumentsSentinel) \
541 CPP(BigIntAsIntN, kDontAdaptArgumentsSentinel) \
542 CPP(BigIntPrototypeToLocaleString, kDontAdaptArgumentsSentinel) \
543 CPP(BigIntPrototypeToString, kDontAdaptArgumentsSentinel) \
544 CPP(BigIntPrototypeValueOf, kDontAdaptArgumentsSentinel) \
545 \
546 /* CallSite */ \
547 CPP(CallSitePrototypeGetColumnNumber, JSParameterCount(0)) \
548 CPP(CallSitePrototypeGetEnclosingColumnNumber, JSParameterCount(0)) \
549 CPP(CallSitePrototypeGetEnclosingLineNumber, JSParameterCount(0)) \
550 CPP(CallSitePrototypeGetEvalOrigin, JSParameterCount(0)) \
551 CPP(CallSitePrototypeGetFileName, JSParameterCount(0)) \
552 CPP(CallSitePrototypeGetFunction, JSParameterCount(0)) \
553 CPP(CallSitePrototypeGetFunctionName, JSParameterCount(0)) \
554 CPP(CallSitePrototypeGetLineNumber, JSParameterCount(0)) \
555 CPP(CallSitePrototypeGetMethodName, JSParameterCount(0)) \
556 CPP(CallSitePrototypeGetPosition, JSParameterCount(0)) \
557 CPP(CallSitePrototypeGetPromiseIndex, JSParameterCount(0)) \
558 CPP(CallSitePrototypeGetScriptHash, JSParameterCount(0)) \
559 CPP(CallSitePrototypeGetScriptNameOrSourceURL, JSParameterCount(0)) \
560 CPP(CallSitePrototypeGetThis, JSParameterCount(0)) \
561 CPP(CallSitePrototypeGetTypeName, JSParameterCount(0)) \
562 CPP(CallSitePrototypeIsAsync, JSParameterCount(0)) \
563 CPP(CallSitePrototypeIsConstructor, JSParameterCount(0)) \
564 CPP(CallSitePrototypeIsEval, JSParameterCount(0)) \
565 CPP(CallSitePrototypeIsNative, JSParameterCount(0)) \
566 CPP(CallSitePrototypeIsPromiseAll, JSParameterCount(0)) \
567 CPP(CallSitePrototypeIsToplevel, JSParameterCount(0)) \
568 CPP(CallSitePrototypeToString, JSParameterCount(0)) \
569 \
570 /* Console */ \
571 CPP(ConsoleDebug, kDontAdaptArgumentsSentinel) \
572 CPP(ConsoleError, kDontAdaptArgumentsSentinel) \
573 CPP(ConsoleInfo, kDontAdaptArgumentsSentinel) \
574 CPP(ConsoleLog, kDontAdaptArgumentsSentinel) \
575 CPP(ConsoleWarn, kDontAdaptArgumentsSentinel) \
576 CPP(ConsoleDir, kDontAdaptArgumentsSentinel) \
577 CPP(ConsoleDirXml, kDontAdaptArgumentsSentinel) \
578 CPP(ConsoleTable, kDontAdaptArgumentsSentinel) \
579 CPP(ConsoleTrace, kDontAdaptArgumentsSentinel) \
580 CPP(ConsoleGroup, kDontAdaptArgumentsSentinel) \
581 CPP(ConsoleGroupCollapsed, kDontAdaptArgumentsSentinel) \
582 CPP(ConsoleGroupEnd, kDontAdaptArgumentsSentinel) \
583 CPP(ConsoleClear, kDontAdaptArgumentsSentinel) \
584 CPP(ConsoleCount, kDontAdaptArgumentsSentinel) \
585 CPP(ConsoleCountReset, kDontAdaptArgumentsSentinel) \
586 CPP(ConsoleAssert, kDontAdaptArgumentsSentinel) \
587 CPP(ConsoleProfile, kDontAdaptArgumentsSentinel) \
588 CPP(ConsoleProfileEnd, kDontAdaptArgumentsSentinel) \
589 CPP(ConsoleTime, kDontAdaptArgumentsSentinel) \
590 CPP(ConsoleTimeLog, kDontAdaptArgumentsSentinel) \
591 CPP(ConsoleTimeEnd, kDontAdaptArgumentsSentinel) \
592 CPP(ConsoleTimeStamp, kDontAdaptArgumentsSentinel) \
593 CPP(ConsoleContext, kDontAdaptArgumentsSentinel) \
594 \
595 /* DataView */ \
596 /* ES #sec-dataview-constructor */ \
597 CPP(DataViewConstructor, kDontAdaptArgumentsSentinel) \
598 \
599 /* Date */ \
600 /* ES #sec-date-constructor */ \
601 CPP(DateConstructor, kDontAdaptArgumentsSentinel) \
602 /* ES6 #sec-date.prototype.getdate */ \
603 TFJ(DatePrototypeGetDate, kJSArgcReceiverSlots, kReceiver) \
604 /* ES6 #sec-date.prototype.getday */ \
605 TFJ(DatePrototypeGetDay, kJSArgcReceiverSlots, kReceiver) \
606 /* ES6 #sec-date.prototype.getfullyear */ \
607 TFJ(DatePrototypeGetFullYear, kJSArgcReceiverSlots, kReceiver) \
608 /* ES6 #sec-date.prototype.gethours */ \
609 TFJ(DatePrototypeGetHours, kJSArgcReceiverSlots, kReceiver) \
610 /* ES6 #sec-date.prototype.getmilliseconds */ \
611 TFJ(DatePrototypeGetMilliseconds, kJSArgcReceiverSlots, kReceiver) \
612 /* ES6 #sec-date.prototype.getminutes */ \
613 TFJ(DatePrototypeGetMinutes, kJSArgcReceiverSlots, kReceiver) \
614 /* ES6 #sec-date.prototype.getmonth */ \
615 TFJ(DatePrototypeGetMonth, kJSArgcReceiverSlots, kReceiver) \
616 /* ES6 #sec-date.prototype.getseconds */ \
617 TFJ(DatePrototypeGetSeconds, kJSArgcReceiverSlots, kReceiver) \
618 /* ES6 #sec-date.prototype.gettime */ \
619 TFJ(DatePrototypeGetTime, kJSArgcReceiverSlots, kReceiver) \
620 /* ES6 #sec-date.prototype.gettimezoneoffset */ \
621 TFJ(DatePrototypeGetTimezoneOffset, kJSArgcReceiverSlots, kReceiver) \
622 /* ES6 #sec-date.prototype.getutcdate */ \
623 TFJ(DatePrototypeGetUTCDate, kJSArgcReceiverSlots, kReceiver) \
624 /* ES6 #sec-date.prototype.getutcday */ \
625 TFJ(DatePrototypeGetUTCDay, kJSArgcReceiverSlots, kReceiver) \
626 /* ES6 #sec-date.prototype.getutcfullyear */ \
627 TFJ(DatePrototypeGetUTCFullYear, kJSArgcReceiverSlots, kReceiver) \
628 /* ES6 #sec-date.prototype.getutchours */ \
629 TFJ(DatePrototypeGetUTCHours, kJSArgcReceiverSlots, kReceiver) \
630 /* ES6 #sec-date.prototype.getutcmilliseconds */ \
631 TFJ(DatePrototypeGetUTCMilliseconds, kJSArgcReceiverSlots, kReceiver) \
632 /* ES6 #sec-date.prototype.getutcminutes */ \
633 TFJ(DatePrototypeGetUTCMinutes, kJSArgcReceiverSlots, kReceiver) \
634 /* ES6 #sec-date.prototype.getutcmonth */ \
635 TFJ(DatePrototypeGetUTCMonth, kJSArgcReceiverSlots, kReceiver) \
636 /* ES6 #sec-date.prototype.getutcseconds */ \
637 TFJ(DatePrototypeGetUTCSeconds, kJSArgcReceiverSlots, kReceiver) \
638 /* ES6 #sec-date.prototype.valueof */ \
639 TFJ(DatePrototypeValueOf, kJSArgcReceiverSlots, kReceiver) \
640 /* ES6 #sec-date.prototype-@@toprimitive */ \
641 TFJ(DatePrototypeToPrimitive, kJSArgcReceiverSlots + 1, kReceiver, kHint) \
642 CPP(DatePrototypeGetYear, JSParameterCount(0)) \
643 CPP(DatePrototypeSetYear, kDontAdaptArgumentsSentinel) \
644 CPP(DateNow, kDontAdaptArgumentsSentinel) \
645 CPP(DateParse, kDontAdaptArgumentsSentinel) \
646 CPP(DatePrototypeSetDate, kDontAdaptArgumentsSentinel) \
647 CPP(DatePrototypeSetFullYear, kDontAdaptArgumentsSentinel) \
648 CPP(DatePrototypeSetHours, kDontAdaptArgumentsSentinel) \
649 CPP(DatePrototypeSetMilliseconds, kDontAdaptArgumentsSentinel) \
650 CPP(DatePrototypeSetMinutes, kDontAdaptArgumentsSentinel) \
651 CPP(DatePrototypeSetMonth, kDontAdaptArgumentsSentinel) \
652 CPP(DatePrototypeSetSeconds, kDontAdaptArgumentsSentinel) \
653 CPP(DatePrototypeSetTime, kDontAdaptArgumentsSentinel) \
654 CPP(DatePrototypeSetUTCDate, kDontAdaptArgumentsSentinel) \
655 CPP(DatePrototypeSetUTCFullYear, kDontAdaptArgumentsSentinel) \
656 CPP(DatePrototypeSetUTCHours, kDontAdaptArgumentsSentinel) \
657 CPP(DatePrototypeSetUTCMilliseconds, kDontAdaptArgumentsSentinel) \
658 CPP(DatePrototypeSetUTCMinutes, kDontAdaptArgumentsSentinel) \
659 CPP(DatePrototypeSetUTCMonth, kDontAdaptArgumentsSentinel) \
660 CPP(DatePrototypeSetUTCSeconds, kDontAdaptArgumentsSentinel) \
661 CPP(DatePrototypeToDateString, kDontAdaptArgumentsSentinel) \
662 CPP(DatePrototypeToISOString, kDontAdaptArgumentsSentinel) \
663 CPP(DatePrototypeToUTCString, kDontAdaptArgumentsSentinel) \
664 CPP(DatePrototypeToString, kDontAdaptArgumentsSentinel) \
665 CPP(DatePrototypeToTimeString, kDontAdaptArgumentsSentinel) \
666 CPP(DatePrototypeToJson, kDontAdaptArgumentsSentinel) \
667 CPP(DateUTC, kDontAdaptArgumentsSentinel) \
668 \
669 /* DisposabeStack*/ \
670 CPP(DisposableStackConstructor, kDontAdaptArgumentsSentinel) \
671 CPP(DisposableStackPrototypeUse, JSParameterCount(1)) \
672 CPP(DisposableStackPrototypeDispose, JSParameterCount(0)) \
673 CPP(DisposableStackPrototypeGetDisposed, JSParameterCount(0)) \
674 CPP(DisposableStackPrototypeAdopt, JSParameterCount(2)) \
675 CPP(DisposableStackPrototypeDefer, JSParameterCount(1)) \
676 CPP(DisposableStackPrototypeMove, JSParameterCount(0)) \
677 \
678 /* Async DisposabeStack*/ \
679 CPP(AsyncDisposableStackOnFulfilled, JSParameterCount(0)) \
680 CPP(AsyncDisposableStackOnRejected, JSParameterCount(0)) \
681 CPP(AsyncDisposeFromSyncDispose, JSParameterCount(0)) \
682 CPP(AsyncDisposableStackConstructor, kDontAdaptArgumentsSentinel) \
683 CPP(AsyncDisposableStackPrototypeUse, JSParameterCount(1)) \
684 CPP(AsyncDisposableStackPrototypeDisposeAsync, JSParameterCount(0)) \
685 CPP(AsyncDisposableStackPrototypeGetDisposed, JSParameterCount(0)) \
686 CPP(AsyncDisposableStackPrototypeAdopt, JSParameterCount(2)) \
687 CPP(AsyncDisposableStackPrototypeDefer, JSParameterCount(1)) \
688 CPP(AsyncDisposableStackPrototypeMove, JSParameterCount(0)) \
689 \
690 /* Error */ \
691 CPP(ErrorConstructor, kDontAdaptArgumentsSentinel) \
692 CPP(ErrorCaptureStackTrace, kDontAdaptArgumentsSentinel) \
693 CPP(ErrorPrototypeToString, JSParameterCount(0)) \
694 CPP(ErrorIsError, JSParameterCount(1)) \
695 \
696 /* Function */ \
697 CPP(FunctionConstructor, kDontAdaptArgumentsSentinel) \
698 ASM(FunctionPrototypeApply, JSTrampoline) \
699 CPP(FunctionPrototypeBind, kDontAdaptArgumentsSentinel) \
700 IF_WASM(CPP, WebAssemblyFunctionPrototypeBind, kDontAdaptArgumentsSentinel) \
701 ASM(FunctionPrototypeCall, JSTrampoline) \
702 /* ES6 #sec-function.prototype.tostring */ \
703 CPP(FunctionPrototypeToString, kDontAdaptArgumentsSentinel) \
704 \
705 /* Belongs to Objects but is a dependency of GeneratorPrototypeResume */ \
706 TFS(CreateIterResultObject, NeedsContext::kYes, kValue, kDone) \
707 \
708 /* Generator and Async */ \
709 TFS(CreateGeneratorObject, NeedsContext::kYes, kClosure, kReceiver) \
710 CPP(GeneratorFunctionConstructor, kDontAdaptArgumentsSentinel) \
711 /* ES6 #sec-generator.prototype.next */ \
712 TFJ(GeneratorPrototypeNext, kDontAdaptArgumentsSentinel) \
713 /* ES6 #sec-generator.prototype.return */ \
714 TFJ(GeneratorPrototypeReturn, kDontAdaptArgumentsSentinel) \
715 /* ES6 #sec-generator.prototype.throw */ \
716 TFJ(GeneratorPrototypeThrow, kDontAdaptArgumentsSentinel) \
717 CPP(AsyncFunctionConstructor, kDontAdaptArgumentsSentinel) \
718 TFC(SuspendGeneratorBaseline, SuspendGeneratorBaseline) \
719 TFC(ResumeGeneratorBaseline, ResumeGeneratorBaseline) \
720 \
721 /* Iterator Protocol */ \
722 TFC(GetIteratorWithFeedbackLazyDeoptContinuation, GetIteratorStackParameter) \
723 TFC(CallIteratorWithFeedbackLazyDeoptContinuation, SingleParameterOnStack) \
724 \
725 /* Global object */ \
726 CPP(GlobalDecodeURI, kDontAdaptArgumentsSentinel) \
727 CPP(GlobalDecodeURIComponent, kDontAdaptArgumentsSentinel) \
728 CPP(GlobalEncodeURI, kDontAdaptArgumentsSentinel) \
729 CPP(GlobalEncodeURIComponent, kDontAdaptArgumentsSentinel) \
730 CPP(GlobalEscape, kDontAdaptArgumentsSentinel) \
731 CPP(GlobalUnescape, kDontAdaptArgumentsSentinel) \
732 CPP(GlobalEval, kDontAdaptArgumentsSentinel) \
733 /* ES6 #sec-isfinite-number */ \
734 TFJ(GlobalIsFinite, kJSArgcReceiverSlots + 1, kReceiver, kNumber) \
735 /* ES6 #sec-isnan-number */ \
736 TFJ(GlobalIsNaN, kJSArgcReceiverSlots + 1, kReceiver, kNumber) \
737 \
738 /* JSON */ \
739 CPP(JsonParse, kDontAdaptArgumentsSentinel) \
740 CPP(JsonStringify, JSParameterCount(3)) \
741 CPP(JsonRawJson, JSParameterCount(1)) \
742 CPP(JsonIsRawJson, JSParameterCount(1)) \
743 \
744 /* ICs */ \
745 TFH(LoadIC, LoadWithVector) \
746 TFH(LoadIC_Megamorphic, LoadWithVector) \
747 TFH(LoadIC_Noninlined, LoadWithVector) \
748 TFH(LoadICTrampoline, Load) \
749 TFH(LoadICBaseline, LoadBaseline) \
750 TFH(LoadICTrampoline_Megamorphic, Load) \
751 TFH(LoadSuperIC, LoadWithReceiverAndVector) \
752 TFH(LoadSuperICBaseline, LoadWithReceiverBaseline) \
753 TFH(KeyedLoadIC, KeyedLoadWithVector) \
754 TFH(EnumeratedKeyedLoadIC, EnumeratedKeyedLoad) \
755 TFH(KeyedLoadIC_Megamorphic, KeyedLoadWithVector) \
756 TFH(KeyedLoadICTrampoline, KeyedLoad) \
757 TFH(KeyedLoadICBaseline, KeyedLoadBaseline) \
758 TFH(EnumeratedKeyedLoadICBaseline, EnumeratedKeyedLoadBaseline) \
759 TFH(KeyedLoadICTrampoline_Megamorphic, KeyedLoad) \
760 TFH(StoreGlobalIC, StoreGlobalWithVector) \
761 TFH(StoreGlobalICTrampoline, StoreGlobal) \
762 TFH(StoreGlobalICBaseline, StoreGlobalBaseline) \
763 TFH(StoreIC, StoreWithVector) \
764 TFH(StoreIC_Megamorphic, StoreWithVector) \
765 TFH(StoreICTrampoline, Store) \
766 TFH(StoreICTrampoline_Megamorphic, Store) \
767 TFH(StoreICBaseline, StoreBaseline) \
768 TFH(DefineNamedOwnIC, StoreWithVector) \
769 TFH(DefineNamedOwnICTrampoline, Store) \
770 TFH(DefineNamedOwnICBaseline, StoreBaseline) \
771 TFH(KeyedStoreIC, StoreWithVector) \
772 TFH(KeyedStoreICTrampoline, Store) \
773 TFH(KeyedStoreICTrampoline_Megamorphic, Store) \
774 TFH(KeyedStoreICBaseline, StoreBaseline) \
775 TFH(DefineKeyedOwnIC, DefineKeyedOwnWithVector) \
776 TFH(DefineKeyedOwnICTrampoline, DefineKeyedOwn) \
777 TFH(DefineKeyedOwnICBaseline, DefineKeyedOwnBaseline) \
778 TFH(StoreInArrayLiteralIC, StoreWithVector) \
779 TFH(StoreInArrayLiteralICBaseline, StoreBaseline) \
780 TFH(LookupContextTrampoline, LookupTrampoline) \
781 TFH(LookupScriptContextTrampoline, LookupTrampoline) \
782 TFH(LookupContextBaseline, LookupBaseline) \
783 TFH(LookupScriptContextBaseline, LookupBaseline) \
784 TFH(LookupContextInsideTypeofTrampoline, LookupTrampoline) \
785 TFH(LookupScriptContextInsideTypeofTrampoline, LookupTrampoline) \
786 TFH(LookupContextInsideTypeofBaseline, LookupBaseline) \
787 TFH(LookupScriptContextInsideTypeofBaseline, LookupBaseline) \
788 TFH(LoadGlobalIC, LoadGlobalWithVector) \
789 TFH(LoadGlobalICInsideTypeof, LoadGlobalWithVector) \
790 TFH(LoadGlobalICTrampoline, LoadGlobal) \
791 TFH(LoadGlobalICBaseline, LoadGlobalBaseline) \
792 TFH(LoadGlobalICInsideTypeofTrampoline, LoadGlobal) \
793 TFH(LoadGlobalICInsideTypeofBaseline, LoadGlobalBaseline) \
794 TFH(LookupGlobalIC, LookupWithVector) \
795 TFH(LookupGlobalICTrampoline, LookupTrampoline) \
796 TFH(LookupGlobalICBaseline, LookupBaseline) \
797 TFH(LookupGlobalICInsideTypeof, LookupWithVector) \
798 TFH(LookupGlobalICInsideTypeofTrampoline, LookupTrampoline) \
799 TFH(LookupGlobalICInsideTypeofBaseline, LookupBaseline) \
800 TFH(CloneObjectIC, CloneObjectWithVector) \
801 TFH(CloneObjectICBaseline, CloneObjectBaseline) \
802 TFH(CloneObjectIC_Slow, CloneObjectWithVector) \
803 TFH(KeyedHasIC, KeyedHasICWithVector) \
804 TFH(KeyedHasICBaseline, KeyedHasICBaseline) \
805 TFH(KeyedHasIC_Megamorphic, KeyedHasICWithVector) \
806 \
807 /* IterableToList */ \
808 /* ES #sec-iterabletolist */ \
809 TFS(IterableToList, NeedsContext::kYes, kIterable, kIteratorFn) \
810 TFS(IterableToFixedArray, NeedsContext::kYes, kIterable, kIteratorFn) \
811 TFS(IterableToListWithSymbolLookup, NeedsContext::kYes, kIterable) \
812 TFS(IterableToFixedArrayWithSymbolLookupSlow, NeedsContext::kYes, kIterable) \
813 TFS(IterableToListMayPreserveHoles, NeedsContext::kYes, kIterable, \
814 kIteratorFn) \
815 TFS(IterableToListConvertHoles, NeedsContext::kYes, kIterable, kIteratorFn) \
816 IF_WASM(TFS, IterableToFixedArrayForWasm, NeedsContext::kYes, kIterable, \
817 kExpectedLength) \
818 \
819 /* #sec-createstringlistfromiterable */ \
820 TFS(StringListFromIterable, NeedsContext::kYes, kIterable) \
821 \
822 /* Map */ \
823 TFS(FindOrderedHashMapEntry, NeedsContext::kYes, kTable, kKey) \
824 TFJ(MapConstructor, kDontAdaptArgumentsSentinel) \
825 TFJ(MapPrototypeSet, kJSArgcReceiverSlots + 2, kReceiver, kKey, kValue) \
826 TFJ(MapPrototypeDelete, kJSArgcReceiverSlots + 1, kReceiver, kKey) \
827 TFJ(MapPrototypeGet, kJSArgcReceiverSlots + 1, kReceiver, kKey) \
828 TFJ(MapPrototypeHas, kJSArgcReceiverSlots + 1, kReceiver, kKey) \
829 CPP(MapPrototypeClear, JSParameterCount(0)) \
830 /* ES #sec-map.prototype.entries */ \
831 TFJ(MapPrototypeEntries, kJSArgcReceiverSlots, kReceiver) \
832 /* ES #sec-get-map.prototype.size */ \
833 TFJ(MapPrototypeGetSize, kJSArgcReceiverSlots, kReceiver) \
834 /* ES #sec-map.prototype.forEach */ \
835 TFJ(MapPrototypeForEach, kDontAdaptArgumentsSentinel) \
836 /* ES #sec-map.prototype.keys */ \
837 TFJ(MapPrototypeKeys, kJSArgcReceiverSlots, kReceiver) \
838 /* ES #sec-map.prototype.values */ \
839 TFJ(MapPrototypeValues, kJSArgcReceiverSlots, kReceiver) \
840 /* ES #sec-%mapiteratorprototype%.next */ \
841 TFJ(MapIteratorPrototypeNext, kJSArgcReceiverSlots, kReceiver) \
842 TFS(MapIteratorToList, NeedsContext::kYes, kSource) \
843 \
844 /* ES #sec-number-constructor */ \
845 CPP(NumberPrototypeToExponential, kDontAdaptArgumentsSentinel) \
846 CPP(NumberPrototypeToFixed, kDontAdaptArgumentsSentinel) \
847 CPP(NumberPrototypeToLocaleString, kDontAdaptArgumentsSentinel) \
848 CPP(NumberPrototypeToPrecision, kDontAdaptArgumentsSentinel) \
849 TFC(SameValue, CompareNoContext) \
850 TFC(SameValueNumbersOnly, CompareNoContext) \
851 \
852 /* Binary ops with feedback collection */ \
853 TFC(Add_Baseline, BinaryOp_Baseline) \
854 TFC(AddSmi_Baseline, BinarySmiOp_Baseline) \
855 TFC(Subtract_Baseline, BinaryOp_Baseline) \
856 TFC(SubtractSmi_Baseline, BinarySmiOp_Baseline) \
857 TFC(Multiply_Baseline, BinaryOp_Baseline) \
858 TFC(MultiplySmi_Baseline, BinarySmiOp_Baseline) \
859 TFC(Divide_Baseline, BinaryOp_Baseline) \
860 TFC(DivideSmi_Baseline, BinarySmiOp_Baseline) \
861 TFC(Modulus_Baseline, BinaryOp_Baseline) \
862 TFC(ModulusSmi_Baseline, BinarySmiOp_Baseline) \
863 TFC(Exponentiate_Baseline, BinaryOp_Baseline) \
864 TFC(ExponentiateSmi_Baseline, BinarySmiOp_Baseline) \
865 TFC(BitwiseAnd_Baseline, BinaryOp_Baseline) \
866 TFC(BitwiseAndSmi_Baseline, BinarySmiOp_Baseline) \
867 TFC(BitwiseOr_Baseline, BinaryOp_Baseline) \
868 TFC(BitwiseOrSmi_Baseline, BinarySmiOp_Baseline) \
869 TFC(BitwiseXor_Baseline, BinaryOp_Baseline) \
870 TFC(BitwiseXorSmi_Baseline, BinarySmiOp_Baseline) \
871 TFC(ShiftLeft_Baseline, BinaryOp_Baseline) \
872 TFC(ShiftLeftSmi_Baseline, BinarySmiOp_Baseline) \
873 TFC(ShiftRight_Baseline, BinaryOp_Baseline) \
874 TFC(ShiftRightSmi_Baseline, BinarySmiOp_Baseline) \
875 TFC(ShiftRightLogical_Baseline, BinaryOp_Baseline) \
876 TFC(ShiftRightLogicalSmi_Baseline, BinarySmiOp_Baseline) \
877 \
878 TFC(Add_WithFeedback, BinaryOp_WithFeedback) \
879 TFC(Subtract_WithFeedback, BinaryOp_WithFeedback) \
880 TFC(Multiply_WithFeedback, BinaryOp_WithFeedback) \
881 TFC(Divide_WithFeedback, BinaryOp_WithFeedback) \
882 TFC(Modulus_WithFeedback, BinaryOp_WithFeedback) \
883 TFC(Exponentiate_WithFeedback, BinaryOp_WithFeedback) \
884 TFC(BitwiseAnd_WithFeedback, BinaryOp_WithFeedback) \
885 TFC(BitwiseOr_WithFeedback, BinaryOp_WithFeedback) \
886 TFC(BitwiseXor_WithFeedback, BinaryOp_WithFeedback) \
887 TFC(ShiftLeft_WithFeedback, BinaryOp_WithFeedback) \
888 TFC(ShiftRight_WithFeedback, BinaryOp_WithFeedback) \
889 TFC(ShiftRightLogical_WithFeedback, BinaryOp_WithFeedback) \
890 \
891 /* Compare ops with feedback collection */ \
892 TFC(Equal_Baseline, Compare_Baseline) \
893 TFC(StrictEqual_Baseline, Compare_Baseline) \
894 TFC(LessThan_Baseline, Compare_Baseline) \
895 TFC(GreaterThan_Baseline, Compare_Baseline) \
896 TFC(LessThanOrEqual_Baseline, Compare_Baseline) \
897 TFC(GreaterThanOrEqual_Baseline, Compare_Baseline) \
898 \
899 TFC(Equal_WithFeedback, Compare_WithFeedback) \
900 TFC(StrictEqual_WithFeedback, Compare_WithFeedback) \
901 TFC(LessThan_WithFeedback, Compare_WithFeedback) \
902 TFC(GreaterThan_WithFeedback, Compare_WithFeedback) \
903 TFC(LessThanOrEqual_WithFeedback, Compare_WithFeedback) \
904 TFC(GreaterThanOrEqual_WithFeedback, Compare_WithFeedback) \
905 \
906 /* Unary ops with feedback collection */ \
907 TFC(BitwiseNot_Baseline, UnaryOp_Baseline) \
908 TFC(Decrement_Baseline, UnaryOp_Baseline) \
909 TFC(Increment_Baseline, UnaryOp_Baseline) \
910 TFC(Negate_Baseline, UnaryOp_Baseline) \
911 IF_TSA(TSC, TFC, BitwiseNot_WithFeedback, UnaryOp_WithFeedback) \
912 TFC(Decrement_WithFeedback, UnaryOp_WithFeedback) \
913 TFC(Increment_WithFeedback, UnaryOp_WithFeedback) \
914 TFC(Negate_WithFeedback, UnaryOp_WithFeedback) \
915 \
916 /* Object */ \
917 /* ES #sec-object-constructor */ \
918 TFJ(ObjectAssign, kDontAdaptArgumentsSentinel) \
919 /* ES #sec-object.create */ \
920 TFJ(ObjectCreate, kDontAdaptArgumentsSentinel) \
921 CPP(ObjectDefineGetter, JSParameterCount(2)) \
922 CPP(ObjectDefineProperties, JSParameterCount(2)) \
923 CPP(ObjectDefineProperty, JSParameterCount(3)) \
924 CPP(ObjectDefineSetter, JSParameterCount(2)) \
925 TFJ(ObjectEntries, kJSArgcReceiverSlots + 1, kReceiver, kObject) \
926 CPP(ObjectFreeze, kDontAdaptArgumentsSentinel) \
927 TFJ(ObjectGetOwnPropertyDescriptor, kDontAdaptArgumentsSentinel) \
928 CPP(ObjectGetOwnPropertyDescriptors, kDontAdaptArgumentsSentinel) \
929 TFJ(ObjectGetOwnPropertyNames, kJSArgcReceiverSlots + 1, kReceiver, kObject) \
930 CPP(ObjectGetOwnPropertySymbols, kDontAdaptArgumentsSentinel) \
931 TFJ(ObjectHasOwn, kJSArgcReceiverSlots + 2, kReceiver, kObject, kKey) \
932 TFJ(ObjectIs, kJSArgcReceiverSlots + 2, kReceiver, kLeft, kRight) \
933 CPP(ObjectIsFrozen, kDontAdaptArgumentsSentinel) \
934 CPP(ObjectIsSealed, kDontAdaptArgumentsSentinel) \
935 TFJ(ObjectKeys, kJSArgcReceiverSlots + 1, kReceiver, kObject) \
936 CPP(ObjectLookupGetter, JSParameterCount(1)) \
937 CPP(ObjectLookupSetter, JSParameterCount(1)) \
938 /* ES6 #sec-object.prototype.hasownproperty */ \
939 TFJ(ObjectPrototypeHasOwnProperty, kJSArgcReceiverSlots + 1, kReceiver, \
940 kKey) \
941 TFJ(ObjectPrototypeIsPrototypeOf, kJSArgcReceiverSlots + 1, kReceiver, \
942 kValue) \
943 CPP(ObjectPrototypePropertyIsEnumerable, kDontAdaptArgumentsSentinel) \
944 CPP(ObjectPrototypeGetProto, JSParameterCount(0)) \
945 CPP(ObjectPrototypeSetProto, JSParameterCount(1)) \
946 CPP(ObjectSeal, kDontAdaptArgumentsSentinel) \
947 TFS(ObjectToString, NeedsContext::kYes, kReceiver) \
948 TFJ(ObjectValues, kJSArgcReceiverSlots + 1, kReceiver, kObject) \
949 \
950 /* instanceof */ \
951 TFC(OrdinaryHasInstance, Compare) \
952 TFC(InstanceOf, Compare) \
953 TFC(InstanceOf_WithFeedback, Compare_WithFeedback) \
954 TFC(InstanceOf_Baseline, Compare_Baseline) \
955 \
956 /* for-in */ \
957 TFS(ForInEnumerate, NeedsContext::kYes, kReceiver) \
958 TFC(ForInPrepare, ForInPrepare) \
959 TFS(ForInFilter, NeedsContext::kYes, kKey, kObject) \
960 \
961 /* Reflect */ \
962 ASM(ReflectApply, JSTrampoline) \
963 ASM(ReflectConstruct, JSTrampoline) \
964 CPP(ReflectDefineProperty, JSParameterCount(3)) \
965 CPP(ReflectOwnKeys, JSParameterCount(1)) \
966 CPP(ReflectSet, kDontAdaptArgumentsSentinel) \
967 \
968 /* RegExp */ \
969 CPP(RegExpCapture1Getter, JSParameterCount(0)) \
970 CPP(RegExpCapture2Getter, JSParameterCount(0)) \
971 CPP(RegExpCapture3Getter, JSParameterCount(0)) \
972 CPP(RegExpCapture4Getter, JSParameterCount(0)) \
973 CPP(RegExpCapture5Getter, JSParameterCount(0)) \
974 CPP(RegExpCapture6Getter, JSParameterCount(0)) \
975 CPP(RegExpCapture7Getter, JSParameterCount(0)) \
976 CPP(RegExpCapture8Getter, JSParameterCount(0)) \
977 CPP(RegExpCapture9Getter, JSParameterCount(0)) \
978 /* ES #sec-regexp-pattern-flags */ \
979 TFJ(RegExpConstructor, kJSArgcReceiverSlots + 2, kReceiver, kPattern, \
980 kFlags) \
981 CPP(RegExpInputGetter, JSParameterCount(0)) \
982 CPP(RegExpInputSetter, JSParameterCount(1)) \
983 CPP(RegExpLastMatchGetter, JSParameterCount(0)) \
984 CPP(RegExpLastParenGetter, JSParameterCount(0)) \
985 CPP(RegExpLeftContextGetter, JSParameterCount(0)) \
986 /* ES #sec-regexp.prototype.compile */ \
987 TFJ(RegExpPrototypeCompile, kJSArgcReceiverSlots + 2, kReceiver, kPattern, \
988 kFlags) \
989 CPP(RegExpPrototypeToString, kDontAdaptArgumentsSentinel) \
990 CPP(RegExpRightContextGetter, JSParameterCount(0)) \
991 /* ES #sec-regexp.escape */ \
992 CPP(RegExpEscape, JSParameterCount(1)) \
993 \
994 /* RegExp helpers */ \
995 TFS(RegExpExecAtom, NeedsContext::kYes, kRegExp, kString, kLastIndex, \
996 kMatchInfo) \
997 ASM(RegExpInterpreterTrampoline, RegExpTrampoline) \
998 ASM(RegExpExperimentalTrampoline, RegExpTrampoline) \
999 \
1000 /* Set */ \
1001 TFS(FindOrderedHashSetEntry, NeedsContext::kYes, kTable, kKey) \
1002 TFJ(SetConstructor, kDontAdaptArgumentsSentinel) \
1003 TFJ(SetPrototypeHas, kJSArgcReceiverSlots + 1, kReceiver, kKey) \
1004 TFJ(SetPrototypeAdd, kJSArgcReceiverSlots + 1, kReceiver, kKey) \
1005 TFJ(SetPrototypeDelete, kJSArgcReceiverSlots + 1, kReceiver, kKey) \
1006 CPP(SetPrototypeClear, JSParameterCount(0)) \
1007 /* ES #sec-set.prototype.entries */ \
1008 TFJ(SetPrototypeEntries, kJSArgcReceiverSlots, kReceiver) \
1009 /* ES #sec-get-set.prototype.size */ \
1010 TFJ(SetPrototypeGetSize, kJSArgcReceiverSlots, kReceiver) \
1011 /* ES #sec-set.prototype.foreach */ \
1012 TFJ(SetPrototypeForEach, kDontAdaptArgumentsSentinel) \
1013 /* ES #sec-set.prototype.values */ \
1014 TFJ(SetPrototypeValues, kJSArgcReceiverSlots, kReceiver) \
1015 /* ES #sec-%setiteratorprototype%.next */ \
1016 TFJ(SetIteratorPrototypeNext, kJSArgcReceiverSlots, kReceiver) \
1017 TFS(SetOrSetIteratorToList, NeedsContext::kYes, kSource) \
1018 \
1019 /* ShadowRealm */ \
1020 CPP(ShadowRealmConstructor, kDontAdaptArgumentsSentinel) \
1021 TFS(ShadowRealmGetWrappedValue, NeedsContext::kYes, kCreationContext, \
1022 kTargetContext, kValue) \
1023 CPP(ShadowRealmPrototypeEvaluate, JSParameterCount(1)) \
1024 TFJ(ShadowRealmPrototypeImportValue, kJSArgcReceiverSlots + 2, kReceiver, \
1025 kSpecifier, kExportName) \
1026 TFJ(ShadowRealmImportValueFulfilled, kJSArgcReceiverSlots + 1, kReceiver, \
1027 kExports) \
1028 TFJ(ShadowRealmImportValueRejected, kJSArgcReceiverSlots + 1, kReceiver, \
1029 kException) \
1030 \
1031 /* SharedArrayBuffer */ \
1032 CPP(SharedArrayBufferPrototypeGetByteLength, kDontAdaptArgumentsSentinel) \
1033 CPP(SharedArrayBufferPrototypeSlice, JSParameterCount(2)) \
1034 /* https://tc39.es/proposal-resizablearraybuffer/ */ \
1035 CPP(SharedArrayBufferPrototypeGrow, JSParameterCount(1)) \
1036 \
1037 TFJ(AtomicsLoad, kJSArgcReceiverSlots + 2, kReceiver, kArrayOrSharedObject, \
1038 kIndexOrFieldName) \
1039 TFJ(AtomicsStore, kJSArgcReceiverSlots + 3, kReceiver, kArrayOrSharedObject, \
1040 kIndexOrFieldName, kValue) \
1041 TFJ(AtomicsExchange, kJSArgcReceiverSlots + 3, kReceiver, \
1042 kArrayOrSharedObject, kIndexOrFieldName, kValue) \
1043 TFJ(AtomicsCompareExchange, kJSArgcReceiverSlots + 4, kReceiver, \
1044 kArrayOrSharedObject, kIndexOrFieldName, kOldValue, kNewValue) \
1045 TFJ(AtomicsAdd, kJSArgcReceiverSlots + 3, kReceiver, kArray, kIndex, kValue) \
1046 TFJ(AtomicsSub, kJSArgcReceiverSlots + 3, kReceiver, kArray, kIndex, kValue) \
1047 TFJ(AtomicsAnd, kJSArgcReceiverSlots + 3, kReceiver, kArray, kIndex, kValue) \
1048 TFJ(AtomicsOr, kJSArgcReceiverSlots + 3, kReceiver, kArray, kIndex, kValue) \
1049 TFJ(AtomicsXor, kJSArgcReceiverSlots + 3, kReceiver, kArray, kIndex, kValue) \
1050 CPP(AtomicsNotify, JSParameterCount(3)) \
1051 CPP(AtomicsIsLockFree, JSParameterCount(1)) \
1052 CPP(AtomicsWait, JSParameterCount(4)) \
1053 CPP(AtomicsWaitAsync, JSParameterCount(4)) \
1054 CPP(AtomicsPause, kDontAdaptArgumentsSentinel) \
1055 \
1056 /* String */ \
1057 /* ES #sec-string.fromcodepoint */ \
1058 CPP(StringFromCodePoint, kDontAdaptArgumentsSentinel) \
1059 /* ES6 #sec-string.fromcharcode */ \
1060 IF_TSA(TSJ, TFJ, StringFromCharCode, kDontAdaptArgumentsSentinel) \
1061 /* ES6 #sec-string.prototype.lastindexof */ \
1062 CPP(StringPrototypeLastIndexOf, kDontAdaptArgumentsSentinel) \
1063 /* ES #sec-string.prototype.matchAll */ \
1064 TFJ(StringPrototypeMatchAll, kJSArgcReceiverSlots + 1, kReceiver, kRegexp) \
1065 /* ES6 #sec-string.prototype.replace */ \
1066 TFJ(StringPrototypeReplace, kJSArgcReceiverSlots + 2, kReceiver, kSearch, \
1067 kReplace) \
1068 /* ES6 #sec-string.prototype.split */ \
1069 TFJ(StringPrototypeSplit, kDontAdaptArgumentsSentinel) \
1070 /* ES6 #sec-string.raw */ \
1071 CPP(StringRaw, kDontAdaptArgumentsSentinel) \
1072 \
1073 /* Symbol */ \
1074 /* ES #sec-symbol-constructor */ \
1075 CPP(SymbolConstructor, kDontAdaptArgumentsSentinel) \
1076 /* ES6 #sec-symbol.for */ \
1077 CPP(SymbolFor, kDontAdaptArgumentsSentinel) \
1078 /* ES6 #sec-symbol.keyfor */ \
1079 CPP(SymbolKeyFor, kDontAdaptArgumentsSentinel) \
1080 \
1081 /* TypedArray */ \
1082 /* ES #sec-typedarray-constructors */ \
1083 TFJ(TypedArrayBaseConstructor, kJSArgcReceiverSlots, kReceiver) \
1084 TFJ(TypedArrayConstructor, kDontAdaptArgumentsSentinel) \
1085 CPP(TypedArrayPrototypeBuffer, kDontAdaptArgumentsSentinel) \
1086 /* ES6 #sec-get-%typedarray%.prototype.bytelength */ \
1087 TFJ(TypedArrayPrototypeByteLength, kJSArgcReceiverSlots, kReceiver) \
1088 /* ES6 #sec-get-%typedarray%.prototype.byteoffset */ \
1089 TFJ(TypedArrayPrototypeByteOffset, kJSArgcReceiverSlots, kReceiver) \
1090 /* ES6 #sec-get-%typedarray%.prototype.length */ \
1091 TFJ(TypedArrayPrototypeLength, kJSArgcReceiverSlots, kReceiver) \
1092 /* ES6 #sec-%typedarray%.prototype.copywithin */ \
1093 CPP(TypedArrayPrototypeCopyWithin, kDontAdaptArgumentsSentinel) \
1094 /* ES6 #sec-%typedarray%.prototype.fill */ \
1095 CPP(TypedArrayPrototypeFill, kDontAdaptArgumentsSentinel) \
1096 /* ES7 #sec-%typedarray%.prototype.includes */ \
1097 CPP(TypedArrayPrototypeIncludes, kDontAdaptArgumentsSentinel) \
1098 /* ES6 #sec-%typedarray%.prototype.indexof */ \
1099 CPP(TypedArrayPrototypeIndexOf, kDontAdaptArgumentsSentinel) \
1100 /* ES6 #sec-%typedarray%.prototype.lastindexof */ \
1101 CPP(TypedArrayPrototypeLastIndexOf, kDontAdaptArgumentsSentinel) \
1102 /* ES6 #sec-%typedarray%.prototype.reverse */ \
1103 CPP(TypedArrayPrototypeReverse, kDontAdaptArgumentsSentinel) \
1104 /* ES6 #sec-get-%typedarray%.prototype-@@tostringtag */ \
1105 TFJ(TypedArrayPrototypeToStringTag, kJSArgcReceiverSlots, kReceiver) \
1106 /* ES6 %TypedArray%.prototype.map */ \
1107 TFJ(TypedArrayPrototypeMap, kDontAdaptArgumentsSentinel) \
1108 /* proposal-arraybuffer-base64 #sec-uint8array.frombase64 */ \
1109 CPP(Uint8ArrayFromBase64, kDontAdaptArgumentsSentinel) \
1110 /* proposal-arraybuffer-base64 #sec-uint8array.fromhex */ \
1111 CPP(Uint8ArrayFromHex, kDontAdaptArgumentsSentinel) \
1112 /* proposal-arraybuffer-base64 #sec-uint8array.prototype.tobase64 */ \
1113 CPP(Uint8ArrayPrototypeToBase64, kDontAdaptArgumentsSentinel) \
1114 /* proposal-arraybuffer-base64 #sec-uint8array.prototype.tohex */ \
1115 CPP(Uint8ArrayPrototypeToHex, kDontAdaptArgumentsSentinel) \
1116 \
1117 /* Wasm */ \
1118 IF_WASM_DRUMBRAKE(ASM, WasmInterpreterEntry, WasmDummy) \
1119 IF_WASM_DRUMBRAKE(ASM, GenericJSToWasmInterpreterWrapper, WasmDummy) \
1120 IF_WASM_DRUMBRAKE(ASM, WasmInterpreterCWasmEntry, WasmDummy) \
1121 IF_WASM_DRUMBRAKE(ASM, GenericWasmToJSInterpreterWrapper, WasmDummy) \
1122 \
1123 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2r_I32LoadMem8S_s, WasmDummy) \
1124 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2r_I32LoadMem8U_s, WasmDummy) \
1125 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2r_I32LoadMem16S_s, WasmDummy) \
1126 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2r_I32LoadMem16U_s, WasmDummy) \
1127 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2r_I64LoadMem8S_s, WasmDummy) \
1128 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2r_I64LoadMem8U_s, WasmDummy) \
1129 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2r_I64LoadMem16S_s, WasmDummy) \
1130 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2r_I64LoadMem16U_s, WasmDummy) \
1131 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2r_I64LoadMem32S_s, WasmDummy) \
1132 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2r_I64LoadMem32U_s, WasmDummy) \
1133 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2r_I32LoadMem_s, WasmDummy) \
1134 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2r_I64LoadMem_s, WasmDummy) \
1135 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2r_F32LoadMem_s, WasmDummy) \
1136 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2r_F64LoadMem_s, WasmDummy) \
1137 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2s_I32LoadMem8S_s, WasmDummy) \
1138 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2s_I32LoadMem8U_s, WasmDummy) \
1139 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2s_I32LoadMem16S_s, WasmDummy) \
1140 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2s_I32LoadMem16U_s, WasmDummy) \
1141 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2s_I64LoadMem8S_s, WasmDummy) \
1142 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2s_I64LoadMem8U_s, WasmDummy) \
1143 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2s_I64LoadMem16S_s, WasmDummy) \
1144 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2s_I64LoadMem16U_s, WasmDummy) \
1145 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2s_I64LoadMem32S_s, WasmDummy) \
1146 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2s_I64LoadMem32U_s, WasmDummy) \
1147 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2s_I32LoadMem_s, WasmDummy) \
1148 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2s_I64LoadMem_s, WasmDummy) \
1149 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2s_F32LoadMem_s, WasmDummy) \
1150 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2s_F64LoadMem_s, WasmDummy) \
1151 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2r_I32LoadMem8S_s, WasmDummy) \
1152 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2r_I32LoadMem8U_s, WasmDummy) \
1153 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2r_I32LoadMem16S_s, WasmDummy) \
1154 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2r_I32LoadMem16U_s, WasmDummy) \
1155 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2r_I64LoadMem8S_s, WasmDummy) \
1156 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2r_I64LoadMem8U_s, WasmDummy) \
1157 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2r_I64LoadMem16S_s, WasmDummy) \
1158 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2r_I64LoadMem16U_s, WasmDummy) \
1159 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2r_I64LoadMem32S_s, WasmDummy) \
1160 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2r_I64LoadMem32U_s, WasmDummy) \
1161 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2r_I32LoadMem_s, WasmDummy) \
1162 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2r_I64LoadMem_s, WasmDummy) \
1163 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2r_F32LoadMem_s, WasmDummy) \
1164 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2r_F64LoadMem_s, WasmDummy) \
1165 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_I32LoadMem8S_s, WasmDummy) \
1166 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_I32LoadMem8U_s, WasmDummy) \
1167 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_I32LoadMem16S_s, WasmDummy) \
1168 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_I32LoadMem16U_s, WasmDummy) \
1169 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_I64LoadMem8S_s, WasmDummy) \
1170 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_I64LoadMem8U_s, WasmDummy) \
1171 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_I64LoadMem16S_s, WasmDummy) \
1172 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_I64LoadMem16U_s, WasmDummy) \
1173 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_I64LoadMem32S_s, WasmDummy) \
1174 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_I64LoadMem32U_s, WasmDummy) \
1175 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_I32LoadMem_s, WasmDummy) \
1176 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_I64LoadMem_s, WasmDummy) \
1177 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_F32LoadMem_s, WasmDummy) \
1178 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_F64LoadMem_s, WasmDummy) \
1179 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_I32LoadMem8S_LocalSet_s, WasmDummy) \
1180 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_I32LoadMem8U_LocalSet_s, WasmDummy) \
1181 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_I32LoadMem16S_LocalSet_s, \
1182 WasmDummy) \
1183 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_I32LoadMem16U_LocalSet_s, \
1184 WasmDummy) \
1185 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_I64LoadMem8S_LocalSet_s, WasmDummy) \
1186 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_I64LoadMem8U_LocalSet_s, WasmDummy) \
1187 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_I64LoadMem16S_LocalSet_s, \
1188 WasmDummy) \
1189 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_I64LoadMem16U_LocalSet_s, \
1190 WasmDummy) \
1191 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_I64LoadMem32S_LocalSet_s, \
1192 WasmDummy) \
1193 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_I64LoadMem32U_LocalSet_s, \
1194 WasmDummy) \
1195 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_I32LoadMem_LocalSet_s, WasmDummy) \
1196 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_I64LoadMem_LocalSet_s, WasmDummy) \
1197 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_F32LoadMem_LocalSet_s, WasmDummy) \
1198 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_F64LoadMem_LocalSet_s, WasmDummy) \
1199 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2s_I32StoreMem8_s, WasmDummy) \
1200 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2s_I32StoreMem16_s, WasmDummy) \
1201 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2s_I64StoreMem8_s, WasmDummy) \
1202 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2s_I64StoreMem16_s, WasmDummy) \
1203 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2s_I64StoreMem32_s, WasmDummy) \
1204 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2s_I32StoreMem_s, WasmDummy) \
1205 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2s_I64StoreMem_s, WasmDummy) \
1206 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2s_F32StoreMem_s, WasmDummy) \
1207 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2s_F64StoreMem_s, WasmDummy) \
1208 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_I32StoreMem8_s, WasmDummy) \
1209 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_I32StoreMem16_s, WasmDummy) \
1210 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_I64StoreMem8_s, WasmDummy) \
1211 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_I64StoreMem16_s, WasmDummy) \
1212 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_I64StoreMem32_s, WasmDummy) \
1213 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_I32StoreMem_s, WasmDummy) \
1214 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_I64StoreMem_s, WasmDummy) \
1215 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_F32StoreMem_s, WasmDummy) \
1216 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_F64StoreMem_s, WasmDummy) \
1217 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2s_I32LoadStoreMem_s, WasmDummy) \
1218 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2s_I64LoadStoreMem_s, WasmDummy) \
1219 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2s_F32LoadStoreMem_s, WasmDummy) \
1220 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2s_F64LoadStoreMem_s, WasmDummy) \
1221 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_I32LoadStoreMem_s, WasmDummy) \
1222 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_I64LoadStoreMem_s, WasmDummy) \
1223 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_F32LoadStoreMem_s, WasmDummy) \
1224 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_F64LoadStoreMem_s, WasmDummy) \
1225 \
1226 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2r_I32LoadMem8S_l, WasmDummy) \
1227 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2r_I32LoadMem8U_l, WasmDummy) \
1228 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2r_I32LoadMem16S_l, WasmDummy) \
1229 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2r_I32LoadMem16U_l, WasmDummy) \
1230 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2r_I64LoadMem8S_l, WasmDummy) \
1231 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2r_I64LoadMem8U_l, WasmDummy) \
1232 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2r_I64LoadMem16S_l, WasmDummy) \
1233 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2r_I64LoadMem16U_l, WasmDummy) \
1234 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2r_I64LoadMem32S_l, WasmDummy) \
1235 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2r_I64LoadMem32U_l, WasmDummy) \
1236 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2r_I32LoadMem_l, WasmDummy) \
1237 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2r_I64LoadMem_l, WasmDummy) \
1238 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2r_F32LoadMem_l, WasmDummy) \
1239 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2r_F64LoadMem_l, WasmDummy) \
1240 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2s_I32LoadMem8S_l, WasmDummy) \
1241 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2s_I32LoadMem8U_l, WasmDummy) \
1242 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2s_I32LoadMem16S_l, WasmDummy) \
1243 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2s_I32LoadMem16U_l, WasmDummy) \
1244 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2s_I64LoadMem8S_l, WasmDummy) \
1245 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2s_I64LoadMem8U_l, WasmDummy) \
1246 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2s_I64LoadMem16S_l, WasmDummy) \
1247 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2s_I64LoadMem16U_l, WasmDummy) \
1248 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2s_I64LoadMem32S_l, WasmDummy) \
1249 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2s_I64LoadMem32U_l, WasmDummy) \
1250 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2s_I32LoadMem_l, WasmDummy) \
1251 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2s_I64LoadMem_l, WasmDummy) \
1252 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2s_F32LoadMem_l, WasmDummy) \
1253 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2s_F64LoadMem_l, WasmDummy) \
1254 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2r_I32LoadMem8S_l, WasmDummy) \
1255 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2r_I32LoadMem8U_l, WasmDummy) \
1256 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2r_I32LoadMem16S_l, WasmDummy) \
1257 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2r_I32LoadMem16U_l, WasmDummy) \
1258 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2r_I64LoadMem8S_l, WasmDummy) \
1259 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2r_I64LoadMem8U_l, WasmDummy) \
1260 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2r_I64LoadMem16S_l, WasmDummy) \
1261 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2r_I64LoadMem16U_l, WasmDummy) \
1262 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2r_I64LoadMem32S_l, WasmDummy) \
1263 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2r_I64LoadMem32U_l, WasmDummy) \
1264 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2r_I32LoadMem_l, WasmDummy) \
1265 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2r_I64LoadMem_l, WasmDummy) \
1266 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2r_F32LoadMem_l, WasmDummy) \
1267 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2r_F64LoadMem_l, WasmDummy) \
1268 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_I32LoadMem8S_l, WasmDummy) \
1269 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_I32LoadMem8U_l, WasmDummy) \
1270 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_I32LoadMem16S_l, WasmDummy) \
1271 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_I32LoadMem16U_l, WasmDummy) \
1272 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_I64LoadMem8S_l, WasmDummy) \
1273 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_I64LoadMem8U_l, WasmDummy) \
1274 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_I64LoadMem16S_l, WasmDummy) \
1275 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_I64LoadMem16U_l, WasmDummy) \
1276 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_I64LoadMem32S_l, WasmDummy) \
1277 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_I64LoadMem32U_l, WasmDummy) \
1278 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_I32LoadMem_l, WasmDummy) \
1279 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_I64LoadMem_l, WasmDummy) \
1280 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_F32LoadMem_l, WasmDummy) \
1281 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_F64LoadMem_l, WasmDummy) \
1282 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_I32LoadMem8S_LocalSet_l, WasmDummy) \
1283 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_I32LoadMem8U_LocalSet_l, WasmDummy) \
1284 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_I32LoadMem16S_LocalSet_l, \
1285 WasmDummy) \
1286 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_I32LoadMem16U_LocalSet_l, \
1287 WasmDummy) \
1288 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_I64LoadMem8S_LocalSet_l, WasmDummy) \
1289 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_I64LoadMem8U_LocalSet_l, WasmDummy) \
1290 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_I64LoadMem16S_LocalSet_l, \
1291 WasmDummy) \
1292 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_I64LoadMem16U_LocalSet_l, \
1293 WasmDummy) \
1294 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_I64LoadMem32S_LocalSet_l, \
1295 WasmDummy) \
1296 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_I64LoadMem32U_LocalSet_l, \
1297 WasmDummy) \
1298 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_I32LoadMem_LocalSet_l, WasmDummy) \
1299 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_I64LoadMem_LocalSet_l, WasmDummy) \
1300 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_F32LoadMem_LocalSet_l, WasmDummy) \
1301 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_F64LoadMem_LocalSet_l, WasmDummy) \
1302 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2s_I32StoreMem8_l, WasmDummy) \
1303 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2s_I32StoreMem16_l, WasmDummy) \
1304 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2s_I64StoreMem8_l, WasmDummy) \
1305 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2s_I64StoreMem16_l, WasmDummy) \
1306 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2s_I64StoreMem32_l, WasmDummy) \
1307 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2s_I32StoreMem_l, WasmDummy) \
1308 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2s_I64StoreMem_l, WasmDummy) \
1309 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2s_F32StoreMem_l, WasmDummy) \
1310 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2s_F64StoreMem_l, WasmDummy) \
1311 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_I32StoreMem8_l, WasmDummy) \
1312 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_I32StoreMem16_l, WasmDummy) \
1313 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_I64StoreMem8_l, WasmDummy) \
1314 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_I64StoreMem16_l, WasmDummy) \
1315 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_I64StoreMem32_l, WasmDummy) \
1316 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_I32StoreMem_l, WasmDummy) \
1317 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_I64StoreMem_l, WasmDummy) \
1318 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_F32StoreMem_l, WasmDummy) \
1319 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_F64StoreMem_l, WasmDummy) \
1320 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2s_I32LoadStoreMem_l, WasmDummy) \
1321 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2s_I64LoadStoreMem_l, WasmDummy) \
1322 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2s_F32LoadStoreMem_l, WasmDummy) \
1323 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, r2s_F64LoadStoreMem_l, WasmDummy) \
1324 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_I32LoadStoreMem_l, WasmDummy) \
1325 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_I64LoadStoreMem_l, WasmDummy) \
1326 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_F32LoadStoreMem_l, WasmDummy) \
1327 IF_WASM_DRUMBRAKE_INSTR_HANDLER(ASM, s2s_F64LoadStoreMem_l, WasmDummy) \
1328 \
1329 IF_WASM(ASM, JSToWasmWrapperAsm, WasmJSToWasmWrapper) \
1330 IF_WASM(ASM, WasmReturnPromiseOnSuspendAsm, WasmJSToWasmWrapper) \
1331 IF_WASM(ASM, JSToWasmStressSwitchStacksAsm, WasmJSToWasmWrapper) \
1332 IF_WASM(ASM, WasmToJsWrapperAsm, WasmDummy) \
1333 IF_WASM(TFC, WasmToJsWrapperCSA, WasmToJSWrapper) \
1334 IF_WASM(TFC, WasmToJsWrapperInvalidSig, WasmToJSWrapper) \
1335 IF_WASM(ASM, WasmSuspend, WasmSuspend) \
1336 IF_WASM(ASM, WasmResume, JSTrampoline) \
1337 IF_WASM(ASM, WasmReject, JSTrampoline) \
1338 IF_WASM(ASM, WasmTrapHandlerLandingPad, WasmDummy) \
1339 IF_WASM(ASM, WasmCompileLazy, WasmDummy) \
1340 IF_WASM(ASM, WasmLiftoffFrameSetup, WasmDummy) \
1341 IF_WASM(ASM, WasmDebugBreak, WasmDummy) \
1342 IF_WASM(ASM, WasmOnStackReplace, WasmDummy) \
1343 IF_WASM(ASM, WasmHandleStackOverflow, WasmHandleStackOverflow) \
1344 IF_WASM(TFC, WasmFloat32ToNumber, WasmFloat32ToNumber) \
1345 IF_WASM(TFC, WasmFloat64ToNumber, WasmFloat64ToTagged) \
1346 IF_WASM(TFC, WasmFloat64ToString, WasmFloat64ToTagged) \
1347 IF_WASM(TFC, JSToWasmLazyDeoptContinuation, SingleParameterOnStack) \
1348 \
1349 /* WeakMap */ \
1350 TFJ(WeakMapConstructor, kDontAdaptArgumentsSentinel) \
1351 TFS(WeakMapLookupHashIndex, NeedsContext::kYes, kTable, kKey) \
1352 TFJ(WeakMapGet, kJSArgcReceiverSlots + 1, kReceiver, kKey) \
1353 TFJ(WeakMapPrototypeHas, kJSArgcReceiverSlots + 1, kReceiver, kKey) \
1354 TFJ(WeakMapPrototypeSet, kJSArgcReceiverSlots + 2, kReceiver, kKey, kValue) \
1355 TFJ(WeakMapPrototypeDelete, kJSArgcReceiverSlots + 1, kReceiver, kKey) \
1356 \
1357 /* WeakSet */ \
1358 TFJ(WeakSetConstructor, kDontAdaptArgumentsSentinel) \
1359 TFJ(WeakSetPrototypeHas, kJSArgcReceiverSlots + 1, kReceiver, kKey) \
1360 TFJ(WeakSetPrototypeAdd, kJSArgcReceiverSlots + 1, kReceiver, kValue) \
1361 TFJ(WeakSetPrototypeDelete, kJSArgcReceiverSlots + 1, kReceiver, kValue) \
1362 \
1363 /* WeakSet / WeakMap Helpers */ \
1364 TFS(WeakCollectionDelete, NeedsContext::kYes, kCollection, kKey) \
1365 TFS(WeakCollectionSet, NeedsContext::kYes, kCollection, kKey, kValue) \
1366 \
1367 /* JS Structs and friends */ \
1368 CPP(SharedSpaceJSObjectHasInstance, kDontAdaptArgumentsSentinel) \
1369 CPP(SharedStructTypeConstructor, kDontAdaptArgumentsSentinel) \
1370 CPP(SharedStructTypeIsSharedStruct, JSParameterCount(1)) \
1371 CPP(SharedStructConstructor, JSParameterCount(0)) \
1372 CPP(SharedArrayConstructor, JSParameterCount(0)) \
1373 CPP(SharedArrayIsSharedArray, JSParameterCount(1)) \
1374 CPP(AtomicsMutexConstructor, JSParameterCount(0)) \
1375 CPP(AtomicsMutexIsMutex, JSParameterCount(1)) \
1376 CPP(AtomicsMutexLock, JSParameterCount(2)) \
1377 CPP(AtomicsMutexLockAsync, JSParameterCount(2)) \
1378 CPP(AtomicsMutexLockWithTimeout, JSParameterCount(3)) \
1379 CPP(AtomicsMutexTryLock, JSParameterCount(2)) \
1380 CPP(AtomicsMutexAsyncUnlockResolveHandler, JSParameterCount(1)) \
1381 CPP(AtomicsMutexAsyncUnlockRejectHandler, JSParameterCount(1)) \
1382 CPP(AtomicsConditionConstructor, JSParameterCount(0)) \
1383 CPP(AtomicsConditionAcquireLock, JSParameterCount(0)) \
1384 CPP(AtomicsConditionIsCondition, JSParameterCount(1)) \
1385 CPP(AtomicsConditionWait, kDontAdaptArgumentsSentinel) \
1386 CPP(AtomicsConditionNotify, kDontAdaptArgumentsSentinel) \
1387 CPP(AtomicsConditionWaitAsync, kDontAdaptArgumentsSentinel) \
1388 \
1389 /* AsyncGenerator */ \
1390 \
1391 TFS(AsyncGeneratorResolve, NeedsContext::kYes, kGenerator, kValue, kDone) \
1392 TFS(AsyncGeneratorReject, NeedsContext::kYes, kGenerator, kValue) \
1393 TFS(AsyncGeneratorYieldWithAwait, NeedsContext::kYes, kGenerator, kValue) \
1394 TFS(AsyncGeneratorReturn, NeedsContext::kYes, kGenerator, kValue) \
1395 TFS(AsyncGeneratorResumeNext, NeedsContext::kYes, kGenerator) \
1396 \
1397 /* AsyncGeneratorFunction( p1, p2, ... pn, body ) */ \
1398 /* proposal-async-iteration/#sec-asyncgeneratorfunction-constructor */ \
1399 CPP(AsyncGeneratorFunctionConstructor, kDontAdaptArgumentsSentinel) \
1400 /* AsyncGenerator.prototype.next ( value ) */ \
1401 /* proposal-async-iteration/#sec-asyncgenerator-prototype-next */ \
1402 TFJ(AsyncGeneratorPrototypeNext, kDontAdaptArgumentsSentinel) \
1403 /* AsyncGenerator.prototype.return ( value ) */ \
1404 /* proposal-async-iteration/#sec-asyncgenerator-prototype-return */ \
1405 TFJ(AsyncGeneratorPrototypeReturn, kDontAdaptArgumentsSentinel) \
1406 /* AsyncGenerator.prototype.throw ( exception ) */ \
1407 /* proposal-async-iteration/#sec-asyncgenerator-prototype-throw */ \
1408 TFJ(AsyncGeneratorPrototypeThrow, kDontAdaptArgumentsSentinel) \
1409 \
1410 /* Await (proposal-async-iteration/#await), with resume behaviour */ \
1411 /* specific to Async Generators. Internal / Not exposed to JS code. */ \
1412 TFS(AsyncGeneratorAwait, NeedsContext::kYes, kAsyncGeneratorObject, kValue) \
1413 TFJ(AsyncGeneratorAwaitResolveClosure, kJSArgcReceiverSlots + 1, kReceiver, \
1414 kValue) \
1415 TFJ(AsyncGeneratorAwaitRejectClosure, kJSArgcReceiverSlots + 1, kReceiver, \
1416 kValue) \
1417 TFJ(AsyncGeneratorYieldWithAwaitResolveClosure, kJSArgcReceiverSlots + 1, \
1418 kReceiver, kValue) \
1419 TFJ(AsyncGeneratorReturnClosedResolveClosure, kJSArgcReceiverSlots + 1, \
1420 kReceiver, kValue) \
1421 TFJ(AsyncGeneratorReturnClosedRejectClosure, kJSArgcReceiverSlots + 1, \
1422 kReceiver, kValue) \
1423 TFJ(AsyncGeneratorReturnResolveClosure, kJSArgcReceiverSlots + 1, kReceiver, \
1424 kValue) \
1425 \
1426 /* Async-from-Sync Iterator */ \
1427 \
1428 /* %AsyncFromSyncIteratorPrototype% */ \
1429 /* See tc39.github.io/proposal-async-iteration/ */ \
1430 /* #sec-%asyncfromsynciteratorprototype%-object) */ \
1431 TFJ(AsyncFromSyncIteratorPrototypeNext, kDontAdaptArgumentsSentinel) \
1432 /* #sec-%asyncfromsynciteratorprototype%.throw */ \
1433 TFJ(AsyncFromSyncIteratorPrototypeThrow, kDontAdaptArgumentsSentinel) \
1434 /* #sec-%asyncfromsynciteratorprototype%.return */ \
1435 TFJ(AsyncFromSyncIteratorPrototypeReturn, kDontAdaptArgumentsSentinel) \
1436 /* #sec-asyncfromsynciteratorcontinuation */ \
1437 TFJ(AsyncFromSyncIteratorCloseSyncAndRethrow, kJSArgcReceiverSlots + 1, \
1438 kReceiver, kError) \
1439 /* #sec-async-iterator-value-unwrap-functions */ \
1440 TFJ(AsyncIteratorValueUnwrap, kJSArgcReceiverSlots + 1, kReceiver, kValue) \
1441 \
1442 /* CEntry */ \
1443 ASM(CEntry_Return1_ArgvInRegister_NoBuiltinExit, InterpreterCEntry1) \
1444 ASM(CEntry_Return1_ArgvOnStack_BuiltinExit, CEntry1ArgvOnStack) \
1445 ASM(CEntry_Return1_ArgvOnStack_NoBuiltinExit, CEntryDummy) \
1446 ASM(CEntry_Return2_ArgvInRegister_NoBuiltinExit, InterpreterCEntry2) \
1447 ASM(CEntry_Return2_ArgvOnStack_BuiltinExit, CEntryDummy) \
1448 ASM(CEntry_Return2_ArgvOnStack_NoBuiltinExit, CEntryDummy) \
1449 ASM(WasmCEntry, CEntryDummy) \
1450 ASM(DirectCEntry, CEntryDummy) \
1451 \
1452 /* String helpers */ \
1453 TFS(StringAdd_CheckNone, NeedsContext::kYes, kLeft, kRight) \
1454 TFS(SubString, NeedsContext::kYes, kString, kFrom, kTo) \
1455 \
1456 /* Miscellaneous */ \
1457 ASM(DoubleToI, Void) \
1458 TFC(GetProperty, GetProperty) \
1459 TFS(GetPropertyWithReceiver, NeedsContext::kYes, kObject, kKey, kReceiver, \
1460 kOnNonExistent) \
1461 TFS(SetProperty, NeedsContext::kYes, kReceiver, kKey, kValue) \
1462 TFS(CreateDataProperty, NeedsContext::kYes, kReceiver, kKey, kValue) \
1463 TFS(GetOwnPropertyDescriptor, NeedsContext::kYes, kReceiver, kKey) \
1464 ASM(MemCopyUint8Uint8, CCall) \
1465 ASM(MemMove, CCall) \
1466 TFC(FindNonDefaultConstructorOrConstruct, \
1467 FindNonDefaultConstructorOrConstruct) \
1468 TFS(OrdinaryGetOwnPropertyDescriptor, NeedsContext::kYes, kReceiver, kKey) \
1469 IF_SHADOW_STACK(ASM, AdaptShadowStackForDeopt, Void) \
1470 \
1471 /* Trace */ \
1472 CPP(IsTraceCategoryEnabled, JSParameterCount(1)) \
1473 CPP(Trace, JSParameterCount(5)) \
1474 \
1475 /* Weak refs */ \
1476 CPP(FinalizationRegistryUnregister, kDontAdaptArgumentsSentinel) \
1477 \
1478 /* Async modules */ \
1479 TFJ(AsyncModuleEvaluate, kDontAdaptArgumentsSentinel) \
1480 \
1481 /* CallAsyncModule* are spec anonymyous functions */ \
1482 CPP(CallAsyncModuleFulfilled, JSParameterCount(0)) \
1483 CPP(CallAsyncModuleRejected, JSParameterCount(0)) \
1484 \
1485 /* Temporal */ \
1486 /* Temporal #sec-temporal.now.timezone */ \
1487 CPP(TemporalNowTimeZone, kDontAdaptArgumentsSentinel) \
1488 /* Temporal #sec-temporal.now.instant */ \
1489 CPP(TemporalNowInstant, kDontAdaptArgumentsSentinel) \
1490 /* Temporal #sec-temporal.now.plaindatetime */ \
1491 CPP(TemporalNowPlainDateTime, kDontAdaptArgumentsSentinel) \
1492 /* Temporal #sec-temporal.now.plaindatetimeiso */ \
1493 CPP(TemporalNowPlainDateTimeISO, kDontAdaptArgumentsSentinel) \
1494 /* Temporal #sec-temporal.now.zoneddatetime */ \
1495 CPP(TemporalNowZonedDateTime, kDontAdaptArgumentsSentinel) \
1496 /* Temporal #sec-temporal.now.zoneddatetimeiso */ \
1497 CPP(TemporalNowZonedDateTimeISO, kDontAdaptArgumentsSentinel) \
1498 /* Temporal #sec-temporal.now.plaindate */ \
1499 CPP(TemporalNowPlainDate, kDontAdaptArgumentsSentinel) \
1500 /* Temporal #sec-temporal.now.plaindateiso */ \
1501 CPP(TemporalNowPlainDateISO, kDontAdaptArgumentsSentinel) \
1502 /* There are no Temporal.now.plainTime */ \
1503 /* See https://github.com/tc39/proposal-temporal/issues/1540 */ \
1504 /* Temporal #sec-temporal.now.plaintimeiso */ \
1505 CPP(TemporalNowPlainTimeISO, kDontAdaptArgumentsSentinel) \
1506 \
1507 /* Temporal.PlaneDate */ \
1508 /* Temporal #sec-temporal.plaindate */ \
1509 CPP(TemporalPlainDateConstructor, kDontAdaptArgumentsSentinel) \
1510 /* Temporal #sec-temporal.plaindate.from */ \
1511 CPP(TemporalPlainDateFrom, kDontAdaptArgumentsSentinel) \
1512 /* Temporal #sec-temporal.plaindate.compare */ \
1513 CPP(TemporalPlainDateCompare, kDontAdaptArgumentsSentinel) \
1514 /* Temporal #sec-get-temporal.plaindate.prototype.calendar */ \
1515 CPP(TemporalPlainDatePrototypeCalendar, JSParameterCount(0)) \
1516 /* Temporal #sec-get-temporal.plaindate.prototype.year */ \
1517 CPP(TemporalPlainDatePrototypeYear, JSParameterCount(0)) \
1518 /* Temporal #sec-get-temporal.plaindate.prototype.month */ \
1519 CPP(TemporalPlainDatePrototypeMonth, JSParameterCount(0)) \
1520 /* Temporal #sec-get-temporal.plaindate.prototype.monthcode */ \
1521 CPP(TemporalPlainDatePrototypeMonthCode, JSParameterCount(0)) \
1522 /* Temporal #sec-get-temporal.plaindate.prototype.day */ \
1523 CPP(TemporalPlainDatePrototypeDay, JSParameterCount(0)) \
1524 /* Temporal #sec-get-temporal.plaindate.prototype.dayofweek */ \
1525 CPP(TemporalPlainDatePrototypeDayOfWeek, JSParameterCount(0)) \
1526 /* Temporal #sec-get-temporal.plaindate.prototype.dayofyear */ \
1527 CPP(TemporalPlainDatePrototypeDayOfYear, JSParameterCount(0)) \
1528 /* Temporal #sec-get-temporal.plaindate.prototype.weekofyear */ \
1529 CPP(TemporalPlainDatePrototypeWeekOfYear, JSParameterCount(0)) \
1530 /* Temporal #sec-get-temporal.plaindate.prototype.daysinweek */ \
1531 CPP(TemporalPlainDatePrototypeDaysInWeek, JSParameterCount(0)) \
1532 /* Temporal #sec-get-temporal.plaindate.prototype.daysinmonth */ \
1533 CPP(TemporalPlainDatePrototypeDaysInMonth, JSParameterCount(0)) \
1534 /* Temporal #sec-get-temporal.plaindate.prototype.daysinyear */ \
1535 CPP(TemporalPlainDatePrototypeDaysInYear, JSParameterCount(0)) \
1536 /* Temporal #sec-get-temporal.plaindate.prototype.monthsinyear */ \
1537 CPP(TemporalPlainDatePrototypeMonthsInYear, JSParameterCount(0)) \
1538 /* Temporal #sec-get-temporal.plaindate.prototype.inleapyear */ \
1539 CPP(TemporalPlainDatePrototypeInLeapYear, JSParameterCount(0)) \
1540 /* Temporal #sec-temporal.plaindate.prototype.toplainyearmonth */ \
1541 CPP(TemporalPlainDatePrototypeToPlainYearMonth, kDontAdaptArgumentsSentinel) \
1542 /* Temporal #sec-temporal.plaindate.prototype.toplainmonthday */ \
1543 CPP(TemporalPlainDatePrototypeToPlainMonthDay, kDontAdaptArgumentsSentinel) \
1544 /* Temporal #sec-temporal.plaindate.prototype.getisofields */ \
1545 CPP(TemporalPlainDatePrototypeGetISOFields, kDontAdaptArgumentsSentinel) \
1546 /* Temporal #sec-temporal.plaindate.prototype.add */ \
1547 CPP(TemporalPlainDatePrototypeAdd, kDontAdaptArgumentsSentinel) \
1548 /* Temporal #sec-temporal.plaindate.prototype.substract */ \
1549 CPP(TemporalPlainDatePrototypeSubtract, kDontAdaptArgumentsSentinel) \
1550 /* Temporal #sec-temporal.plaindate.prototype.with */ \
1551 CPP(TemporalPlainDatePrototypeWith, kDontAdaptArgumentsSentinel) \
1552 /* Temporal #sec-temporal.plaindate.prototype.withcalendar */ \
1553 CPP(TemporalPlainDatePrototypeWithCalendar, kDontAdaptArgumentsSentinel) \
1554 /* Temporal #sec-temporal.plaindate.prototype.until */ \
1555 CPP(TemporalPlainDatePrototypeUntil, kDontAdaptArgumentsSentinel) \
1556 /* Temporal #sec-temporal.plaindate.prototype.since */ \
1557 CPP(TemporalPlainDatePrototypeSince, kDontAdaptArgumentsSentinel) \
1558 /* Temporal #sec-temporal.plaindate.prototype.equals */ \
1559 CPP(TemporalPlainDatePrototypeEquals, kDontAdaptArgumentsSentinel) \
1560 /* Temporal #sec-temporal.plaindate.prototype.toplaindatetime */ \
1561 CPP(TemporalPlainDatePrototypeToPlainDateTime, kDontAdaptArgumentsSentinel) \
1562 /* Temporal #sec-temporal.plaindate.prototype.tozoneddatetime */ \
1563 CPP(TemporalPlainDatePrototypeToZonedDateTime, kDontAdaptArgumentsSentinel) \
1564 /* Temporal #sec-temporal.plaindate.prototype.tostring */ \
1565 CPP(TemporalPlainDatePrototypeToString, kDontAdaptArgumentsSentinel) \
1566 /* Temporal #sec-temporal.plaindate.prototype.tojson */ \
1567 CPP(TemporalPlainDatePrototypeToJSON, kDontAdaptArgumentsSentinel) \
1568 /* Temporal #sec-temporal.plaindate.prototype.tolocalestring */ \
1569 CPP(TemporalPlainDatePrototypeToLocaleString, kDontAdaptArgumentsSentinel) \
1570 /* Temporal #sec-temporal.plaindate.prototype.valueof */ \
1571 CPP(TemporalPlainDatePrototypeValueOf, kDontAdaptArgumentsSentinel) \
1572 \
1573 /* Temporal.PlaneTime */ \
1574 /* Temporal #sec-temporal.plaintime */ \
1575 CPP(TemporalPlainTimeConstructor, kDontAdaptArgumentsSentinel) \
1576 /* Temporal #sec-temporal.plaintime.from */ \
1577 CPP(TemporalPlainTimeFrom, kDontAdaptArgumentsSentinel) \
1578 /* Temporal #sec-temporal.plaintime.compare */ \
1579 CPP(TemporalPlainTimeCompare, kDontAdaptArgumentsSentinel) \
1580 /* Temporal #sec-get-temporal.plaintime.prototype.calendar */ \
1581 CPP(TemporalPlainTimePrototypeCalendar, JSParameterCount(0)) \
1582 /* Temporal #sec-get-temporal.plaintime.prototype.hour */ \
1583 CPP(TemporalPlainTimePrototypeHour, JSParameterCount(0)) \
1584 /* Temporal #sec-get-temporal.plaintime.prototype.minute */ \
1585 CPP(TemporalPlainTimePrototypeMinute, JSParameterCount(0)) \
1586 /* Temporal #sec-get-temporal.plaintime.prototype.second */ \
1587 CPP(TemporalPlainTimePrototypeSecond, JSParameterCount(0)) \
1588 /* Temporal #sec-get-temporal.plaintime.prototype.millisecond */ \
1589 CPP(TemporalPlainTimePrototypeMillisecond, JSParameterCount(0)) \
1590 /* Temporal #sec-get-temporal.plaintime.prototype.microsecond */ \
1591 CPP(TemporalPlainTimePrototypeMicrosecond, JSParameterCount(0)) \
1592 /* Temporal #sec-get-temporal.plaintime.prototype.nanosecond */ \
1593 CPP(TemporalPlainTimePrototypeNanosecond, JSParameterCount(0)) \
1594 /* Temporal #sec-temporal.plaintime.prototype.add */ \
1595 CPP(TemporalPlainTimePrototypeAdd, kDontAdaptArgumentsSentinel) \
1596 /* Temporal #sec-temporal.plaintime.prototype.subtract */ \
1597 CPP(TemporalPlainTimePrototypeSubtract, kDontAdaptArgumentsSentinel) \
1598 /* Temporal #sec-temporal.plaintime.prototype.with */ \
1599 CPP(TemporalPlainTimePrototypeWith, kDontAdaptArgumentsSentinel) \
1600 /* Temporal #sec-temporal.plaintime.prototype.until */ \
1601 CPP(TemporalPlainTimePrototypeUntil, kDontAdaptArgumentsSentinel) \
1602 /* Temporal #sec-temporal.plaintime.prototype.since */ \
1603 CPP(TemporalPlainTimePrototypeSince, kDontAdaptArgumentsSentinel) \
1604 /* Temporal #sec-temporal.plaintime.prototype.round */ \
1605 CPP(TemporalPlainTimePrototypeRound, kDontAdaptArgumentsSentinel) \
1606 /* Temporal #sec-temporal.plaintime.prototype.equals */ \
1607 CPP(TemporalPlainTimePrototypeEquals, kDontAdaptArgumentsSentinel) \
1608 /* Temporal #sec-temporal.plaintime.prototype.toplaindatetime */ \
1609 CPP(TemporalPlainTimePrototypeToPlainDateTime, kDontAdaptArgumentsSentinel) \
1610 /* Temporal #sec-temporal.plaintime.prototype.tozoneddatetime */ \
1611 CPP(TemporalPlainTimePrototypeToZonedDateTime, kDontAdaptArgumentsSentinel) \
1612 /* Temporal #sec-temporal.plaintime.prototype.getisofields */ \
1613 CPP(TemporalPlainTimePrototypeGetISOFields, kDontAdaptArgumentsSentinel) \
1614 /* Temporal #sec-temporal.plaintime.prototype.tostring */ \
1615 CPP(TemporalPlainTimePrototypeToString, kDontAdaptArgumentsSentinel) \
1616 /* Temporal #sec-temporal.plaindtimeprototype.tojson */ \
1617 CPP(TemporalPlainTimePrototypeToJSON, kDontAdaptArgumentsSentinel) \
1618 /* Temporal #sec-temporal.plaintime.prototype.tolocalestring */ \
1619 CPP(TemporalPlainTimePrototypeToLocaleString, kDontAdaptArgumentsSentinel) \
1620 /* Temporal #sec-temporal.plaintime.prototype.valueof */ \
1621 CPP(TemporalPlainTimePrototypeValueOf, kDontAdaptArgumentsSentinel) \
1622 \
1623 /* Temporal.PlaneDateTime */ \
1624 /* Temporal #sec-temporal.plaindatetime */ \
1625 CPP(TemporalPlainDateTimeConstructor, kDontAdaptArgumentsSentinel) \
1626 /* Temporal #sec-temporal.plaindatetime.from */ \
1627 CPP(TemporalPlainDateTimeFrom, kDontAdaptArgumentsSentinel) \
1628 /* Temporal #sec-temporal.plaindatetime.compare */ \
1629 CPP(TemporalPlainDateTimeCompare, kDontAdaptArgumentsSentinel) \
1630 /* Temporal #sec-get-temporal.plaindatetime.prototype.calendar */ \
1631 CPP(TemporalPlainDateTimePrototypeCalendar, JSParameterCount(0)) \
1632 /* Temporal #sec-get-temporal.plaindatetime.prototype.year */ \
1633 CPP(TemporalPlainDateTimePrototypeYear, JSParameterCount(0)) \
1634 /* Temporal #sec-get-temporal.plaindatetime.prototype.month */ \
1635 CPP(TemporalPlainDateTimePrototypeMonth, JSParameterCount(0)) \
1636 /* Temporal #sec-get-temporal.plaindatetime.prototype.monthcode */ \
1637 CPP(TemporalPlainDateTimePrototypeMonthCode, JSParameterCount(0)) \
1638 /* Temporal #sec-get-temporal.plaindatetime.prototype.day */ \
1639 CPP(TemporalPlainDateTimePrototypeDay, JSParameterCount(0)) \
1640 /* Temporal #sec-get-temporal.plaindatetime.prototype.hour */ \
1641 CPP(TemporalPlainDateTimePrototypeHour, JSParameterCount(0)) \
1642 /* Temporal #sec-get-temporal.plaindatetime.prototype.minute */ \
1643 CPP(TemporalPlainDateTimePrototypeMinute, JSParameterCount(0)) \
1644 /* Temporal #sec-get-temporal.plaindatetime.prototype.second */ \
1645 CPP(TemporalPlainDateTimePrototypeSecond, JSParameterCount(0)) \
1646 /* Temporal #sec-get-temporal.plaindatetime.prototype.millisecond */ \
1647 CPP(TemporalPlainDateTimePrototypeMillisecond, JSParameterCount(0)) \
1648 /* Temporal #sec-get-temporal.plaindatetime.prototype.microsecond */ \
1649 CPP(TemporalPlainDateTimePrototypeMicrosecond, JSParameterCount(0)) \
1650 /* Temporal #sec-get-temporal.plaindatetime.prototype.nanosecond */ \
1651 CPP(TemporalPlainDateTimePrototypeNanosecond, JSParameterCount(0)) \
1652 /* Temporal #sec-get-temporal.plaindatetime.prototype.dayofweek */ \
1653 CPP(TemporalPlainDateTimePrototypeDayOfWeek, JSParameterCount(0)) \
1654 /* Temporal #sec-get-temporal.plaindatetime.prototype.dayofyear */ \
1655 CPP(TemporalPlainDateTimePrototypeDayOfYear, JSParameterCount(0)) \
1656 /* Temporal #sec-get-temporal.plaindatetime.prototype.weekofyear */ \
1657 CPP(TemporalPlainDateTimePrototypeWeekOfYear, JSParameterCount(0)) \
1658 /* Temporal #sec-get-temporal.plaindatetime.prototype.daysinweek */ \
1659 CPP(TemporalPlainDateTimePrototypeDaysInWeek, JSParameterCount(0)) \
1660 /* Temporal #sec-get-temporal.plaindatetime.prototype.daysinmonth */ \
1661 CPP(TemporalPlainDateTimePrototypeDaysInMonth, JSParameterCount(0)) \
1662 /* Temporal #sec-get-temporal.plaindatetime.prototype.daysinyear */ \
1663 CPP(TemporalPlainDateTimePrototypeDaysInYear, JSParameterCount(0)) \
1664 /* Temporal #sec-get-temporal.plaindatetime.prototype.monthsinyear */ \
1665 CPP(TemporalPlainDateTimePrototypeMonthsInYear, JSParameterCount(0)) \
1666 /* Temporal #sec-get-temporal.plaindatetime.prototype.inleapyear */ \
1667 CPP(TemporalPlainDateTimePrototypeInLeapYear, JSParameterCount(0)) \
1668 /* Temporal #sec-temporal.plaindatetime.prototype.with */ \
1669 CPP(TemporalPlainDateTimePrototypeWith, kDontAdaptArgumentsSentinel) \
1670 /* Temporal #sec-temporal.plaindatetime.prototype.withplainTime */ \
1671 CPP(TemporalPlainDateTimePrototypeWithPlainTime, \
1672 kDontAdaptArgumentsSentinel) \
1673 /* Temporal #sec-temporal.plaindatetime.prototype.withplainDate */ \
1674 CPP(TemporalPlainDateTimePrototypeWithPlainDate, \
1675 kDontAdaptArgumentsSentinel) \
1676 /* Temporal #sec-temporal.plaindatetime.prototype.withcalendar */ \
1677 CPP(TemporalPlainDateTimePrototypeWithCalendar, kDontAdaptArgumentsSentinel) \
1678 /* Temporal #sec-temporal.plaindatetime.prototype.add */ \
1679 CPP(TemporalPlainDateTimePrototypeAdd, kDontAdaptArgumentsSentinel) \
1680 /* Temporal #sec-temporal.plaindatetime.prototype.subtract */ \
1681 CPP(TemporalPlainDateTimePrototypeSubtract, kDontAdaptArgumentsSentinel) \
1682 /* Temporal #sec-temporal.plaindatetime.prototype.until */ \
1683 CPP(TemporalPlainDateTimePrototypeUntil, kDontAdaptArgumentsSentinel) \
1684 /* Temporal #sec-temporal.plaindatetime.prototype.since */ \
1685 CPP(TemporalPlainDateTimePrototypeSince, kDontAdaptArgumentsSentinel) \
1686 /* Temporal #sec-temporal.plaindatetime.prototype.round */ \
1687 CPP(TemporalPlainDateTimePrototypeRound, kDontAdaptArgumentsSentinel) \
1688 /* Temporal #sec-temporal.plaindatetime.prototype.equals */ \
1689 CPP(TemporalPlainDateTimePrototypeEquals, kDontAdaptArgumentsSentinel) \
1690 /* Temporal #sec-temporal.plaindatetime.prototype.tostring */ \
1691 CPP(TemporalPlainDateTimePrototypeToString, kDontAdaptArgumentsSentinel) \
1692 /* Temporal #sec-temporal.plainddatetimeprototype.tojson */ \
1693 CPP(TemporalPlainDateTimePrototypeToJSON, kDontAdaptArgumentsSentinel) \
1694 /* Temporal #sec-temporal.plaindatetime.prototype.tolocalestring */ \
1695 CPP(TemporalPlainDateTimePrototypeToLocaleString, \
1696 kDontAdaptArgumentsSentinel) \
1697 /* Temporal #sec-temporal.plaindatetime.prototype.valueof */ \
1698 CPP(TemporalPlainDateTimePrototypeValueOf, kDontAdaptArgumentsSentinel) \
1699 /* Temporal #sec-temporal.plaindatetime.prototype.tozoneddatetime */ \
1700 CPP(TemporalPlainDateTimePrototypeToZonedDateTime, \
1701 kDontAdaptArgumentsSentinel) \
1702 /* Temporal #sec-temporal.plaindatetime.prototype.toplaindate */ \
1703 CPP(TemporalPlainDateTimePrototypeToPlainDate, kDontAdaptArgumentsSentinel) \
1704 /* Temporal #sec-temporal.plaindatetime.prototype.toplainyearmonth */ \
1705 CPP(TemporalPlainDateTimePrototypeToPlainYearMonth, \
1706 kDontAdaptArgumentsSentinel) \
1707 /* Temporal #sec-temporal.plaindatetime.prototype.toplainmonthday */ \
1708 CPP(TemporalPlainDateTimePrototypeToPlainMonthDay, \
1709 kDontAdaptArgumentsSentinel) \
1710 /* Temporal #sec-temporal.plaindatetime.prototype.toplaintime */ \
1711 CPP(TemporalPlainDateTimePrototypeToPlainTime, kDontAdaptArgumentsSentinel) \
1712 /* Temporal #sec-temporal.plaindatetime.prototype.getisofields */ \
1713 CPP(TemporalPlainDateTimePrototypeGetISOFields, kDontAdaptArgumentsSentinel) \
1714 \
1715 /* Temporal.ZonedDateTime */ \
1716 /* Temporal #sec-temporal.zoneddatetime */ \
1717 CPP(TemporalZonedDateTimeConstructor, kDontAdaptArgumentsSentinel) \
1718 /* Temporal #sec-temporal.zoneddatetime.from */ \
1719 CPP(TemporalZonedDateTimeFrom, kDontAdaptArgumentsSentinel) \
1720 /* Temporal #sec-temporal.zoneddatetime.compare */ \
1721 CPP(TemporalZonedDateTimeCompare, kDontAdaptArgumentsSentinel) \
1722 /* Temporal #sec-get-temporal.zoneddatetime.prototype.calendar */ \
1723 CPP(TemporalZonedDateTimePrototypeCalendar, JSParameterCount(0)) \
1724 /* Temporal #sec-get-temporal.zoneddatetime.prototype.timezone */ \
1725 CPP(TemporalZonedDateTimePrototypeTimeZone, JSParameterCount(0)) \
1726 /* Temporal #sec-get-temporal.zoneddatetime.prototype.year */ \
1727 CPP(TemporalZonedDateTimePrototypeYear, JSParameterCount(0)) \
1728 /* Temporal #sec-get-temporal.zoneddatetime.prototype.month */ \
1729 CPP(TemporalZonedDateTimePrototypeMonth, JSParameterCount(0)) \
1730 /* Temporal #sec-get-temporal.zoneddatetime.prototype.monthcode */ \
1731 CPP(TemporalZonedDateTimePrototypeMonthCode, JSParameterCount(0)) \
1732 /* Temporal #sec-get-temporal.zoneddatetime.prototype.day */ \
1733 CPP(TemporalZonedDateTimePrototypeDay, JSParameterCount(0)) \
1734 /* Temporal #sec-get-temporal.zoneddatetime.prototype.hour */ \
1735 CPP(TemporalZonedDateTimePrototypeHour, JSParameterCount(0)) \
1736 /* Temporal #sec-get-temporal.zoneddatetime.prototype.minute */ \
1737 CPP(TemporalZonedDateTimePrototypeMinute, JSParameterCount(0)) \
1738 /* Temporal #sec-get-temporal.zoneddatetime.prototype.second */ \
1739 CPP(TemporalZonedDateTimePrototypeSecond, JSParameterCount(0)) \
1740 /* Temporal #sec-get-temporal.zoneddatetime.prototype.millisecond */ \
1741 CPP(TemporalZonedDateTimePrototypeMillisecond, JSParameterCount(0)) \
1742 /* Temporal #sec-get-temporal.zoneddatetime.prototype.microsecond */ \
1743 CPP(TemporalZonedDateTimePrototypeMicrosecond, JSParameterCount(0)) \
1744 /* Temporal #sec-get-temporal.zoneddatetime.prototype.nanosecond */ \
1745 CPP(TemporalZonedDateTimePrototypeNanosecond, JSParameterCount(0)) \
1746 /* Temporal #sec-get-temporal.zoneddatetime.prototype.epochsecond */ \
1747 CPP(TemporalZonedDateTimePrototypeEpochSeconds, JSParameterCount(0)) \
1748 /* Temporal #sec-get-temporal.zoneddatetime.prototype.epochmilliseconds */ \
1749 CPP(TemporalZonedDateTimePrototypeEpochMilliseconds, JSParameterCount(0)) \
1750 /* Temporal #sec-get-temporal.zoneddatetime.prototype.epochmicroseconds */ \
1751 CPP(TemporalZonedDateTimePrototypeEpochMicroseconds, JSParameterCount(0)) \
1752 /* Temporal #sec-get-temporal.zoneddatetime.prototype.epochnanoseconds */ \
1753 CPP(TemporalZonedDateTimePrototypeEpochNanoseconds, JSParameterCount(0)) \
1754 /* Temporal #sec-get-temporal.zoneddatetime.prototype.dayofweek */ \
1755 CPP(TemporalZonedDateTimePrototypeDayOfWeek, JSParameterCount(0)) \
1756 /* Temporal #sec-get-temporal.zoneddatetime.prototype.dayofyear */ \
1757 CPP(TemporalZonedDateTimePrototypeDayOfYear, JSParameterCount(0)) \
1758 /* Temporal #sec-get-temporal.zoneddatetime.prototype.weekofyear */ \
1759 CPP(TemporalZonedDateTimePrototypeWeekOfYear, JSParameterCount(0)) \
1760 /* Temporal #sec-get-temporal.zoneddatetime.prototype.hoursinday */ \
1761 CPP(TemporalZonedDateTimePrototypeHoursInDay, JSParameterCount(0)) \
1762 /* Temporal #sec-get-temporal.zoneddatetime.prototype.daysinweek */ \
1763 CPP(TemporalZonedDateTimePrototypeDaysInWeek, JSParameterCount(0)) \
1764 /* Temporal #sec-get-temporal.zoneddatetime.prototype.daysinmonth */ \
1765 CPP(TemporalZonedDateTimePrototypeDaysInMonth, JSParameterCount(0)) \
1766 /* Temporal #sec-get-temporal.zoneddatetime.prototype.daysinyear */ \
1767 CPP(TemporalZonedDateTimePrototypeDaysInYear, JSParameterCount(0)) \
1768 /* Temporal #sec-get-temporal.zoneddatetime.prototype.monthsinyear */ \
1769 CPP(TemporalZonedDateTimePrototypeMonthsInYear, JSParameterCount(0)) \
1770 /* Temporal #sec-get-temporal.zoneddatetime.prototype.inleapyear */ \
1771 CPP(TemporalZonedDateTimePrototypeInLeapYear, JSParameterCount(0)) \
1772 /* Temporal #sec-get-temporal.zoneddatetime.prototype.offsetnanoseconds */ \
1773 CPP(TemporalZonedDateTimePrototypeOffsetNanoseconds, JSParameterCount(0)) \
1774 /* Temporal #sec-get-temporal.zoneddatetime.prototype.offset */ \
1775 CPP(TemporalZonedDateTimePrototypeOffset, JSParameterCount(0)) \
1776 /* Temporal #sec-temporal.zoneddatetime.prototype.with */ \
1777 CPP(TemporalZonedDateTimePrototypeWith, kDontAdaptArgumentsSentinel) \
1778 /* Temporal #sec-temporal.zoneddatetime.prototype.withplaintime */ \
1779 CPP(TemporalZonedDateTimePrototypeWithPlainTime, \
1780 kDontAdaptArgumentsSentinel) \
1781 /* Temporal #sec-temporal.zoneddatetime.prototype.withplaindate */ \
1782 CPP(TemporalZonedDateTimePrototypeWithPlainDate, \
1783 kDontAdaptArgumentsSentinel) \
1784 /* Temporal #sec-temporal.zoneddatetime.prototype.withtimezone */ \
1785 CPP(TemporalZonedDateTimePrototypeWithTimeZone, kDontAdaptArgumentsSentinel) \
1786 /* Temporal #sec-temporal.zoneddatetime.prototype.withcalendar */ \
1787 CPP(TemporalZonedDateTimePrototypeWithCalendar, kDontAdaptArgumentsSentinel) \
1788 /* Temporal #sec-temporal.zoneddatetime.prototype.add */ \
1789 CPP(TemporalZonedDateTimePrototypeAdd, kDontAdaptArgumentsSentinel) \
1790 /* Temporal #sec-temporal.zoneddatetime.prototype.subtract */ \
1791 CPP(TemporalZonedDateTimePrototypeSubtract, kDontAdaptArgumentsSentinel) \
1792 /* Temporal #sec-temporal.zoneddatetime.prototype.until */ \
1793 CPP(TemporalZonedDateTimePrototypeUntil, kDontAdaptArgumentsSentinel) \
1794 /* Temporal #sec-temporal.zoneddatetime.prototype.since */ \
1795 CPP(TemporalZonedDateTimePrototypeSince, kDontAdaptArgumentsSentinel) \
1796 /* Temporal #sec-temporal.zoneddatetime.prototype.round */ \
1797 CPP(TemporalZonedDateTimePrototypeRound, kDontAdaptArgumentsSentinel) \
1798 /* Temporal #sec-temporal.zoneddatetime.prototype.equals */ \
1799 CPP(TemporalZonedDateTimePrototypeEquals, kDontAdaptArgumentsSentinel) \
1800 /* Temporal #sec-temporal.zoneddatetime.prototype.tostring */ \
1801 CPP(TemporalZonedDateTimePrototypeToString, kDontAdaptArgumentsSentinel) \
1802 /* Temporal #sec-temporal.zonedddatetimeprototype.tojson */ \
1803 CPP(TemporalZonedDateTimePrototypeToJSON, kDontAdaptArgumentsSentinel) \
1804 /* Temporal #sec-temporal.zoneddatetime.prototype.tolocalestring */ \
1805 CPP(TemporalZonedDateTimePrototypeToLocaleString, \
1806 kDontAdaptArgumentsSentinel) \
1807 /* Temporal #sec-temporal.zoneddatetime.prototype.valueof */ \
1808 CPP(TemporalZonedDateTimePrototypeValueOf, kDontAdaptArgumentsSentinel) \
1809 /* Temporal #sec-temporal.zoneddatetime.prototype.startofday */ \
1810 CPP(TemporalZonedDateTimePrototypeStartOfDay, kDontAdaptArgumentsSentinel) \
1811 /* Temporal #sec-temporal.zoneddatetime.prototype.toinstant */ \
1812 CPP(TemporalZonedDateTimePrototypeToInstant, kDontAdaptArgumentsSentinel) \
1813 /* Temporal #sec-temporal.zoneddatetime.prototype.toplaindate */ \
1814 CPP(TemporalZonedDateTimePrototypeToPlainDate, kDontAdaptArgumentsSentinel) \
1815 /* Temporal #sec-temporal.zoneddatetime.prototype.toplaintime */ \
1816 CPP(TemporalZonedDateTimePrototypeToPlainTime, kDontAdaptArgumentsSentinel) \
1817 /* Temporal #sec-temporal.zoneddatetime.prototype.toplaindatetime */ \
1818 CPP(TemporalZonedDateTimePrototypeToPlainDateTime, \
1819 kDontAdaptArgumentsSentinel) \
1820 /* Temporal #sec-temporal.zoneddatetime.prototype.toplainyearmonth */ \
1821 CPP(TemporalZonedDateTimePrototypeToPlainYearMonth, \
1822 kDontAdaptArgumentsSentinel) \
1823 /* Temporal #sec-temporal.zoneddatetime.prototype.toplainmonthday */ \
1824 CPP(TemporalZonedDateTimePrototypeToPlainMonthDay, \
1825 kDontAdaptArgumentsSentinel) \
1826 /* Temporal #sec-temporal.zoneddatetime.prototype.getisofields */ \
1827 CPP(TemporalZonedDateTimePrototypeGetISOFields, kDontAdaptArgumentsSentinel) \
1828 \
1829 /* Temporal.Duration */ \
1830 /* Temporal #sec-temporal.duration */ \
1831 CPP(TemporalDurationConstructor, kDontAdaptArgumentsSentinel) \
1832 /* Temporal #sec-temporal.duration.from */ \
1833 CPP(TemporalDurationFrom, kDontAdaptArgumentsSentinel) \
1834 /* Temporal #sec-temporal.duration.compare */ \
1835 CPP(TemporalDurationCompare, kDontAdaptArgumentsSentinel) \
1836 /* Temporal #sec-get-temporal.duration.prototype.years */ \
1837 CPP(TemporalDurationPrototypeYears, JSParameterCount(0)) \
1838 /* Temporal #sec-get-temporal.duration.prototype.months */ \
1839 CPP(TemporalDurationPrototypeMonths, JSParameterCount(0)) \
1840 /* Temporal #sec-get-temporal.duration.prototype.weeks */ \
1841 CPP(TemporalDurationPrototypeWeeks, JSParameterCount(0)) \
1842 /* Temporal #sec-get-temporal.duration.prototype.days */ \
1843 CPP(TemporalDurationPrototypeDays, JSParameterCount(0)) \
1844 /* Temporal #sec-get-temporal.duration.prototype.hours */ \
1845 CPP(TemporalDurationPrototypeHours, JSParameterCount(0)) \
1846 /* Temporal #sec-get-temporal.duration.prototype.minutes */ \
1847 CPP(TemporalDurationPrototypeMinutes, JSParameterCount(0)) \
1848 /* Temporal #sec-get-temporal.duration.prototype.seconds */ \
1849 CPP(TemporalDurationPrototypeSeconds, JSParameterCount(0)) \
1850 /* Temporal #sec-get-temporal.duration.prototype.milliseconds */ \
1851 CPP(TemporalDurationPrototypeMilliseconds, JSParameterCount(0)) \
1852 /* Temporal #sec-get-temporal.duration.prototype.microseconds */ \
1853 CPP(TemporalDurationPrototypeMicroseconds, JSParameterCount(0)) \
1854 /* Temporal #sec-get-temporal.duration.prototype.nanoseconds */ \
1855 CPP(TemporalDurationPrototypeNanoseconds, JSParameterCount(0)) \
1856 /* Temporal #sec-get-temporal.duration.prototype.sign */ \
1857 CPP(TemporalDurationPrototypeSign, JSParameterCount(0)) \
1858 /* Temporal #sec-get-temporal.duration.prototype.blank */ \
1859 CPP(TemporalDurationPrototypeBlank, JSParameterCount(0)) \
1860 /* Temporal #sec-temporal.duration.prototype.with */ \
1861 CPP(TemporalDurationPrototypeWith, kDontAdaptArgumentsSentinel) \
1862 /* Temporal #sec-temporal.duration.prototype.negated */ \
1863 CPP(TemporalDurationPrototypeNegated, kDontAdaptArgumentsSentinel) \
1864 /* Temporal #sec-temporal.duration.prototype.abs */ \
1865 CPP(TemporalDurationPrototypeAbs, kDontAdaptArgumentsSentinel) \
1866 /* Temporal #sec-temporal.duration.prototype.add */ \
1867 CPP(TemporalDurationPrototypeAdd, kDontAdaptArgumentsSentinel) \
1868 /* Temporal #sec-temporal.duration.prototype.subtract */ \
1869 CPP(TemporalDurationPrototypeSubtract, kDontAdaptArgumentsSentinel) \
1870 /* Temporal #sec-temporal.duration.prototype.round */ \
1871 CPP(TemporalDurationPrototypeRound, kDontAdaptArgumentsSentinel) \
1872 /* Temporal #sec-temporal.duration.prototype.total */ \
1873 CPP(TemporalDurationPrototypeTotal, kDontAdaptArgumentsSentinel) \
1874 /* Temporal #sec-temporal.duration.prototype.tostring */ \
1875 CPP(TemporalDurationPrototypeToString, kDontAdaptArgumentsSentinel) \
1876 /* Temporal #sec-temporal.duration.tojson */ \
1877 CPP(TemporalDurationPrototypeToJSON, kDontAdaptArgumentsSentinel) \
1878 /* Temporal #sec-temporal.duration.prototype.tolocalestring */ \
1879 CPP(TemporalDurationPrototypeToLocaleString, kDontAdaptArgumentsSentinel) \
1880 /* Temporal #sec-temporal.duration.prototype.valueof */ \
1881 CPP(TemporalDurationPrototypeValueOf, kDontAdaptArgumentsSentinel) \
1882 \
1883 /* Temporal.Instant */ \
1884 /* Temporal #sec-temporal.instant */ \
1885 CPP(TemporalInstantConstructor, kDontAdaptArgumentsSentinel) \
1886 /* Temporal #sec-temporal.instant.from */ \
1887 CPP(TemporalInstantFrom, kDontAdaptArgumentsSentinel) \
1888 /* Temporal #sec-temporal.instant.fromepochseconds */ \
1889 CPP(TemporalInstantFromEpochSeconds, kDontAdaptArgumentsSentinel) \
1890 /* Temporal #sec-temporal.instant.fromepochmilliseconds */ \
1891 CPP(TemporalInstantFromEpochMilliseconds, kDontAdaptArgumentsSentinel) \
1892 /* Temporal #sec-temporal.instant.fromepochmicroseconds */ \
1893 CPP(TemporalInstantFromEpochMicroseconds, kDontAdaptArgumentsSentinel) \
1894 /* Temporal #sec-temporal.instant.fromepochnanoseconds */ \
1895 CPP(TemporalInstantFromEpochNanoseconds, kDontAdaptArgumentsSentinel) \
1896 /* Temporal #sec-temporal.instant.compare */ \
1897 CPP(TemporalInstantCompare, kDontAdaptArgumentsSentinel) \
1898 /* Temporal #sec-get-temporal.instant.prototype.epochseconds */ \
1899 CPP(TemporalInstantPrototypeEpochSeconds, JSParameterCount(0)) \
1900 /* Temporal #sec-get-temporal.instant.prototype.epochmilliseconds */ \
1901 CPP(TemporalInstantPrototypeEpochMilliseconds, JSParameterCount(0)) \
1902 /* Temporal #sec-get-temporal.instant.prototype.epochmicroseconds */ \
1903 CPP(TemporalInstantPrototypeEpochMicroseconds, JSParameterCount(0)) \
1904 /* Temporal #sec-get-temporal.instant.prototype.epochnanoseconds */ \
1905 CPP(TemporalInstantPrototypeEpochNanoseconds, JSParameterCount(0)) \
1906 /* Temporal #sec-temporal.instant.prototype.add */ \
1907 CPP(TemporalInstantPrototypeAdd, kDontAdaptArgumentsSentinel) \
1908 /* Temporal #sec-temporal.instant.prototype.subtract */ \
1909 CPP(TemporalInstantPrototypeSubtract, kDontAdaptArgumentsSentinel) \
1910 /* Temporal #sec-temporal.instant.prototype.until */ \
1911 CPP(TemporalInstantPrototypeUntil, kDontAdaptArgumentsSentinel) \
1912 /* Temporal #sec-temporal.instant.prototype.since */ \
1913 CPP(TemporalInstantPrototypeSince, kDontAdaptArgumentsSentinel) \
1914 /* Temporal #sec-temporal.instant.prototype.round */ \
1915 CPP(TemporalInstantPrototypeRound, kDontAdaptArgumentsSentinel) \
1916 /* Temporal #sec-temporal.instant.prototype.equals */ \
1917 CPP(TemporalInstantPrototypeEquals, kDontAdaptArgumentsSentinel) \
1918 /* Temporal #sec-temporal.instant.prototype.tostring */ \
1919 CPP(TemporalInstantPrototypeToString, kDontAdaptArgumentsSentinel) \
1920 /* Temporal #sec-temporal.instant.tojson */ \
1921 CPP(TemporalInstantPrototypeToJSON, kDontAdaptArgumentsSentinel) \
1922 /* Temporal #sec-temporal.instant.prototype.tolocalestring */ \
1923 CPP(TemporalInstantPrototypeToLocaleString, kDontAdaptArgumentsSentinel) \
1924 /* Temporal #sec-temporal.instant.prototype.valueof */ \
1925 CPP(TemporalInstantPrototypeValueOf, kDontAdaptArgumentsSentinel) \
1926 /* Temporal #sec-temporal.instant.prototype.tozoneddatetime */ \
1927 CPP(TemporalInstantPrototypeToZonedDateTime, kDontAdaptArgumentsSentinel) \
1928 /* Temporal #sec-temporal.instant.prototype.tozoneddatetimeiso */ \
1929 CPP(TemporalInstantPrototypeToZonedDateTimeISO, kDontAdaptArgumentsSentinel) \
1930 \
1931 /* Temporal.PlainYearMonth */ \
1932 /* Temporal #sec-temporal.plainyearmonth */ \
1933 CPP(TemporalPlainYearMonthConstructor, kDontAdaptArgumentsSentinel) \
1934 /* Temporal #sec-temporal.plainyearmonth.from */ \
1935 CPP(TemporalPlainYearMonthFrom, kDontAdaptArgumentsSentinel) \
1936 /* Temporal #sec-temporal.plainyearmonth.compare */ \
1937 CPP(TemporalPlainYearMonthCompare, kDontAdaptArgumentsSentinel) \
1938 /* Temporal #sec-get-temporal.plainyearmonth.prototype.calendar */ \
1939 CPP(TemporalPlainYearMonthPrototypeCalendar, JSParameterCount(0)) \
1940 /* Temporal #sec-get-temporal.plainyearmonth.prototype.year */ \
1941 CPP(TemporalPlainYearMonthPrototypeYear, JSParameterCount(0)) \
1942 /* Temporal #sec-get-temporal.plainyearmonth.prototype.month */ \
1943 CPP(TemporalPlainYearMonthPrototypeMonth, JSParameterCount(0)) \
1944 /* Temporal #sec-get-temporal.plainyearmonth.prototype.monthcode */ \
1945 CPP(TemporalPlainYearMonthPrototypeMonthCode, JSParameterCount(0)) \
1946 /* Temporal #sec-get-temporal.plainyearmonth.prototype.daysinyear */ \
1947 CPP(TemporalPlainYearMonthPrototypeDaysInYear, JSParameterCount(0)) \
1948 /* Temporal #sec-get-temporal.plainyearmonth.prototype.daysinmonth */ \
1949 CPP(TemporalPlainYearMonthPrototypeDaysInMonth, JSParameterCount(0)) \
1950 /* Temporal #sec-get-temporal.plainyearmonth.prototype.monthsinyear */ \
1951 CPP(TemporalPlainYearMonthPrototypeMonthsInYear, JSParameterCount(0)) \
1952 /* Temporal #sec-get-temporal.plainyearmonth.prototype.inleapyear */ \
1953 CPP(TemporalPlainYearMonthPrototypeInLeapYear, JSParameterCount(0)) \
1954 /* Temporal #sec-temporal.plainyearmonth.prototype.with */ \
1955 CPP(TemporalPlainYearMonthPrototypeWith, kDontAdaptArgumentsSentinel) \
1956 /* Temporal #sec-temporal.plainyearmonth.prototype.add */ \
1957 CPP(TemporalPlainYearMonthPrototypeAdd, kDontAdaptArgumentsSentinel) \
1958 /* Temporal #sec-temporal.plainyearmonth.prototype.subtract */ \
1959 CPP(TemporalPlainYearMonthPrototypeSubtract, kDontAdaptArgumentsSentinel) \
1960 /* Temporal #sec-temporal.plainyearmonth.prototype.until */ \
1961 CPP(TemporalPlainYearMonthPrototypeUntil, kDontAdaptArgumentsSentinel) \
1962 /* Temporal #sec-temporal.plainyearmonth.prototype.since */ \
1963 CPP(TemporalPlainYearMonthPrototypeSince, kDontAdaptArgumentsSentinel) \
1964 /* Temporal #sec-temporal.plainyearmonth.prototype.equals */ \
1965 CPP(TemporalPlainYearMonthPrototypeEquals, kDontAdaptArgumentsSentinel) \
1966 /* Temporal #sec-temporal.plainyearmonth.tostring */ \
1967 CPP(TemporalPlainYearMonthPrototypeToString, kDontAdaptArgumentsSentinel) \
1968 /* Temporal #sec-temporal.plainyearmonth.tojson */ \
1969 CPP(TemporalPlainYearMonthPrototypeToJSON, kDontAdaptArgumentsSentinel) \
1970 /* Temporal #sec-temporal.plainyearmonth.prototype.tolocalestring */ \
1971 CPP(TemporalPlainYearMonthPrototypeToLocaleString, \
1972 kDontAdaptArgumentsSentinel) \
1973 /* Temporal #sec-temporal.plainyearmonth.prototype.valueof */ \
1974 CPP(TemporalPlainYearMonthPrototypeValueOf, kDontAdaptArgumentsSentinel) \
1975 /* Temporal #sec-temporal.plainyearmonth.prototype.toplaindate */ \
1976 CPP(TemporalPlainYearMonthPrototypeToPlainDate, kDontAdaptArgumentsSentinel) \
1977 /* Temporal #sec-temporal.plainyearmonth.prototype.getisofields */ \
1978 CPP(TemporalPlainYearMonthPrototypeGetISOFields, \
1979 kDontAdaptArgumentsSentinel) \
1980 \
1981 /* Temporal.PlainMonthDay */ \
1982 /* Temporal #sec-temporal.plainmonthday */ \
1983 CPP(TemporalPlainMonthDayConstructor, kDontAdaptArgumentsSentinel) \
1984 /* Temporal #sec-temporal.plainmonthday.from */ \
1985 CPP(TemporalPlainMonthDayFrom, kDontAdaptArgumentsSentinel) \
1986 /* There are no compare for PlainMonthDay */ \
1987 /* See https://github.com/tc39/proposal-temporal/issues/1547 */ \
1988 /* Temporal #sec-get-temporal.plainmonthday.prototype.calendar */ \
1989 CPP(TemporalPlainMonthDayPrototypeCalendar, JSParameterCount(0)) \
1990 /* Temporal #sec-get-temporal.plainmonthday.prototype.monthcode */ \
1991 CPP(TemporalPlainMonthDayPrototypeMonthCode, JSParameterCount(0)) \
1992 /* Temporal #sec-get-temporal.plainmonthday.prototype.day */ \
1993 CPP(TemporalPlainMonthDayPrototypeDay, JSParameterCount(0)) \
1994 /* Temporal #sec-temporal.plainmonthday.prototype.with */ \
1995 CPP(TemporalPlainMonthDayPrototypeWith, kDontAdaptArgumentsSentinel) \
1996 /* Temporal #sec-temporal.plainmonthday.prototype.equals */ \
1997 CPP(TemporalPlainMonthDayPrototypeEquals, kDontAdaptArgumentsSentinel) \
1998 /* Temporal #sec-temporal.plainmonthday.prototype.tostring */ \
1999 CPP(TemporalPlainMonthDayPrototypeToString, kDontAdaptArgumentsSentinel) \
2000 /* Temporal #sec-temporal.plainmonthday.tojson */ \
2001 CPP(TemporalPlainMonthDayPrototypeToJSON, kDontAdaptArgumentsSentinel) \
2002 /* Temporal #sec-temporal.plainmonthday.prototype.tolocalestring */ \
2003 CPP(TemporalPlainMonthDayPrototypeToLocaleString, \
2004 kDontAdaptArgumentsSentinel) \
2005 /* Temporal #sec-temporal.plainmonthday.prototype.valueof */ \
2006 CPP(TemporalPlainMonthDayPrototypeValueOf, kDontAdaptArgumentsSentinel) \
2007 /* Temporal #sec-temporal.plainmonthday.prototype.toplaindate */ \
2008 CPP(TemporalPlainMonthDayPrototypeToPlainDate, kDontAdaptArgumentsSentinel) \
2009 /* Temporal #sec-temporal.plainmonthday.prototype.getisofields */ \
2010 CPP(TemporalPlainMonthDayPrototypeGetISOFields, kDontAdaptArgumentsSentinel) \
2011 \
2012 /* Temporal.TimeZone */ \
2013 /* Temporal #sec-temporal.timezone */ \
2014 CPP(TemporalTimeZoneConstructor, kDontAdaptArgumentsSentinel) \
2015 /* Temporal #sec-temporal.timezone.from */ \
2016 CPP(TemporalTimeZoneFrom, kDontAdaptArgumentsSentinel) \
2017 /* Temporal #sec-get-temporal.timezone.prototype.id */ \
2018 CPP(TemporalTimeZonePrototypeId, JSParameterCount(0)) \
2019 /* Temporal #sec-temporal.timezone.prototype.getoffsetnanosecondsfor */ \
2020 CPP(TemporalTimeZonePrototypeGetOffsetNanosecondsFor, \
2021 kDontAdaptArgumentsSentinel) \
2022 /* Temporal #sec-temporal.timezone.prototype.getoffsetstringfor */ \
2023 CPP(TemporalTimeZonePrototypeGetOffsetStringFor, \
2024 kDontAdaptArgumentsSentinel) \
2025 /* Temporal #sec-temporal.timezone.prototype.getplaindatetimefor */ \
2026 CPP(TemporalTimeZonePrototypeGetPlainDateTimeFor, \
2027 kDontAdaptArgumentsSentinel) \
2028 /* Temporal #sec-temporal.timezone.prototype.getinstantfor */ \
2029 CPP(TemporalTimeZonePrototypeGetInstantFor, kDontAdaptArgumentsSentinel) \
2030 /* Temporal #sec-temporal.timezone.prototype.getpossibleinstantsfor */ \
2031 CPP(TemporalTimeZonePrototypeGetPossibleInstantsFor, \
2032 kDontAdaptArgumentsSentinel) \
2033 /* Temporal #sec-temporal.timezone.prototype.getnexttransition */ \
2034 CPP(TemporalTimeZonePrototypeGetNextTransition, kDontAdaptArgumentsSentinel) \
2035 /* Temporal #sec-temporal.timezone.prototype.getprevioustransition */ \
2036 CPP(TemporalTimeZonePrototypeGetPreviousTransition, \
2037 kDontAdaptArgumentsSentinel) \
2038 /* Temporal #sec-temporal.timezone.prototype.tostring */ \
2039 CPP(TemporalTimeZonePrototypeToString, kDontAdaptArgumentsSentinel) \
2040 /* Temporal #sec-temporal.timezone.prototype.tojson */ \
2041 CPP(TemporalTimeZonePrototypeToJSON, kDontAdaptArgumentsSentinel) \
2042 \
2043 /* Temporal.Calendar */ \
2044 /* Temporal #sec-temporal.calendar */ \
2045 CPP(TemporalCalendarConstructor, kDontAdaptArgumentsSentinel) \
2046 /* Temporal #sec-temporal.calendar.from */ \
2047 CPP(TemporalCalendarFrom, kDontAdaptArgumentsSentinel) \
2048 /* Temporal #sec-get-temporal.calendar.prototype.id */ \
2049 CPP(TemporalCalendarPrototypeId, JSParameterCount(0)) \
2050 /* Temporal #sec-temporal.calendar.prototype.datefromfields */ \
2051 CPP(TemporalCalendarPrototypeDateFromFields, kDontAdaptArgumentsSentinel) \
2052 /* Temporal #sec-temporal.calendar.prototype.yearmonthfromfields */ \
2053 CPP(TemporalCalendarPrototypeYearMonthFromFields, \
2054 kDontAdaptArgumentsSentinel) \
2055 /* Temporal #sec-temporal.calendar.prototype.monthdayfromfields */ \
2056 CPP(TemporalCalendarPrototypeMonthDayFromFields, \
2057 kDontAdaptArgumentsSentinel) \
2058 /* Temporal #sec-temporal.calendar.prototype.dateadd */ \
2059 CPP(TemporalCalendarPrototypeDateAdd, kDontAdaptArgumentsSentinel) \
2060 /* Temporal #sec-temporal.calendar.prototype.dateuntil */ \
2061 CPP(TemporalCalendarPrototypeDateUntil, kDontAdaptArgumentsSentinel) \
2062 /* Temporal #sec-temporal.calendar.prototype.year */ \
2063 CPP(TemporalCalendarPrototypeYear, kDontAdaptArgumentsSentinel) \
2064 /* Temporal #sec-temporal.calendar.prototype.month */ \
2065 CPP(TemporalCalendarPrototypeMonth, kDontAdaptArgumentsSentinel) \
2066 /* Temporal #sec-temporal.calendar.prototype.monthcode */ \
2067 CPP(TemporalCalendarPrototypeMonthCode, kDontAdaptArgumentsSentinel) \
2068 /* Temporal #sec-temporal.calendar.prototype.day */ \
2069 CPP(TemporalCalendarPrototypeDay, kDontAdaptArgumentsSentinel) \
2070 /* Temporal #sec-temporal.calendar.prototype.dayofweek */ \
2071 CPP(TemporalCalendarPrototypeDayOfWeek, kDontAdaptArgumentsSentinel) \
2072 /* Temporal #sec-temporal.calendar.prototype.dayofyear */ \
2073 CPP(TemporalCalendarPrototypeDayOfYear, kDontAdaptArgumentsSentinel) \
2074 /* Temporal #sec-temporal.calendar.prototype.weekofyear */ \
2075 CPP(TemporalCalendarPrototypeWeekOfYear, kDontAdaptArgumentsSentinel) \
2076 /* Temporal #sec-temporal.calendar.prototype.daysinweek */ \
2077 CPP(TemporalCalendarPrototypeDaysInWeek, kDontAdaptArgumentsSentinel) \
2078 /* Temporal #sec-temporal.calendar.prototype.daysinmonth */ \
2079 CPP(TemporalCalendarPrototypeDaysInMonth, kDontAdaptArgumentsSentinel) \
2080 /* Temporal #sec-temporal.calendar.prototype.daysinyear */ \
2081 CPP(TemporalCalendarPrototypeDaysInYear, kDontAdaptArgumentsSentinel) \
2082 /* Temporal #sec-temporal.calendar.prototype.monthsinyear */ \
2083 CPP(TemporalCalendarPrototypeMonthsInYear, kDontAdaptArgumentsSentinel) \
2084 /* Temporal #sec-temporal.calendar.prototype.inleapyear */ \
2085 CPP(TemporalCalendarPrototypeInLeapYear, kDontAdaptArgumentsSentinel) \
2086 /* Temporal #sec-temporal.calendar.prototype.fields */ \
2087 TFJ(TemporalCalendarPrototypeFields, kJSArgcReceiverSlots + 1, kReceiver, \
2088 kIterable) \
2089 /* Temporal #sec-temporal.calendar.prototype.mergefields */ \
2090 CPP(TemporalCalendarPrototypeMergeFields, kDontAdaptArgumentsSentinel) \
2091 /* Temporal #sec-temporal.calendar.prototype.tostring */ \
2092 CPP(TemporalCalendarPrototypeToString, kDontAdaptArgumentsSentinel) \
2093 /* Temporal #sec-temporal.calendar.prototype.tojson */ \
2094 CPP(TemporalCalendarPrototypeToJSON, kDontAdaptArgumentsSentinel) \
2095 /* Temporal #sec-date.prototype.totemporalinstant */ \
2096 CPP(DatePrototypeToTemporalInstant, kDontAdaptArgumentsSentinel) \
2097 \
2098 /* "Private" (created but not exposed) Bulitins needed by Temporal */ \
2099 TFJ(StringFixedArrayFromIterable, kJSArgcReceiverSlots + 1, kReceiver, \
2100 kIterable) \
2101 TFJ(TemporalInstantFixedArrayFromIterable, kJSArgcReceiverSlots + 1, \
2102 kReceiver, kIterable)
2103
2104#define BUILTIN_LIST_BASE(CPP, TSJ, TFJ, TSC, TFC, TFS, TFH, ASM) \
2105 BUILTIN_LIST_BASE_TIER0(CPP, TFJ, TFC, TFS, TFH, ASM) \
2106 BUILTIN_LIST_BASE_TIER1(CPP, TSJ, TFJ, TSC, TFC, TFS, TFH, ASM)
2107
2108#ifdef V8_INTL_SUPPORT
2109#define BUILTIN_LIST_INTL(CPP, TFJ, TFS) \
2110 /* ecma402 #sec-intl.collator */ \
2111 CPP(CollatorConstructor, kDontAdaptArgumentsSentinel) \
2112 /* ecma 402 #sec-collator-compare-functions*/ \
2113 CPP(CollatorInternalCompare, JSParameterCount(2)) \
2114 /* ecma402 #sec-intl.collator.prototype.compare */ \
2115 CPP(CollatorPrototypeCompare, kDontAdaptArgumentsSentinel) \
2116 /* ecma402 #sec-intl.collator.supportedlocalesof */ \
2117 CPP(CollatorSupportedLocalesOf, kDontAdaptArgumentsSentinel) \
2118 /* ecma402 #sec-intl.collator.prototype.resolvedoptions */ \
2119 CPP(CollatorPrototypeResolvedOptions, kDontAdaptArgumentsSentinel) \
2120 /* ecma402 #sup-date.prototype.tolocaledatestring */ \
2121 CPP(DatePrototypeToLocaleDateString, kDontAdaptArgumentsSentinel) \
2122 /* ecma402 #sup-date.prototype.tolocalestring */ \
2123 CPP(DatePrototypeToLocaleString, kDontAdaptArgumentsSentinel) \
2124 /* ecma402 #sup-date.prototype.tolocaletimestring */ \
2125 CPP(DatePrototypeToLocaleTimeString, kDontAdaptArgumentsSentinel) \
2126 /* ecma402 #sec-intl.datetimeformat */ \
2127 CPP(DateTimeFormatConstructor, kDontAdaptArgumentsSentinel) \
2128 /* ecma402 #sec-datetime-format-functions */ \
2129 CPP(DateTimeFormatInternalFormat, JSParameterCount(1)) \
2130 /* ecma402 #sec-intl.datetimeformat.prototype.format */ \
2131 CPP(DateTimeFormatPrototypeFormat, kDontAdaptArgumentsSentinel) \
2132 /* ecma402 #sec-intl.datetimeformat.prototype.formatrange */ \
2133 CPP(DateTimeFormatPrototypeFormatRange, kDontAdaptArgumentsSentinel) \
2134 /* ecma402 #sec-intl.datetimeformat.prototype.formatrangetoparts */ \
2135 CPP(DateTimeFormatPrototypeFormatRangeToParts, kDontAdaptArgumentsSentinel) \
2136 /* ecma402 #sec-intl.datetimeformat.prototype.formattoparts */ \
2137 CPP(DateTimeFormatPrototypeFormatToParts, kDontAdaptArgumentsSentinel) \
2138 /* ecma402 #sec-intl.datetimeformat.prototype.resolvedoptions */ \
2139 CPP(DateTimeFormatPrototypeResolvedOptions, kDontAdaptArgumentsSentinel) \
2140 /* ecma402 #sec-intl.datetimeformat.supportedlocalesof */ \
2141 CPP(DateTimeFormatSupportedLocalesOf, kDontAdaptArgumentsSentinel) \
2142 /* ecma402 #sec-Intl.DisplayNames */ \
2143 CPP(DisplayNamesConstructor, kDontAdaptArgumentsSentinel) \
2144 /* ecma402 #sec-Intl.DisplayNames.prototype.of */ \
2145 CPP(DisplayNamesPrototypeOf, kDontAdaptArgumentsSentinel) \
2146 /* ecma402 #sec-Intl.DisplayNames.prototype.resolvedOptions */ \
2147 CPP(DisplayNamesPrototypeResolvedOptions, kDontAdaptArgumentsSentinel) \
2148 /* ecma402 #sec-Intl.DisplayNames.supportedLocalesOf */ \
2149 CPP(DisplayNamesSupportedLocalesOf, kDontAdaptArgumentsSentinel) \
2150 /* ecma402 #sec-intl-durationformat-constructor */ \
2151 CPP(DurationFormatConstructor, kDontAdaptArgumentsSentinel) \
2152 /* ecma402 #sec-Intl.DurationFormat.prototype.format */ \
2153 CPP(DurationFormatPrototypeFormat, kDontAdaptArgumentsSentinel) \
2154 /* ecma402 #sec-Intl.DurationFormat.prototype.formatToParts */ \
2155 CPP(DurationFormatPrototypeFormatToParts, kDontAdaptArgumentsSentinel) \
2156 /* ecma402 #sec-Intl.DurationFormat.prototype.resolvedOptions */ \
2157 CPP(DurationFormatPrototypeResolvedOptions, kDontAdaptArgumentsSentinel) \
2158 /* ecma402 #sec-Intl.DurationFormat.supportedLocalesOf */ \
2159 CPP(DurationFormatSupportedLocalesOf, kDontAdaptArgumentsSentinel) \
2160 /* ecma402 #sec-intl.getcanonicallocales */ \
2161 CPP(IntlGetCanonicalLocales, kDontAdaptArgumentsSentinel) \
2162 /* ecma402 #sec-intl.supportedvaluesof */ \
2163 CPP(IntlSupportedValuesOf, kDontAdaptArgumentsSentinel) \
2164 /* ecma402 #sec-intl-listformat-constructor */ \
2165 CPP(ListFormatConstructor, kDontAdaptArgumentsSentinel) \
2166 /* ecma402 #sec-intl-list-format.prototype.format */ \
2167 TFJ(ListFormatPrototypeFormat, kDontAdaptArgumentsSentinel) \
2168 /* ecma402 #sec-intl-list-format.prototype.formattoparts */ \
2169 TFJ(ListFormatPrototypeFormatToParts, kDontAdaptArgumentsSentinel) \
2170 /* ecma402 #sec-intl.listformat.prototype.resolvedoptions */ \
2171 CPP(ListFormatPrototypeResolvedOptions, kDontAdaptArgumentsSentinel) \
2172 /* ecma402 #sec-intl.ListFormat.supportedlocalesof */ \
2173 CPP(ListFormatSupportedLocalesOf, kDontAdaptArgumentsSentinel) \
2174 /* ecma402 #sec-intl-locale-constructor */ \
2175 CPP(LocaleConstructor, kDontAdaptArgumentsSentinel) \
2176 /* ecma402 #sec-Intl.Locale.prototype.baseName */ \
2177 CPP(LocalePrototypeBaseName, JSParameterCount(0)) \
2178 /* ecma402 #sec-Intl.Locale.prototype.calendar */ \
2179 CPP(LocalePrototypeCalendar, JSParameterCount(0)) \
2180 /* ecma402 #sec-Intl.Locale.prototype.calendars */ \
2181 CPP(LocalePrototypeCalendars, JSParameterCount(0)) \
2182 /* ecma402 #sec-Intl.Locale.prototype.caseFirst */ \
2183 CPP(LocalePrototypeCaseFirst, JSParameterCount(0)) \
2184 /* ecma402 #sec-Intl.Locale.prototype.collation */ \
2185 CPP(LocalePrototypeCollation, JSParameterCount(0)) \
2186 /* ecma402 #sec-Intl.Locale.prototype.collations */ \
2187 CPP(LocalePrototypeCollations, JSParameterCount(0)) \
2188 /* ecma402 #sec-Intl.Locale.prototype.firstDayOfWeek */ \
2189 CPP(LocalePrototypeFirstDayOfWeek, JSParameterCount(0)) \
2190 /* ecma402 #sec-Intl.Locale.prototype.getCalendars */ \
2191 CPP(LocalePrototypeGetCalendars, kDontAdaptArgumentsSentinel) \
2192 /* ecma402 #sec-Intl.Locale.prototype.getCollations */ \
2193 CPP(LocalePrototypeGetCollations, kDontAdaptArgumentsSentinel) \
2194 /* ecma402 #sec-Intl.Locale.prototype.getHourCycles */ \
2195 CPP(LocalePrototypeGetHourCycles, kDontAdaptArgumentsSentinel) \
2196 /* ecma402 #sec-Intl.Locale.prototype.getNumberingSystems */ \
2197 CPP(LocalePrototypeGetNumberingSystems, kDontAdaptArgumentsSentinel) \
2198 /* ecma402 #sec-Intl.Locale.prototype.getTimeZones */ \
2199 CPP(LocalePrototypeGetTimeZones, kDontAdaptArgumentsSentinel) \
2200 /* ecma402 #sec-Intl.Locale.prototype.getTextInfo */ \
2201 CPP(LocalePrototypeGetTextInfo, kDontAdaptArgumentsSentinel) \
2202 /* ecma402 #sec-Intl.Locale.prototype.getWeekInfo */ \
2203 CPP(LocalePrototypeGetWeekInfo, kDontAdaptArgumentsSentinel) \
2204 /* ecma402 #sec-Intl.Locale.prototype.hourCycle */ \
2205 CPP(LocalePrototypeHourCycle, JSParameterCount(0)) \
2206 /* ecma402 #sec-Intl.Locale.prototype.hourCycles */ \
2207 CPP(LocalePrototypeHourCycles, JSParameterCount(0)) \
2208 /* ecma402 #sec-Intl.Locale.prototype.language */ \
2209 CPP(LocalePrototypeLanguage, JSParameterCount(0)) \
2210 /* ecma402 #sec-Intl.Locale.prototype.maximize */ \
2211 CPP(LocalePrototypeMaximize, kDontAdaptArgumentsSentinel) \
2212 /* ecma402 #sec-Intl.Locale.prototype.minimize */ \
2213 CPP(LocalePrototypeMinimize, kDontAdaptArgumentsSentinel) \
2214 /* ecma402 #sec-Intl.Locale.prototype.numeric */ \
2215 CPP(LocalePrototypeNumeric, JSParameterCount(0)) \
2216 /* ecma402 #sec-Intl.Locale.prototype.numberingSystem */ \
2217 CPP(LocalePrototypeNumberingSystem, JSParameterCount(0)) \
2218 /* ecma402 #sec-Intl.Locale.prototype.numberingSystems */ \
2219 CPP(LocalePrototypeNumberingSystems, JSParameterCount(0)) \
2220 /* ecma402 #sec-Intl.Locale.prototype.region */ \
2221 CPP(LocalePrototypeRegion, JSParameterCount(0)) \
2222 /* ecma402 #sec-Intl.Locale.prototype.script */ \
2223 CPP(LocalePrototypeScript, JSParameterCount(0)) \
2224 /* ecma402 #sec-Intl.Locale.prototype.textInfo */ \
2225 CPP(LocalePrototypeTextInfo, JSParameterCount(0)) \
2226 /* ecma402 #sec-Intl.Locale.prototype.timezones */ \
2227 CPP(LocalePrototypeTimeZones, JSParameterCount(0)) \
2228 /* ecma402 #sec-Intl.Locale.prototype.toString */ \
2229 CPP(LocalePrototypeToString, kDontAdaptArgumentsSentinel) \
2230 /* ecma402 #sec-Intl.Locale.prototype.weekInfo */ \
2231 CPP(LocalePrototypeWeekInfo, JSParameterCount(0)) \
2232 /* ecma402 #sec-intl.numberformat */ \
2233 CPP(NumberFormatConstructor, kDontAdaptArgumentsSentinel) \
2234 /* ecma402 #sec-number-format-functions */ \
2235 CPP(NumberFormatInternalFormatNumber, JSParameterCount(1)) \
2236 /* ecma402 #sec-intl.numberformat.prototype.format */ \
2237 CPP(NumberFormatPrototypeFormatNumber, kDontAdaptArgumentsSentinel) \
2238 /* ecma402 #sec-intl.numberformat.prototype.formatrange */ \
2239 CPP(NumberFormatPrototypeFormatRange, kDontAdaptArgumentsSentinel) \
2240 /* ecma402 #sec-intl.numberformat.prototype.formatrangetoparts */ \
2241 CPP(NumberFormatPrototypeFormatRangeToParts, kDontAdaptArgumentsSentinel) \
2242 /* ecma402 #sec-intl.numberformat.prototype.formattoparts */ \
2243 CPP(NumberFormatPrototypeFormatToParts, kDontAdaptArgumentsSentinel) \
2244 /* ecma402 #sec-intl.numberformat.prototype.resolvedoptions */ \
2245 CPP(NumberFormatPrototypeResolvedOptions, kDontAdaptArgumentsSentinel) \
2246 /* ecma402 #sec-intl.numberformat.supportedlocalesof */ \
2247 CPP(NumberFormatSupportedLocalesOf, kDontAdaptArgumentsSentinel) \
2248 /* ecma402 #sec-intl.pluralrules */ \
2249 CPP(PluralRulesConstructor, kDontAdaptArgumentsSentinel) \
2250 /* ecma402 #sec-intl.pluralrules.prototype.resolvedoptions */ \
2251 CPP(PluralRulesPrototypeResolvedOptions, kDontAdaptArgumentsSentinel) \
2252 /* ecma402 #sec-intl.pluralrules.prototype.select */ \
2253 CPP(PluralRulesPrototypeSelect, kDontAdaptArgumentsSentinel) \
2254 /* ecma402 #sec-intl.pluralrules.prototype.selectrange */ \
2255 CPP(PluralRulesPrototypeSelectRange, kDontAdaptArgumentsSentinel) \
2256 /* ecma402 #sec-intl.pluralrules.supportedlocalesof */ \
2257 CPP(PluralRulesSupportedLocalesOf, kDontAdaptArgumentsSentinel) \
2258 /* ecma402 #sec-intl.RelativeTimeFormat.constructor */ \
2259 CPP(RelativeTimeFormatConstructor, kDontAdaptArgumentsSentinel) \
2260 /* ecma402 #sec-intl.RelativeTimeFormat.prototype.format */ \
2261 CPP(RelativeTimeFormatPrototypeFormat, kDontAdaptArgumentsSentinel) \
2262 /* ecma402 #sec-intl.RelativeTimeFormat.prototype.formatToParts */ \
2263 CPP(RelativeTimeFormatPrototypeFormatToParts, kDontAdaptArgumentsSentinel) \
2264 /* ecma402 #sec-intl.RelativeTimeFormat.prototype.resolvedOptions */ \
2265 CPP(RelativeTimeFormatPrototypeResolvedOptions, kDontAdaptArgumentsSentinel) \
2266 /* ecma402 #sec-intl.RelativeTimeFormat.supportedlocalesof */ \
2267 CPP(RelativeTimeFormatSupportedLocalesOf, kDontAdaptArgumentsSentinel) \
2268 /* ecma402 #sec-Intl.Segmenter */ \
2269 CPP(SegmenterConstructor, kDontAdaptArgumentsSentinel) \
2270 /* ecma402 #sec-Intl.Segmenter.prototype.resolvedOptions */ \
2271 CPP(SegmenterPrototypeResolvedOptions, kDontAdaptArgumentsSentinel) \
2272 /* ecma402 #sec-Intl.Segmenter.prototype.segment */ \
2273 CPP(SegmenterPrototypeSegment, kDontAdaptArgumentsSentinel) \
2274 /* ecma402 #sec-Intl.Segmenter.supportedLocalesOf */ \
2275 CPP(SegmenterSupportedLocalesOf, kDontAdaptArgumentsSentinel) \
2276 /* ecma402 #sec-segment-iterator-prototype-next */ \
2277 CPP(SegmentIteratorPrototypeNext, kDontAdaptArgumentsSentinel) \
2278 /* ecma402 #sec-%segmentsprototype%.containing */ \
2279 CPP(SegmentsPrototypeContaining, kDontAdaptArgumentsSentinel) \
2280 /* ecma402 #sec-%segmentsprototype%-@@iterator */ \
2281 CPP(SegmentsPrototypeIterator, JSParameterCount(0)) \
2282 /* ecma402 #sup-properties-of-the-string-prototype-object */ \
2283 CPP(StringPrototypeLocaleCompareIntl, kDontAdaptArgumentsSentinel) \
2284 /* ES #sec-string.prototype.normalize */ \
2285 CPP(StringPrototypeNormalizeIntl, kDontAdaptArgumentsSentinel) \
2286 /* ecma402 #sup-string.prototype.tolocalelowercase */ \
2287 TFJ(StringPrototypeToLocaleLowerCase, kDontAdaptArgumentsSentinel) \
2288 /* ecma402 #sup-string.prototype.tolocaleuppercase */ \
2289 CPP(StringPrototypeToLocaleUpperCase, kDontAdaptArgumentsSentinel) \
2290 /* ES #sec-string.prototype.tolowercase */ \
2291 TFJ(StringPrototypeToLowerCaseIntl, kJSArgcReceiverSlots, kReceiver) \
2292 /* ES #sec-string.prototype.touppercase */ \
2293 CPP(StringPrototypeToUpperCaseIntl, kDontAdaptArgumentsSentinel) \
2294 TFS(StringToLowerCaseIntl, NeedsContext::kYes, kString) \
2295 \
2296 /* Temporal */ \
2297 /* Temporal #sec-temporal.calendar.prototype.era */ \
2298 CPP(TemporalCalendarPrototypeEra, kDontAdaptArgumentsSentinel) \
2299 /* Temporal #sec-temporal.calendar.prototype.erayear */ \
2300 CPP(TemporalCalendarPrototypeEraYear, kDontAdaptArgumentsSentinel) \
2301 /* Temporal #sec-get-temporal.plaindate.prototype.era */ \
2302 CPP(TemporalPlainDatePrototypeEra, JSParameterCount(0)) \
2303 /* Temporal #sec-get-temporal.plaindate.prototype.erayear */ \
2304 CPP(TemporalPlainDatePrototypeEraYear, JSParameterCount(0)) \
2305 /* Temporal #sec-get-temporal.plaindatetime.prototype.era */ \
2306 CPP(TemporalPlainDateTimePrototypeEra, JSParameterCount(0)) \
2307 /* Temporal #sec-get-temporal.plaindatetime.prototype.erayear */ \
2308 CPP(TemporalPlainDateTimePrototypeEraYear, JSParameterCount(0)) \
2309 /* Temporal #sec-get-temporal.plainyearmonth.prototype.era */ \
2310 CPP(TemporalPlainYearMonthPrototypeEra, JSParameterCount(0)) \
2311 /* Temporal #sec-get-temporal.plainyearmonth.prototype.erayear */ \
2312 CPP(TemporalPlainYearMonthPrototypeEraYear, JSParameterCount(0)) \
2313 /* Temporal #sec-get-temporal.zoneddatetime.prototype.era */ \
2314 CPP(TemporalZonedDateTimePrototypeEra, JSParameterCount(0)) \
2315 /* Temporal #sec-get-temporal.zoneddatetime.prototype.erayear */ \
2316 CPP(TemporalZonedDateTimePrototypeEraYear, JSParameterCount(0)) \
2317 \
2318 CPP(V8BreakIteratorConstructor, kDontAdaptArgumentsSentinel) \
2319 CPP(V8BreakIteratorInternalAdoptText, JSParameterCount(1)) \
2320 CPP(V8BreakIteratorInternalBreakType, JSParameterCount(0)) \
2321 CPP(V8BreakIteratorInternalCurrent, JSParameterCount(0)) \
2322 CPP(V8BreakIteratorInternalFirst, JSParameterCount(0)) \
2323 CPP(V8BreakIteratorInternalNext, JSParameterCount(0)) \
2324 CPP(V8BreakIteratorPrototypeAdoptText, kDontAdaptArgumentsSentinel) \
2325 CPP(V8BreakIteratorPrototypeBreakType, kDontAdaptArgumentsSentinel) \
2326 CPP(V8BreakIteratorPrototypeCurrent, kDontAdaptArgumentsSentinel) \
2327 CPP(V8BreakIteratorPrototypeFirst, kDontAdaptArgumentsSentinel) \
2328 CPP(V8BreakIteratorPrototypeNext, kDontAdaptArgumentsSentinel) \
2329 CPP(V8BreakIteratorPrototypeResolvedOptions, kDontAdaptArgumentsSentinel) \
2330 CPP(V8BreakIteratorSupportedLocalesOf, kDontAdaptArgumentsSentinel)
2331#else
2332#define BUILTIN_LIST_INTL(CPP, TFJ, TFS) \
2333 /* ES6 #sec-string.prototype.localecompare */ \
2334 /* non-locale specific fallback version */ \
2335 CPP(StringPrototypeLocaleCompare, JSParameterCount(1)) \
2336 /* no-op fallback version */ \
2337 CPP(StringPrototypeNormalize, kDontAdaptArgumentsSentinel) \
2338 /* same as toLowercase; fallback version */ \
2339 CPP(StringPrototypeToLocaleLowerCase, kDontAdaptArgumentsSentinel) \
2340 /* same as toUppercase; fallback version */ \
2341 CPP(StringPrototypeToLocaleUpperCase, kDontAdaptArgumentsSentinel) \
2342 /* (obsolete) Unibrow version */ \
2343 CPP(StringPrototypeToLowerCase, kDontAdaptArgumentsSentinel) \
2344 /* (obsolete) Unibrow version */ \
2345 CPP(StringPrototypeToUpperCase, kDontAdaptArgumentsSentinel)
2346#endif // V8_INTL_SUPPORT
2347
2348#define BUILTIN_LIST(CPP, TSJ, TFJ, TSC, TFC, TFS, TFH, BCH, ASM) \
2349 BUILTIN_LIST_BASE(CPP, TSJ, TFJ, TSC, TFC, TFS, TFH, ASM) \
2350 BUILTIN_LIST_FROM_TORQUE(CPP, TFJ, TFC, TFS, TFH, ASM) \
2351 BUILTIN_LIST_INTL(CPP, TFJ, TFS) \
2352 BUILTIN_LIST_BYTECODE_HANDLERS(BCH)
2353
2354// See the comment on top of BUILTIN_LIST_BASE_TIER0 for an explanation of
2355// tiers.
2356#define BUILTIN_LIST_TIER0(CPP, TFJ, TFC, TFS, TFH, BCH, ASM) \
2357 BUILTIN_LIST_BASE_TIER0(CPP, TFJ, TFC, TFS, TFH, ASM)
2358
2359#define BUILTIN_LIST_TIER1(CPP, TSJ, TFJ, TFC, TFS, TFH, BCH, ASM) \
2360 BUILTIN_LIST_BASE_TIER1(CPP, TSJ, TFJ, TFC, TFS, TFH, ASM) \
2361 BUILTIN_LIST_FROM_TORQUE(CPP, TFJ, TFC, TFS, TFH, ASM) \
2362 BUILTIN_LIST_INTL(CPP, TFJ, TFS) \
2363 BUILTIN_LIST_BYTECODE_HANDLERS(BCH)
2364
2365// The exception thrown in the following builtins are caught
2366// internally and result in a promise rejection.
2367#define BUILTIN_PROMISE_REJECTION_PREDICTION_LIST(V) \
2368 V(AsyncFromSyncIteratorPrototypeNext) \
2369 V(AsyncFromSyncIteratorPrototypeReturn) \
2370 V(AsyncFromSyncIteratorPrototypeThrow) \
2371 V(AsyncFunctionAwait) \
2372 V(AsyncGeneratorResolve) \
2373 V(AsyncGeneratorAwait) \
2374 V(PromiseAll) \
2375 V(PromiseAny) \
2376 V(PromiseConstructor) \
2377 V(PromiseConstructorLazyDeoptContinuation) \
2378 V(PromiseFulfillReactionJob) \
2379 V(PromiseRejectReactionJob) \
2380 V(PromiseRace) \
2381 V(PromiseTry) \
2382 V(ResolvePromise) \
2383 V(AsyncDisposeFromSyncDispose)
2384
2385#define IGNORE_BUILTIN(...)
2386
2387#define BUILTIN_LIST_C(V) \
2388 BUILTIN_LIST(V, IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, \
2389 IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, \
2390 IGNORE_BUILTIN)
2391
2392#define BUILTIN_LIST_TSJ(V) \
2393 BUILTIN_LIST(IGNORE_BUILTIN, V, IGNORE_BUILTIN, IGNORE_BUILTIN, \
2394 IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, \
2395 IGNORE_BUILTIN)
2396
2397#define BUILTIN_LIST_TFJ(V) \
2398 BUILTIN_LIST(IGNORE_BUILTIN, IGNORE_BUILTIN, V, IGNORE_BUILTIN, \
2399 IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, \
2400 IGNORE_BUILTIN)
2401
2402#define BUILTIN_LIST_TSC(V) \
2403 BUILTIN_LIST(IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, V, \
2404 IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, \
2405 IGNORE_BUILTIN)
2406
2407#define BUILTIN_LIST_TFC(V) \
2408 BUILTIN_LIST(IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, \
2409 V, IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, \
2410 IGNORE_BUILTIN)
2411
2412#define BUILTIN_LIST_TFS(V) \
2413 BUILTIN_LIST(IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, \
2414 IGNORE_BUILTIN, V, IGNORE_BUILTIN, IGNORE_BUILTIN, \
2415 IGNORE_BUILTIN)
2416
2417#define BUILTIN_LIST_TFH(V) \
2418 BUILTIN_LIST(IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, \
2419 IGNORE_BUILTIN, IGNORE_BUILTIN, V, IGNORE_BUILTIN, \
2420 IGNORE_BUILTIN)
2421
2422#define BUILTIN_LIST_BCH(V) \
2423 BUILTIN_LIST(IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, \
2424 IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, V, \
2425 IGNORE_BUILTIN)
2426
2427#define BUILTIN_LIST_A(V) \
2428 BUILTIN_LIST(IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, \
2429 IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, \
2430 V)
2431
2432} // namespace internal
2433} // namespace v8
2434
2435#endif // V8_BUILTINS_BUILTINS_DEFINITIONS_H_