V8 API Reference, 7.2.502.16 (for Deno 0.2.4)
builtins-definitions.h
1
// Copyright 2017 the V8 project authors. All rights reserved.
2
// Use of this source code is governed by a BSD-style license that can be
3
// found in the LICENSE file.
4
5
#ifndef V8_BUILTINS_BUILTINS_DEFINITIONS_H_
6
#define V8_BUILTINS_BUILTINS_DEFINITIONS_H_
7
8
#include "builtins-generated/bytecodes-builtins-list.h"
9
10
// include generated header
11
#include "torque-generated/builtin-definitions-from-dsl.h"
12
13
namespace
v8
{
14
namespace
internal {
15
16
// CPP: Builtin in C++. Entered via BUILTIN_EXIT frame.
17
// Args: name
18
// API: Builtin in C++ for API callbacks. Entered via EXIT frame.
19
// Args: name
20
// TFJ: Builtin in Turbofan, with JS linkage (callable as Javascript function).
21
// Args: name, arguments count, explicit argument names...
22
// TFS: Builtin in Turbofan, with CodeStub linkage.
23
// Args: name, explicit argument names...
24
// TFC: Builtin in Turbofan, with CodeStub linkage and custom descriptor.
25
// Args: name, interface descriptor, return_size
26
// TFH: Handlers in Turbofan, with CodeStub linkage.
27
// Args: name, interface descriptor
28
// BCH: Bytecode Handlers, with bytecode dispatch linkage.
29
// Args: name, OperandScale, Bytecode
30
// ASM: Builtin in platform-dependent assembly.
31
// Args: name
32
33
#define BUILTIN_LIST_BASE(CPP, API, TFJ, TFC, TFS, TFH, ASM) \
34
/* GC write barrirer */
\
35
TFC(RecordWrite, RecordWrite, 1) \
36
\
37
/* Adaptors for CPP/API builtin */
\
38
TFC(AdaptorWithExitFrame, CppBuiltinAdaptor, 1) \
39
TFC(AdaptorWithBuiltinExitFrame, CppBuiltinAdaptor, 1) \
40
\
41
/* Calls */
\
42
ASM(ArgumentsAdaptorTrampoline) \
43
/* ES6 section 9.2.1 [[Call]] ( thisArgument, argumentsList) */
\
44
ASM(CallFunction_ReceiverIsNullOrUndefined) \
45
ASM(CallFunction_ReceiverIsNotNullOrUndefined) \
46
ASM(CallFunction_ReceiverIsAny) \
47
/* ES6 section 9.4.1.1 [[Call]] ( thisArgument, argumentsList) */
\
48
ASM(CallBoundFunction) \
49
/* ES6 section 7.3.12 Call(F, V, [argumentsList]) */
\
50
ASM(Call_ReceiverIsNullOrUndefined) \
51
ASM(Call_ReceiverIsNotNullOrUndefined) \
52
ASM(Call_ReceiverIsAny) \
53
\
54
/* ES6 section 9.5.12[[Call]] ( thisArgument, argumentsList ) */
\
55
TFC(CallProxy, CallTrampoline, 1) \
56
ASM(CallVarargs) \
57
TFC(CallWithSpread, CallWithSpread, 1) \
58
TFC(CallWithArrayLike, CallWithArrayLike, 1) \
59
ASM(CallForwardVarargs) \
60
ASM(CallFunctionForwardVarargs) \
61
\
62
/* Construct */
\
63
/* ES6 section 9.2.2 [[Construct]] ( argumentsList, newTarget) */
\
64
ASM(ConstructFunction) \
65
/* ES6 section 9.4.1.2 [[Construct]] (argumentsList, newTarget) */
\
66
ASM(ConstructBoundFunction) \
67
ASM(ConstructedNonConstructable) \
68
/* ES6 section 7.3.13 Construct (F, [argumentsList], [newTarget]) */
\
69
ASM(Construct) \
70
ASM(ConstructVarargs) \
71
TFC(ConstructWithSpread, ConstructWithSpread, 1) \
72
TFC(ConstructWithArrayLike, ConstructWithArrayLike, 1) \
73
ASM(ConstructForwardVarargs) \
74
ASM(ConstructFunctionForwardVarargs) \
75
ASM(JSConstructStubGeneric) \
76
ASM(JSBuiltinsConstructStub) \
77
TFC(FastNewObject, FastNewObject, 1) \
78
TFS(FastNewClosure, kSharedFunctionInfo, kFeedbackCell) \
79
TFC(FastNewFunctionContextEval, FastNewFunctionContext, 1) \
80
TFC(FastNewFunctionContextFunction, FastNewFunctionContext, 1) \
81
TFS(CreateRegExpLiteral, kFeedbackVector, kSlot, kPattern, kFlags) \
82
TFS(CreateEmptyArrayLiteral, kFeedbackVector, kSlot) \
83
TFS(CreateShallowArrayLiteral, kFeedbackVector, kSlot, kConstantElements) \
84
TFS(CreateShallowObjectLiteral, kFeedbackVector, kSlot, \
85
kObjectBoilerplateDescription, kFlags) \
86
/* ES6 section 9.5.14 [[Construct]] ( argumentsList, newTarget) */
\
87
TFC(ConstructProxy, JSTrampoline, 1) \
88
\
89
/* Apply and entries */
\
90
ASM(JSEntryTrampoline) \
91
ASM(JSConstructEntryTrampoline) \
92
ASM(ResumeGeneratorTrampoline) \
93
\
94
/* Stack and interrupt check */
\
95
ASM(InterruptCheck) \
96
ASM(StackCheck) \
97
\
98
/* String helpers */
\
99
TFC(StringCharAt, StringAt, 1) \
100
TFC(StringCodePointAtUTF16, StringAt, 1) \
101
TFC(StringCodePointAtUTF32, StringAt, 1) \
102
TFC(StringEqual, Compare, 1) \
103
TFC(StringGreaterThan, Compare, 1) \
104
TFC(StringGreaterThanOrEqual, Compare, 1) \
105
TFS(StringIndexOf, kReceiver, kSearchString, kPosition) \
106
TFC(StringLessThan, Compare, 1) \
107
TFC(StringLessThanOrEqual, Compare, 1) \
108
TFS(StringRepeat, kString, kCount) \
109
TFC(StringSubstring, StringSubstring, 1) \
110
\
111
/* OrderedHashTable helpers */
\
112
TFS(OrderedHashTableHealIndex, kTable, kIndex) \
113
\
114
/* Interpreter */
\
115
ASM(InterpreterEntryTrampoline) \
116
ASM(InterpreterPushArgsThenCall) \
117
ASM(InterpreterPushUndefinedAndArgsThenCall) \
118
ASM(InterpreterPushArgsThenCallWithFinalSpread) \
119
ASM(InterpreterPushArgsThenConstruct) \
120
ASM(InterpreterPushArgsThenConstructArrayFunction) \
121
ASM(InterpreterPushArgsThenConstructWithFinalSpread) \
122
ASM(InterpreterEnterBytecodeAdvance) \
123
ASM(InterpreterEnterBytecodeDispatch) \
124
ASM(InterpreterOnStackReplacement) \
125
\
126
/* Code life-cycle */
\
127
TFC(CompileLazy, JSTrampoline, 1) \
128
TFC(CompileLazyDeoptimizedCode, JSTrampoline, 1) \
129
ASM(InstantiateAsmJs) \
130
ASM(NotifyDeoptimized) \
131
\
132
/* Trampolines called when returning from a deoptimization that expects */
\
133
/* to continue in a JavaScript builtin to finish the functionality of a */
\
134
/* an TF-inlined version of builtin that has side-effects. */
\
135
/* */
\
136
/* The trampolines work as follows: */
\
137
/* 1. Trampoline restores input register values that */
\
138
/* the builtin expects from a BuiltinContinuationFrame. */
\
139
/* 2. Trampoline tears down BuiltinContinuationFrame. */
\
140
/* 3. Trampoline jumps to the builtin's address. */
\
141
/* 4. Builtin executes as if invoked by the frame above it. */
\
142
/* 5. When the builtin returns, execution resumes normally in the */
\
143
/* calling frame, processing any return result from the JavaScript */
\
144
/* builtin as if it had called the builtin directly. */
\
145
/* */
\
146
/* There are two variants of the stub that differ in their handling of a */
\
147
/* value returned by the next frame deeper on the stack. For LAZY deopts, */
\
148
/* the return value (e.g. rax on x64) is explicitly passed as an extra */
\
149
/* stack parameter to the JavaScript builtin by the "WithResult" */
\
150
/* trampoline variant. The plain variant is used in EAGER deopt contexts */
\
151
/* and has no such special handling. */
\
152
ASM(ContinueToCodeStubBuiltin) \
153
ASM(ContinueToCodeStubBuiltinWithResult) \
154
ASM(ContinueToJavaScriptBuiltin) \
155
ASM(ContinueToJavaScriptBuiltinWithResult) \
156
\
157
/* API callback handling */
\
158
API(HandleApiCall) \
159
API(HandleApiCallAsFunction) \
160
API(HandleApiCallAsConstructor) \
161
\
162
/* Adapters for Turbofan into runtime */
\
163
TFC(AllocateInNewSpace, Allocate, 1) \
164
TFC(AllocateInOldSpace, Allocate, 1) \
165
\
166
/* TurboFan support builtins */
\
167
TFS(CopyFastSmiOrObjectElements, kObject) \
168
TFC(GrowFastDoubleElements, GrowArrayElements, 1) \
169
TFC(GrowFastSmiOrObjectElements, GrowArrayElements, 1) \
170
TFC(NewArgumentsElements, NewArgumentsElements, 1) \
171
\
172
/* Debugger */
\
173
TFJ(DebugBreakTrampoline, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
174
ASM(FrameDropperTrampoline) \
175
ASM(HandleDebuggerStatement) \
176
\
177
/* Type conversions */
\
178
TFC(ToObject, TypeConversion, 1) \
179
TFC(ToBoolean, TypeConversion, 1) \
180
TFC(OrdinaryToPrimitive_Number, TypeConversion, 1) \
181
TFC(OrdinaryToPrimitive_String, TypeConversion, 1) \
182
TFC(NonPrimitiveToPrimitive_Default, TypeConversion, 1) \
183
TFC(NonPrimitiveToPrimitive_Number, TypeConversion, 1) \
184
TFC(NonPrimitiveToPrimitive_String, TypeConversion, 1) \
185
TFC(StringToNumber, TypeConversion, 1) \
186
TFC(ToName, TypeConversion, 1) \
187
TFC(NonNumberToNumber, TypeConversion, 1) \
188
TFC(NonNumberToNumeric, TypeConversion, 1) \
189
TFC(ToNumber, TypeConversion, 1) \
190
TFC(ToNumberConvertBigInt, TypeConversion, 1) \
191
TFC(ToNumeric, TypeConversion, 1) \
192
TFC(NumberToString, TypeConversion, 1) \
193
TFC(ToString, TypeConversion, 1) \
194
TFC(ToInteger, TypeConversion, 1) \
195
TFC(ToInteger_TruncateMinusZero, TypeConversion, 1) \
196
TFC(ToLength, TypeConversion, 1) \
197
TFC(Typeof, Typeof, 1) \
198
TFC(GetSuperConstructor, Typeof, 1) \
199
\
200
/* Type conversions continuations */
\
201
TFC(ToBooleanLazyDeoptContinuation, TypeConversionStackParameter, 1) \
202
\
203
/* Handlers */
\
204
TFH(KeyedLoadIC_PolymorphicName, LoadWithVector) \
205
TFH(KeyedLoadIC_Slow, LoadWithVector) \
206
TFH(KeyedStoreIC_Megamorphic, StoreWithVector) \
207
TFH(KeyedStoreIC_Slow, StoreWithVector) \
208
TFH(LoadGlobalIC_Slow, LoadWithVector) \
209
TFH(LoadIC_FunctionPrototype, LoadWithVector) \
210
TFH(LoadIC_Slow, LoadWithVector) \
211
TFH(LoadIC_StringLength, LoadWithVector) \
212
TFH(LoadIC_StringWrapperLength, LoadWithVector) \
213
TFH(LoadIC_Uninitialized, LoadWithVector) \
214
TFH(StoreGlobalIC_Slow, StoreWithVector) \
215
TFH(StoreIC_Uninitialized, StoreWithVector) \
216
TFH(StoreInArrayLiteralIC_Slow, StoreWithVector) \
217
TFH(KeyedLoadIC_SloppyArguments, LoadWithVector) \
218
TFH(LoadIndexedInterceptorIC, LoadWithVector) \
219
TFH(StoreInterceptorIC, StoreWithVector) \
220
TFH(KeyedStoreIC_SloppyArguments_Standard, StoreWithVector) \
221
TFH(KeyedStoreIC_SloppyArguments_GrowNoTransitionHandleCOW, StoreWithVector) \
222
TFH(KeyedStoreIC_SloppyArguments_NoTransitionIgnoreOOB, StoreWithVector) \
223
TFH(KeyedStoreIC_SloppyArguments_NoTransitionHandleCOW, StoreWithVector) \
224
TFH(StoreInArrayLiteralIC_Slow_Standard, StoreWithVector) \
225
TFH(StoreFastElementIC_Standard, StoreWithVector) \
226
TFH(StoreFastElementIC_GrowNoTransitionHandleCOW, StoreWithVector) \
227
TFH(StoreFastElementIC_NoTransitionIgnoreOOB, StoreWithVector) \
228
TFH(StoreFastElementIC_NoTransitionHandleCOW, StoreWithVector) \
229
TFH(StoreInArrayLiteralIC_Slow_GrowNoTransitionHandleCOW, StoreWithVector) \
230
TFH(StoreInArrayLiteralIC_Slow_NoTransitionIgnoreOOB, StoreWithVector) \
231
TFH(StoreInArrayLiteralIC_Slow_NoTransitionHandleCOW, StoreWithVector) \
232
TFH(KeyedStoreIC_Slow_Standard, StoreWithVector) \
233
TFH(KeyedStoreIC_Slow_GrowNoTransitionHandleCOW, StoreWithVector) \
234
TFH(KeyedStoreIC_Slow_NoTransitionIgnoreOOB, StoreWithVector) \
235
TFH(KeyedStoreIC_Slow_NoTransitionHandleCOW, StoreWithVector) \
236
TFH(ElementsTransitionAndStore_Standard, StoreTransition) \
237
TFH(ElementsTransitionAndStore_GrowNoTransitionHandleCOW, StoreTransition) \
238
TFH(ElementsTransitionAndStore_NoTransitionIgnoreOOB, StoreTransition) \
239
TFH(ElementsTransitionAndStore_NoTransitionHandleCOW, StoreTransition) \
240
\
241
/* Microtask helpers */
\
242
TFS(EnqueueMicrotask, kMicrotask) \
243
TFC(RunMicrotasks, RunMicrotasks, 1) \
244
\
245
/* Object property helpers */
\
246
TFS(HasProperty, kObject, kKey) \
247
TFS(DeleteProperty, kObject, kKey, kLanguageMode) \
248
\
249
/* Abort */
\
250
TFC(Abort, Abort, 1) \
251
TFC(AbortJS, Abort, 1) \
252
\
253
/* Built-in functions for Javascript */
\
254
/* Special internal builtins */
\
255
CPP(EmptyFunction) \
256
CPP(Illegal) \
257
CPP(StrictPoisonPillThrower) \
258
CPP(UnsupportedThrower) \
259
TFJ(ReturnReceiver, 0, kReceiver) \
260
\
261
/* Array */
\
262
TFC(ArrayConstructor, JSTrampoline, 1) \
263
TFC(ArrayConstructorImpl, ArrayConstructor, 1) \
264
TFC(ArrayNoArgumentConstructor_PackedSmi_DontOverride, \
265
ArrayNoArgumentConstructor, 1) \
266
TFC(ArrayNoArgumentConstructor_HoleySmi_DontOverride, \
267
ArrayNoArgumentConstructor, 1) \
268
TFC(ArrayNoArgumentConstructor_PackedSmi_DisableAllocationSites, \
269
ArrayNoArgumentConstructor, 1) \
270
TFC(ArrayNoArgumentConstructor_HoleySmi_DisableAllocationSites, \
271
ArrayNoArgumentConstructor, 1) \
272
TFC(ArrayNoArgumentConstructor_Packed_DisableAllocationSites, \
273
ArrayNoArgumentConstructor, 1) \
274
TFC(ArrayNoArgumentConstructor_Holey_DisableAllocationSites, \
275
ArrayNoArgumentConstructor, 1) \
276
TFC(ArrayNoArgumentConstructor_PackedDouble_DisableAllocationSites, \
277
ArrayNoArgumentConstructor, 1) \
278
TFC(ArrayNoArgumentConstructor_HoleyDouble_DisableAllocationSites, \
279
ArrayNoArgumentConstructor, 1) \
280
TFC(ArraySingleArgumentConstructor_PackedSmi_DontOverride, \
281
ArraySingleArgumentConstructor, 1) \
282
TFC(ArraySingleArgumentConstructor_HoleySmi_DontOverride, \
283
ArraySingleArgumentConstructor, 1) \
284
TFC(ArraySingleArgumentConstructor_PackedSmi_DisableAllocationSites, \
285
ArraySingleArgumentConstructor, 1) \
286
TFC(ArraySingleArgumentConstructor_HoleySmi_DisableAllocationSites, \
287
ArraySingleArgumentConstructor, 1) \
288
TFC(ArraySingleArgumentConstructor_Packed_DisableAllocationSites, \
289
ArraySingleArgumentConstructor, 1) \
290
TFC(ArraySingleArgumentConstructor_Holey_DisableAllocationSites, \
291
ArraySingleArgumentConstructor, 1) \
292
TFC(ArraySingleArgumentConstructor_PackedDouble_DisableAllocationSites, \
293
ArraySingleArgumentConstructor, 1) \
294
TFC(ArraySingleArgumentConstructor_HoleyDouble_DisableAllocationSites, \
295
ArraySingleArgumentConstructor, 1) \
296
TFC(ArrayNArgumentsConstructor, ArrayNArgumentsConstructor, 1) \
297
ASM(InternalArrayConstructor) \
298
ASM(InternalArrayConstructorImpl) \
299
TFC(InternalArrayNoArgumentConstructor_Packed, ArrayNoArgumentConstructor, \
300
1) \
301
TFC(InternalArrayNoArgumentConstructor_Holey, ArrayNoArgumentConstructor, 1) \
302
TFC(InternalArraySingleArgumentConstructor_Packed, \
303
ArraySingleArgumentConstructor, 1) \
304
TFC(InternalArraySingleArgumentConstructor_Holey, \
305
ArraySingleArgumentConstructor, 1) \
306
CPP(ArrayConcat) \
307
/* ES6 #sec-array.isarray */
\
308
TFJ(ArrayIsArray, 1, kReceiver, kArg) \
309
/* ES6 #sec-array.prototype.fill */
\
310
CPP(ArrayPrototypeFill) \
311
/* ES6 #sec-array.from */
\
312
TFJ(ArrayFrom, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
313
/* ES7 #sec-array.prototype.includes */
\
314
TFS(ArrayIncludesSmiOrObject, kElements, kSearchElement, kLength, \
315
kFromIndex) \
316
TFS(ArrayIncludesPackedDoubles, kElements, kSearchElement, kLength, \
317
kFromIndex) \
318
TFS(ArrayIncludesHoleyDoubles, kElements, kSearchElement, kLength, \
319
kFromIndex) \
320
TFJ(ArrayIncludes, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
321
/* ES6 #sec-array.prototype.indexof */
\
322
TFS(ArrayIndexOfSmiOrObject, kElements, kSearchElement, kLength, kFromIndex) \
323
TFS(ArrayIndexOfPackedDoubles, kElements, kSearchElement, kLength, \
324
kFromIndex) \
325
TFS(ArrayIndexOfHoleyDoubles, kElements, kSearchElement, kLength, \
326
kFromIndex) \
327
TFJ(ArrayIndexOf, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
328
/* ES6 #sec-array.prototype.pop */
\
329
CPP(ArrayPop) \
330
TFJ(ArrayPrototypePop, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
331
/* ES6 #sec-array.prototype.push */
\
332
CPP(ArrayPush) \
333
TFJ(ArrayPrototypePush, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
334
/* ES6 #sec-array.prototype.shift */
\
335
CPP(ArrayShift) \
336
TFJ(ArrayPrototypeShift, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
337
/* ES6 #sec-array.prototype.unshift */
\
338
CPP(ArrayUnshift) \
339
/* Support for Array.from and other array-copying idioms */
\
340
TFS(CloneFastJSArray, kSource) \
341
TFS(CloneFastJSArrayFillingHoles, kSource) \
342
TFS(ExtractFastJSArray, kSource, kBegin, kCount) \
343
/* ES6 #sec-array.prototype.every */
\
344
TFS(ArrayEveryLoopContinuation, kReceiver, kCallbackFn, kThisArg, kArray, \
345
kObject, kInitialK, kLength, kTo) \
346
TFJ(ArrayEveryLoopEagerDeoptContinuation, 4, kReceiver, kCallbackFn, \
347
kThisArg, kInitialK, kLength) \
348
TFJ(ArrayEveryLoopLazyDeoptContinuation, 5, kReceiver, kCallbackFn, \
349
kThisArg, kInitialK, kLength, kResult) \
350
TFJ(ArrayEvery, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
351
/* ES6 #sec-array.prototype.some */
\
352
TFS(ArraySomeLoopContinuation, kReceiver, kCallbackFn, kThisArg, kArray, \
353
kObject, kInitialK, kLength, kTo) \
354
TFJ(ArraySomeLoopEagerDeoptContinuation, 4, kReceiver, kCallbackFn, \
355
kThisArg, kInitialK, kLength) \
356
TFJ(ArraySomeLoopLazyDeoptContinuation, 5, kReceiver, kCallbackFn, kThisArg, \
357
kInitialK, kLength, kResult) \
358
TFJ(ArraySome, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
359
/* ES6 #sec-array.prototype.filter */
\
360
TFS(ArrayFilterLoopContinuation, kReceiver, kCallbackFn, kThisArg, kArray, \
361
kObject, kInitialK, kLength, kTo) \
362
TFJ(ArrayFilter, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
363
TFJ(ArrayFilterLoopEagerDeoptContinuation, 6, kReceiver, kCallbackFn, \
364
kThisArg, kArray, kInitialK, kLength, kTo) \
365
TFJ(ArrayFilterLoopLazyDeoptContinuation, 8, kReceiver, kCallbackFn, \
366
kThisArg, kArray, kInitialK, kLength, kValueK, kTo, kResult) \
367
/* ES6 #sec-array.prototype.foreach */
\
368
TFS(ArrayMapLoopContinuation, kReceiver, kCallbackFn, kThisArg, kArray, \
369
kObject, kInitialK, kLength, kTo) \
370
TFJ(ArrayMapLoopEagerDeoptContinuation, 5, kReceiver, kCallbackFn, kThisArg, \
371
kArray, kInitialK, kLength) \
372
TFJ(ArrayMapLoopLazyDeoptContinuation, 6, kReceiver, kCallbackFn, kThisArg, \
373
kArray, kInitialK, kLength, kResult) \
374
TFJ(ArrayMap, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
375
/* ES6 #sec-array.prototype.reduce */
\
376
TFS(ArrayReduceLoopContinuation, kReceiver, kCallbackFn, kThisArg, \
377
kAccumulator, kObject, kInitialK, kLength, kTo) \
378
TFJ(ArrayReducePreLoopEagerDeoptContinuation, 2, kReceiver, kCallbackFn, \
379
kLength) \
380
TFJ(ArrayReduceLoopEagerDeoptContinuation, 4, kReceiver, kCallbackFn, \
381
kInitialK, kLength, kAccumulator) \
382
TFJ(ArrayReduceLoopLazyDeoptContinuation, 4, kReceiver, kCallbackFn, \
383
kInitialK, kLength, kResult) \
384
TFJ(ArrayReduce, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
385
/* ES6 #sec-array.prototype.reduceRight */
\
386
TFS(ArrayReduceRightLoopContinuation, kReceiver, kCallbackFn, kThisArg, \
387
kAccumulator, kObject, kInitialK, kLength, kTo) \
388
TFJ(ArrayReduceRightPreLoopEagerDeoptContinuation, 2, kReceiver, \
389
kCallbackFn, kLength) \
390
TFJ(ArrayReduceRightLoopEagerDeoptContinuation, 4, kReceiver, kCallbackFn, \
391
kInitialK, kLength, kAccumulator) \
392
TFJ(ArrayReduceRightLoopLazyDeoptContinuation, 4, kReceiver, kCallbackFn, \
393
kInitialK, kLength, kResult) \
394
TFJ(ArrayReduceRight, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
395
/* ES6 #sec-array.prototype.entries */
\
396
TFJ(ArrayPrototypeEntries, 0, kReceiver) \
397
/* ES6 #sec-array.prototype.find */
\
398
TFS(ArrayFindLoopContinuation, kReceiver, kCallbackFn, kThisArg, kArray, \
399
kObject, kInitialK, kLength, kTo) \
400
TFJ(ArrayFindLoopEagerDeoptContinuation, 4, kReceiver, kCallbackFn, \
401
kThisArg, kInitialK, kLength) \
402
TFJ(ArrayFindLoopLazyDeoptContinuation, 5, kReceiver, kCallbackFn, kThisArg, \
403
kInitialK, kLength, kResult) \
404
TFJ(ArrayFindLoopAfterCallbackLazyDeoptContinuation, 6, kReceiver, \
405
kCallbackFn, kThisArg, kInitialK, kLength, kFoundValue, kIsFound) \
406
TFJ(ArrayPrototypeFind, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
407
/* ES6 #sec-array.prototype.findIndex */
\
408
TFS(ArrayFindIndexLoopContinuation, kReceiver, kCallbackFn, kThisArg, \
409
kArray, kObject, kInitialK, kLength, kTo) \
410
TFJ(ArrayFindIndexLoopEagerDeoptContinuation, 4, kReceiver, kCallbackFn, \
411
kThisArg, kInitialK, kLength) \
412
TFJ(ArrayFindIndexLoopLazyDeoptContinuation, 5, kReceiver, kCallbackFn, \
413
kThisArg, kInitialK, kLength, kResult) \
414
TFJ(ArrayFindIndexLoopAfterCallbackLazyDeoptContinuation, 6, kReceiver, \
415
kCallbackFn, kThisArg, kInitialK, kLength, kFoundValue, kIsFound) \
416
TFJ(ArrayPrototypeFindIndex, \
417
SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
418
/* ES6 #sec-array.prototype.keys */
\
419
TFJ(ArrayPrototypeKeys, 0, kReceiver) \
420
/* ES6 #sec-array.prototype.values */
\
421
TFJ(ArrayPrototypeValues, 0, kReceiver) \
422
/* ES6 #sec-%arrayiteratorprototype%.next */
\
423
TFJ(ArrayIteratorPrototypeNext, 0, kReceiver) \
424
/* https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray */
\
425
TFS(FlattenIntoArray, kTarget, kSource, kSourceLength, kStart, kDepth) \
426
TFS(FlatMapIntoArray, kTarget, kSource, kSourceLength, kStart, kDepth, \
427
kMapperFunction, kThisArg) \
428
/* https://tc39.github.io/proposal-flatMap/#sec-Array.prototype.flat */
\
429
TFJ(ArrayPrototypeFlat, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
430
/* https://tc39.github.io/proposal-flatMap/#sec-Array.prototype.flatMap */
\
431
TFJ(ArrayPrototypeFlatMap, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
432
\
433
/* ArrayBuffer */
\
434
/* ES #sec-arraybuffer-constructor */
\
435
CPP(ArrayBufferConstructor) \
436
CPP(ArrayBufferConstructor_DoNotInitialize) \
437
CPP(ArrayBufferPrototypeGetByteLength) \
438
CPP(ArrayBufferIsView) \
439
CPP(ArrayBufferPrototypeSlice) \
440
\
441
/* AsyncFunction */
\
442
TFS(AsyncFunctionEnter, kClosure, kReceiver) \
443
TFS(AsyncFunctionReject, kAsyncFunctionObject, kReason, kCanSuspend) \
444
TFS(AsyncFunctionResolve, kAsyncFunctionObject, kValue, kCanSuspend) \
445
TFC(AsyncFunctionLazyDeoptContinuation, AsyncFunctionStackParameter, 1) \
446
TFS(AsyncFunctionAwaitCaught, kAsyncFunctionObject, kValue) \
447
TFS(AsyncFunctionAwaitUncaught, kAsyncFunctionObject, kValue) \
448
TFJ(AsyncFunctionAwaitRejectClosure, 1, kReceiver, kSentError) \
449
TFJ(AsyncFunctionAwaitResolveClosure, 1, kReceiver, kSentValue) \
450
\
451
/* BigInt */
\
452
CPP(BigIntConstructor) \
453
CPP(BigIntAsUintN) \
454
CPP(BigIntAsIntN) \
455
CPP(BigIntPrototypeToLocaleString) \
456
CPP(BigIntPrototypeToString) \
457
CPP(BigIntPrototypeValueOf) \
458
\
459
/* Boolean */
\
460
/* ES #sec-boolean-constructor */
\
461
CPP(BooleanConstructor) \
462
/* ES6 #sec-boolean.prototype.tostring */
\
463
TFJ(BooleanPrototypeToString, 0, kReceiver) \
464
/* ES6 #sec-boolean.prototype.valueof */
\
465
TFJ(BooleanPrototypeValueOf, 0, kReceiver) \
466
\
467
/* CallSite */
\
468
CPP(CallSitePrototypeGetColumnNumber) \
469
CPP(CallSitePrototypeGetEvalOrigin) \
470
CPP(CallSitePrototypeGetFileName) \
471
CPP(CallSitePrototypeGetFunction) \
472
CPP(CallSitePrototypeGetFunctionName) \
473
CPP(CallSitePrototypeGetLineNumber) \
474
CPP(CallSitePrototypeGetMethodName) \
475
CPP(CallSitePrototypeGetPosition) \
476
CPP(CallSitePrototypeGetPromiseIndex) \
477
CPP(CallSitePrototypeGetScriptNameOrSourceURL) \
478
CPP(CallSitePrototypeGetThis) \
479
CPP(CallSitePrototypeGetTypeName) \
480
CPP(CallSitePrototypeIsAsync) \
481
CPP(CallSitePrototypeIsConstructor) \
482
CPP(CallSitePrototypeIsEval) \
483
CPP(CallSitePrototypeIsNative) \
484
CPP(CallSitePrototypeIsPromiseAll) \
485
CPP(CallSitePrototypeIsToplevel) \
486
CPP(CallSitePrototypeToString) \
487
\
488
/* Console */
\
489
CPP(ConsoleDebug) \
490
CPP(ConsoleError) \
491
CPP(ConsoleInfo) \
492
CPP(ConsoleLog) \
493
CPP(ConsoleWarn) \
494
CPP(ConsoleDir) \
495
CPP(ConsoleDirXml) \
496
CPP(ConsoleTable) \
497
CPP(ConsoleTrace) \
498
CPP(ConsoleGroup) \
499
CPP(ConsoleGroupCollapsed) \
500
CPP(ConsoleGroupEnd) \
501
CPP(ConsoleClear) \
502
CPP(ConsoleCount) \
503
CPP(ConsoleCountReset) \
504
CPP(ConsoleAssert) \
505
TFJ(FastConsoleAssert, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
506
CPP(ConsoleProfile) \
507
CPP(ConsoleProfileEnd) \
508
CPP(ConsoleTime) \
509
CPP(ConsoleTimeLog) \
510
CPP(ConsoleTimeEnd) \
511
CPP(ConsoleTimeStamp) \
512
CPP(ConsoleContext) \
513
\
514
/* DataView */
\
515
/* ES #sec-dataview-constructor */
\
516
CPP(DataViewConstructor) \
517
\
518
/* Date */
\
519
/* ES #sec-date-constructor */
\
520
CPP(DateConstructor) \
521
/* ES6 #sec-date.prototype.getdate */
\
522
TFJ(DatePrototypeGetDate, 0, kReceiver) \
523
/* ES6 #sec-date.prototype.getday */
\
524
TFJ(DatePrototypeGetDay, 0, kReceiver) \
525
/* ES6 #sec-date.prototype.getfullyear */
\
526
TFJ(DatePrototypeGetFullYear, 0, kReceiver) \
527
/* ES6 #sec-date.prototype.gethours */
\
528
TFJ(DatePrototypeGetHours, 0, kReceiver) \
529
/* ES6 #sec-date.prototype.getmilliseconds */
\
530
TFJ(DatePrototypeGetMilliseconds, 0, kReceiver) \
531
/* ES6 #sec-date.prototype.getminutes */
\
532
TFJ(DatePrototypeGetMinutes, 0, kReceiver) \
533
/* ES6 #sec-date.prototype.getmonth */
\
534
TFJ(DatePrototypeGetMonth, 0, kReceiver) \
535
/* ES6 #sec-date.prototype.getseconds */
\
536
TFJ(DatePrototypeGetSeconds, 0, kReceiver) \
537
/* ES6 #sec-date.prototype.gettime */
\
538
TFJ(DatePrototypeGetTime, 0, kReceiver) \
539
/* ES6 #sec-date.prototype.gettimezoneoffset */
\
540
TFJ(DatePrototypeGetTimezoneOffset, 0, kReceiver) \
541
/* ES6 #sec-date.prototype.getutcdate */
\
542
TFJ(DatePrototypeGetUTCDate, 0, kReceiver) \
543
/* ES6 #sec-date.prototype.getutcday */
\
544
TFJ(DatePrototypeGetUTCDay, 0, kReceiver) \
545
/* ES6 #sec-date.prototype.getutcfullyear */
\
546
TFJ(DatePrototypeGetUTCFullYear, 0, kReceiver) \
547
/* ES6 #sec-date.prototype.getutchours */
\
548
TFJ(DatePrototypeGetUTCHours, 0, kReceiver) \
549
/* ES6 #sec-date.prototype.getutcmilliseconds */
\
550
TFJ(DatePrototypeGetUTCMilliseconds, 0, kReceiver) \
551
/* ES6 #sec-date.prototype.getutcminutes */
\
552
TFJ(DatePrototypeGetUTCMinutes, 0, kReceiver) \
553
/* ES6 #sec-date.prototype.getutcmonth */
\
554
TFJ(DatePrototypeGetUTCMonth, 0, kReceiver) \
555
/* ES6 #sec-date.prototype.getutcseconds */
\
556
TFJ(DatePrototypeGetUTCSeconds, 0, kReceiver) \
557
/* ES6 #sec-date.prototype.valueof */
\
558
TFJ(DatePrototypeValueOf, 0, kReceiver) \
559
/* ES6 #sec-date.prototype-@@toprimitive */
\
560
TFJ(DatePrototypeToPrimitive, 1, kReceiver, kHint) \
561
CPP(DatePrototypeGetYear) \
562
CPP(DatePrototypeSetYear) \
563
CPP(DateNow) \
564
CPP(DateParse) \
565
CPP(DatePrototypeSetDate) \
566
CPP(DatePrototypeSetFullYear) \
567
CPP(DatePrototypeSetHours) \
568
CPP(DatePrototypeSetMilliseconds) \
569
CPP(DatePrototypeSetMinutes) \
570
CPP(DatePrototypeSetMonth) \
571
CPP(DatePrototypeSetSeconds) \
572
CPP(DatePrototypeSetTime) \
573
CPP(DatePrototypeSetUTCDate) \
574
CPP(DatePrototypeSetUTCFullYear) \
575
CPP(DatePrototypeSetUTCHours) \
576
CPP(DatePrototypeSetUTCMilliseconds) \
577
CPP(DatePrototypeSetUTCMinutes) \
578
CPP(DatePrototypeSetUTCMonth) \
579
CPP(DatePrototypeSetUTCSeconds) \
580
CPP(DatePrototypeToDateString) \
581
CPP(DatePrototypeToISOString) \
582
CPP(DatePrototypeToUTCString) \
583
CPP(DatePrototypeToString) \
584
CPP(DatePrototypeToTimeString) \
585
CPP(DatePrototypeToJson) \
586
CPP(DateUTC) \
587
\
588
/* Error */
\
589
CPP(ErrorConstructor) \
590
CPP(ErrorCaptureStackTrace) \
591
CPP(ErrorPrototypeToString) \
592
CPP(MakeError) \
593
CPP(MakeRangeError) \
594
CPP(MakeSyntaxError) \
595
CPP(MakeTypeError) \
596
CPP(MakeURIError) \
597
\
598
/* Function */
\
599
CPP(FunctionConstructor) \
600
ASM(FunctionPrototypeApply) \
601
CPP(FunctionPrototypeBind) \
602
/* ES6 #sec-function.prototype.bind */
\
603
TFJ(FastFunctionPrototypeBind, \
604
SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
605
ASM(FunctionPrototypeCall) \
606
/* ES6 #sec-function.prototype-@@hasinstance */
\
607
TFJ(FunctionPrototypeHasInstance, 1, kReceiver, kV) \
608
/* ES6 #sec-function.prototype.tostring */
\
609
CPP(FunctionPrototypeToString) \
610
\
611
/* Belongs to Objects but is a dependency of GeneratorPrototypeResume */
\
612
TFS(CreateIterResultObject, kValue, kDone) \
613
\
614
/* Generator and Async */
\
615
TFS(CreateGeneratorObject, kClosure, kReceiver) \
616
CPP(GeneratorFunctionConstructor) \
617
/* ES6 #sec-generator.prototype.next */
\
618
TFJ(GeneratorPrototypeNext, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
619
/* ES6 #sec-generator.prototype.return */
\
620
TFJ(GeneratorPrototypeReturn, \
621
SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
622
/* ES6 #sec-generator.prototype.throw */
\
623
TFJ(GeneratorPrototypeThrow, \
624
SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
625
CPP(AsyncFunctionConstructor) \
626
\
627
/* Global object */
\
628
CPP(GlobalDecodeURI) \
629
CPP(GlobalDecodeURIComponent) \
630
CPP(GlobalEncodeURI) \
631
CPP(GlobalEncodeURIComponent) \
632
CPP(GlobalEscape) \
633
CPP(GlobalUnescape) \
634
CPP(GlobalEval) \
635
/* ES6 #sec-isfinite-number */
\
636
TFJ(GlobalIsFinite, 1, kReceiver, kNumber) \
637
/* ES6 #sec-isnan-number */
\
638
TFJ(GlobalIsNaN, 1, kReceiver, kNumber) \
639
\
640
/* JSON */
\
641
CPP(JsonParse) \
642
CPP(JsonStringify) \
643
\
644
/* ICs */
\
645
TFH(LoadIC, LoadWithVector) \
646
TFH(LoadIC_Megamorphic, LoadWithVector) \
647
TFH(LoadIC_Noninlined, LoadWithVector) \
648
TFH(LoadICTrampoline, Load) \
649
TFH(LoadICTrampoline_Megamorphic, Load) \
650
TFH(KeyedLoadIC, LoadWithVector) \
651
TFH(KeyedLoadIC_Megamorphic, LoadWithVector) \
652
TFH(KeyedLoadICTrampoline, Load) \
653
TFH(KeyedLoadICTrampoline_Megamorphic, Load) \
654
TFH(StoreGlobalIC, StoreGlobalWithVector) \
655
TFH(StoreGlobalICTrampoline, StoreGlobal) \
656
TFH(StoreIC, StoreWithVector) \
657
TFH(StoreICTrampoline, Store) \
658
TFH(KeyedStoreIC, StoreWithVector) \
659
TFH(KeyedStoreICTrampoline, Store) \
660
TFH(StoreInArrayLiteralIC, StoreWithVector) \
661
TFH(LoadGlobalIC, LoadGlobalWithVector) \
662
TFH(LoadGlobalICInsideTypeof, LoadGlobalWithVector) \
663
TFH(LoadGlobalICTrampoline, LoadGlobal) \
664
TFH(LoadGlobalICInsideTypeofTrampoline, LoadGlobal) \
665
TFH(CloneObjectIC, CloneObjectWithVector) \
666
TFH(CloneObjectIC_Slow, CloneObjectWithVector) \
667
\
668
/* IterableToList */
\
669
/* ES #sec-iterabletolist */
\
670
TFS(IterableToList, kIterable, kIteratorFn) \
671
TFS(IterableToListWithSymbolLookup, kIterable) \
672
TFS(IterableToListMayPreserveHoles, kIterable, kIteratorFn) \
673
\
674
/* Map */
\
675
TFS(FindOrderedHashMapEntry, kTable, kKey) \
676
TFJ(MapConstructor, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
677
TFJ(MapPrototypeSet, 2, kReceiver, kKey, kValue) \
678
TFJ(MapPrototypeDelete, 1, kReceiver, kKey) \
679
TFJ(MapPrototypeGet, 1, kReceiver, kKey) \
680
TFJ(MapPrototypeHas, 1, kReceiver, kKey) \
681
CPP(MapPrototypeClear) \
682
/* ES #sec-map.prototype.entries */
\
683
TFJ(MapPrototypeEntries, 0, kReceiver) \
684
/* ES #sec-get-map.prototype.size */
\
685
TFJ(MapPrototypeGetSize, 0, kReceiver) \
686
/* ES #sec-map.prototype.forEach */
\
687
TFJ(MapPrototypeForEach, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
688
/* ES #sec-map.prototype.keys */
\
689
TFJ(MapPrototypeKeys, 0, kReceiver) \
690
/* ES #sec-map.prototype.values */
\
691
TFJ(MapPrototypeValues, 0, kReceiver) \
692
/* ES #sec-%mapiteratorprototype%.next */
\
693
TFJ(MapIteratorPrototypeNext, 0, kReceiver) \
694
TFS(MapIteratorToList, kSource) \
695
\
696
/* Math */
\
697
/* ES6 #sec-math.abs */
\
698
TFJ(MathAbs, 1, kReceiver, kX) \
699
/* ES6 #sec-math.acos */
\
700
TFJ(MathAcos, 1, kReceiver, kX) \
701
/* ES6 #sec-math.acosh */
\
702
TFJ(MathAcosh, 1, kReceiver, kX) \
703
/* ES6 #sec-math.asin */
\
704
TFJ(MathAsin, 1, kReceiver, kX) \
705
/* ES6 #sec-math.asinh */
\
706
TFJ(MathAsinh, 1, kReceiver, kX) \
707
/* ES6 #sec-math.atan */
\
708
TFJ(MathAtan, 1, kReceiver, kX) \
709
/* ES6 #sec-math.atanh */
\
710
TFJ(MathAtanh, 1, kReceiver, kX) \
711
/* ES6 #sec-math.atan2 */
\
712
TFJ(MathAtan2, 2, kReceiver, kY, kX) \
713
/* ES6 #sec-math.cbrt */
\
714
TFJ(MathCbrt, 1, kReceiver, kX) \
715
/* ES6 #sec-math.ceil */
\
716
TFJ(MathCeil, 1, kReceiver, kX) \
717
/* ES6 #sec-math.clz32 */
\
718
TFJ(MathClz32, 1, kReceiver, kX) \
719
/* ES6 #sec-math.cos */
\
720
TFJ(MathCos, 1, kReceiver, kX) \
721
/* ES6 #sec-math.cosh */
\
722
TFJ(MathCosh, 1, kReceiver, kX) \
723
/* ES6 #sec-math.exp */
\
724
TFJ(MathExp, 1, kReceiver, kX) \
725
/* ES6 #sec-math.expm1 */
\
726
TFJ(MathExpm1, 1, kReceiver, kX) \
727
/* ES6 #sec-math.floor */
\
728
TFJ(MathFloor, 1, kReceiver, kX) \
729
/* ES6 #sec-math.fround */
\
730
TFJ(MathFround, 1, kReceiver, kX) \
731
/* ES6 #sec-math.hypot */
\
732
CPP(MathHypot) \
733
/* ES6 #sec-math.imul */
\
734
TFJ(MathImul, 2, kReceiver, kX, kY) \
735
/* ES6 #sec-math.log */
\
736
TFJ(MathLog, 1, kReceiver, kX) \
737
/* ES6 #sec-math.log1p */
\
738
TFJ(MathLog1p, 1, kReceiver, kX) \
739
/* ES6 #sec-math.log10 */
\
740
TFJ(MathLog10, 1, kReceiver, kX) \
741
/* ES6 #sec-math.log2 */
\
742
TFJ(MathLog2, 1, kReceiver, kX) \
743
/* ES6 #sec-math.max */
\
744
TFJ(MathMax, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
745
/* ES6 #sec-math.min */
\
746
TFJ(MathMin, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
747
/* ES6 #sec-math.pow */
\
748
TFJ(MathPow, 2, kReceiver, kBase, kExponent) \
749
/* ES6 #sec-math.random */
\
750
TFJ(MathRandom, 0, kReceiver) \
751
/* ES6 #sec-math.round */
\
752
TFJ(MathRound, 1, kReceiver, kX) \
753
/* ES6 #sec-math.sign */
\
754
TFJ(MathSign, 1, kReceiver, kX) \
755
/* ES6 #sec-math.sin */
\
756
TFJ(MathSin, 1, kReceiver, kX) \
757
/* ES6 #sec-math.sinh */
\
758
TFJ(MathSinh, 1, kReceiver, kX) \
759
/* ES6 #sec-math.sqrt */
\
760
TFJ(MathTan, 1, kReceiver, kX) \
761
/* ES6 #sec-math.tan */
\
762
TFJ(MathTanh, 1, kReceiver, kX) \
763
/* ES6 #sec-math.tanh */
\
764
TFJ(MathSqrt, 1, kReceiver, kX) \
765
/* ES6 #sec-math.trunc */
\
766
TFJ(MathTrunc, 1, kReceiver, kX) \
767
\
768
/* Number */
\
769
TFC(AllocateHeapNumber, AllocateHeapNumber, 1) \
770
/* ES #sec-number-constructor */
\
771
TFJ(NumberConstructor, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
772
/* ES6 #sec-number.isfinite */
\
773
TFJ(NumberIsFinite, 1, kReceiver, kNumber) \
774
/* ES6 #sec-number.isinteger */
\
775
TFJ(NumberIsInteger, 1, kReceiver, kNumber) \
776
/* ES6 #sec-number.isnan */
\
777
TFJ(NumberIsNaN, 1, kReceiver, kNumber) \
778
/* ES6 #sec-number.issafeinteger */
\
779
TFJ(NumberIsSafeInteger, 1, kReceiver, kNumber) \
780
/* ES6 #sec-number.parsefloat */
\
781
TFJ(NumberParseFloat, 1, kReceiver, kString) \
782
/* ES6 #sec-number.parseint */
\
783
TFJ(NumberParseInt, 2, kReceiver, kString, kRadix) \
784
TFS(ParseInt, kString, kRadix) \
785
CPP(NumberPrototypeToExponential) \
786
CPP(NumberPrototypeToFixed) \
787
CPP(NumberPrototypeToLocaleString) \
788
CPP(NumberPrototypeToPrecision) \
789
CPP(NumberPrototypeToString) \
790
/* ES6 #sec-number.prototype.valueof */
\
791
TFJ(NumberPrototypeValueOf, 0, kReceiver) \
792
TFC(Add, BinaryOp, 1) \
793
TFC(Subtract, BinaryOp, 1) \
794
TFC(Multiply, BinaryOp, 1) \
795
TFC(Divide, BinaryOp, 1) \
796
TFC(Modulus, BinaryOp, 1) \
797
TFC(Exponentiate, BinaryOp, 1) \
798
TFC(BitwiseAnd, BinaryOp, 1) \
799
TFC(BitwiseOr, BinaryOp, 1) \
800
TFC(BitwiseXor, BinaryOp, 1) \
801
TFC(ShiftLeft, BinaryOp, 1) \
802
TFC(ShiftRight, BinaryOp, 1) \
803
TFC(ShiftRightLogical, BinaryOp, 1) \
804
TFC(LessThan, Compare, 1) \
805
TFC(LessThanOrEqual, Compare, 1) \
806
TFC(GreaterThan, Compare, 1) \
807
TFC(GreaterThanOrEqual, Compare, 1) \
808
TFC(Equal, Compare, 1) \
809
TFC(SameValue, Compare, 1) \
810
TFC(StrictEqual, Compare, 1) \
811
TFS(BitwiseNot, kValue) \
812
TFS(Decrement, kValue) \
813
TFS(Increment, kValue) \
814
TFS(Negate, kValue) \
815
\
816
/* Object */
\
817
/* ES #sec-object-constructor */
\
818
TFJ(ObjectConstructor, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
819
TFJ(ObjectAssign, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
820
/* ES #sec-object.create */
\
821
TFJ(ObjectCreate, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
822
TFS(CreateObjectWithoutProperties, kPrototypeArg) \
823
CPP(ObjectDefineGetter) \
824
CPP(ObjectDefineProperties) \
825
CPP(ObjectDefineProperty) \
826
CPP(ObjectDefineSetter) \
827
TFJ(ObjectEntries, 1, kReceiver, kObject) \
828
CPP(ObjectFreeze) \
829
TFJ(ObjectGetOwnPropertyDescriptor, \
830
SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
831
CPP(ObjectGetOwnPropertyDescriptors) \
832
TFJ(ObjectGetOwnPropertyNames, 1, kReceiver, kObject) \
833
CPP(ObjectGetOwnPropertySymbols) \
834
CPP(ObjectGetPrototypeOf) \
835
CPP(ObjectSetPrototypeOf) \
836
TFJ(ObjectIs, 2, kReceiver, kLeft, kRight) \
837
CPP(ObjectIsExtensible) \
838
CPP(ObjectIsFrozen) \
839
CPP(ObjectIsSealed) \
840
TFJ(ObjectKeys, 1, kReceiver, kObject) \
841
CPP(ObjectLookupGetter) \
842
CPP(ObjectLookupSetter) \
843
CPP(ObjectPreventExtensions) \
844
/* ES6 #sec-object.prototype.tostring */
\
845
TFJ(ObjectPrototypeToString, 0, kReceiver) \
846
/* ES6 #sec-object.prototype.valueof */
\
847
TFJ(ObjectPrototypeValueOf, 0, kReceiver) \
848
/* ES6 #sec-object.prototype.hasownproperty */
\
849
TFJ(ObjectPrototypeHasOwnProperty, 1, kReceiver, kKey) \
850
TFJ(ObjectPrototypeIsPrototypeOf, 1, kReceiver, kValue) \
851
CPP(ObjectPrototypePropertyIsEnumerable) \
852
CPP(ObjectPrototypeGetProto) \
853
CPP(ObjectPrototypeSetProto) \
854
/* ES #sec-object.prototype.tolocalestring */
\
855
TFJ(ObjectPrototypeToLocaleString, 0, kReceiver) \
856
CPP(ObjectSeal) \
857
TFS(ObjectToString, kReceiver) \
858
TFJ(ObjectValues, 1, kReceiver, kObject) \
859
\
860
/* instanceof */
\
861
TFC(OrdinaryHasInstance, Compare, 1) \
862
TFC(InstanceOf, Compare, 1) \
863
\
864
/* for-in */
\
865
TFS(ForInEnumerate, kReceiver) \
866
TFS(ForInFilter, kKey, kObject) \
867
\
868
/* Promise */
\
869
/* ES #sec-fulfillpromise */
\
870
TFS(FulfillPromise, kPromise, kValue) \
871
/* ES #sec-rejectpromise */
\
872
TFS(RejectPromise, kPromise, kReason, kDebugEvent) \
873
/* ES #sec-promise-resolve-functions */
\
874
/* Starting at step 6 of "Promise Resolve Functions" */
\
875
TFS(ResolvePromise, kPromise, kResolution) \
876
/* ES #sec-promise-reject-functions */
\
877
TFJ(PromiseCapabilityDefaultReject, 1, kReceiver, kReason) \
878
/* ES #sec-promise-resolve-functions */
\
879
TFJ(PromiseCapabilityDefaultResolve, 1, kReceiver, kResolution) \
880
/* ES6 #sec-getcapabilitiesexecutor-functions */
\
881
TFJ(PromiseGetCapabilitiesExecutor, 2, kReceiver, kResolve, kReject) \
882
/* ES6 #sec-newpromisecapability */
\
883
TFS(NewPromiseCapability, kConstructor, kDebugEvent) \
884
TFJ(PromiseConstructorLazyDeoptContinuation, 4, kReceiver, kPromise, \
885
kReject, kException, kResult) \
886
/* ES6 #sec-promise-executor */
\
887
TFJ(PromiseConstructor, 1, kReceiver, kExecutor) \
888
CPP(IsPromise) \
889
/* ES #sec-promise.prototype.then */
\
890
TFJ(PromisePrototypeThen, 2, kReceiver, kOnFulfilled, kOnRejected) \
891
/* ES #sec-performpromisethen */
\
892
TFS(PerformPromiseThen, kPromise, kOnFulfilled, kOnRejected, kResultPromise) \
893
/* ES #sec-promise.prototype.catch */
\
894
TFJ(PromisePrototypeCatch, 1, kReceiver, kOnRejected) \
895
/* ES #sec-promisereactionjob */
\
896
TFS(PromiseRejectReactionJob, kReason, kHandler, kPromiseOrCapability) \
897
TFS(PromiseFulfillReactionJob, kValue, kHandler, kPromiseOrCapability) \
898
/* ES #sec-promiseresolvethenablejob */
\
899
TFS(PromiseResolveThenableJob, kPromiseToResolve, kThenable, kThen) \
900
/* ES #sec-promise.resolve */
\
901
TFJ(PromiseResolveTrampoline, 1, kReceiver, kValue) \
902
/* ES #sec-promise-resolve */
\
903
TFS(PromiseResolve, kConstructor, kValue) \
904
/* ES #sec-promise.reject */
\
905
TFJ(PromiseReject, 1, kReceiver, kReason) \
906
TFJ(PromisePrototypeFinally, 1, kReceiver, kOnFinally) \
907
TFJ(PromiseThenFinally, 1, kReceiver, kValue) \
908
TFJ(PromiseCatchFinally, 1, kReceiver, kReason) \
909
TFJ(PromiseValueThunkFinally, 0, kReceiver) \
910
TFJ(PromiseThrowerFinally, 0, kReceiver) \
911
/* ES #sec-promise.all */
\
912
TFJ(PromiseAll, 1, kReceiver, kIterable) \
913
TFJ(PromiseAllResolveElementClosure, 1, kReceiver, kValue) \
914
/* ES #sec-promise.race */
\
915
TFJ(PromiseRace, 1, kReceiver, kIterable) \
916
/* V8 Extras: v8.createPromise(parent) */
\
917
TFJ(PromiseInternalConstructor, 1, kReceiver, kParent) \
918
/* V8 Extras: v8.rejectPromise(promise, reason) */
\
919
TFJ(PromiseInternalReject, 2, kReceiver, kPromise, kReason) \
920
/* V8 Extras: v8.resolvePromise(promise, resolution) */
\
921
TFJ(PromiseInternalResolve, 2, kReceiver, kPromise, kResolution) \
922
\
923
/* Proxy */
\
924
TFJ(ProxyConstructor, 2, kReceiver, kTarget, kHandler) \
925
TFJ(ProxyRevocable, 2, kReceiver, kTarget, kHandler) \
926
TFJ(ProxyRevoke, 0, kReceiver) \
927
TFS(ProxyGetProperty, kProxy, kName, kReceiverValue, kOnNonExistent) \
928
TFS(ProxyHasProperty, kProxy, kName) \
929
TFS(ProxySetProperty, kProxy, kName, kValue, kReceiverValue, kLanguageMode) \
930
\
931
/* Reflect */
\
932
ASM(ReflectApply) \
933
ASM(ReflectConstruct) \
934
CPP(ReflectDefineProperty) \
935
CPP(ReflectDeleteProperty) \
936
CPP(ReflectGet) \
937
CPP(ReflectGetOwnPropertyDescriptor) \
938
CPP(ReflectGetPrototypeOf) \
939
TFJ(ReflectHas, 2, kReceiver, kTarget, kKey) \
940
CPP(ReflectIsExtensible) \
941
CPP(ReflectOwnKeys) \
942
CPP(ReflectPreventExtensions) \
943
CPP(ReflectSet) \
944
CPP(ReflectSetPrototypeOf) \
945
\
946
/* RegExp */
\
947
CPP(RegExpCapture1Getter) \
948
CPP(RegExpCapture2Getter) \
949
CPP(RegExpCapture3Getter) \
950
CPP(RegExpCapture4Getter) \
951
CPP(RegExpCapture5Getter) \
952
CPP(RegExpCapture6Getter) \
953
CPP(RegExpCapture7Getter) \
954
CPP(RegExpCapture8Getter) \
955
CPP(RegExpCapture9Getter) \
956
/* ES #sec-regexp-pattern-flags */
\
957
TFJ(RegExpConstructor, 2, kReceiver, kPattern, kFlags) \
958
TFJ(RegExpInternalMatch, 2, kReceiver, kRegExp, kString) \
959
CPP(RegExpInputGetter) \
960
CPP(RegExpInputSetter) \
961
CPP(RegExpLastMatchGetter) \
962
CPP(RegExpLastParenGetter) \
963
CPP(RegExpLeftContextGetter) \
964
/* ES #sec-regexp.prototype.compile */
\
965
TFJ(RegExpPrototypeCompile, 2, kReceiver, kPattern, kFlags) \
966
/* ES #sec-regexp.prototype.exec */
\
967
TFJ(RegExpPrototypeExec, 1, kReceiver, kString) \
968
/* ES #sec-get-regexp.prototype.dotAll */
\
969
TFJ(RegExpPrototypeDotAllGetter, 0, kReceiver) \
970
/* ES #sec-get-regexp.prototype.flags */
\
971
TFJ(RegExpPrototypeFlagsGetter, 0, kReceiver) \
972
/* ES #sec-get-regexp.prototype.global */
\
973
TFJ(RegExpPrototypeGlobalGetter, 0, kReceiver) \
974
/* ES #sec-get-regexp.prototype.ignorecase */
\
975
TFJ(RegExpPrototypeIgnoreCaseGetter, 0, kReceiver) \
976
/* ES #sec-regexp.prototype-@@match */
\
977
TFJ(RegExpPrototypeMatch, 1, kReceiver, kString) \
978
/* https://tc39.github.io/proposal-string-matchall/ */
\
979
TFJ(RegExpPrototypeMatchAll, 1, kReceiver, kString) \
980
/* ES #sec-get-regexp.prototype.multiline */
\
981
TFJ(RegExpPrototypeMultilineGetter, 0, kReceiver) \
982
/* ES #sec-regexp.prototype-@@search */
\
983
TFJ(RegExpPrototypeSearch, 1, kReceiver, kString) \
984
/* ES #sec-get-regexp.prototype.source */
\
985
TFJ(RegExpPrototypeSourceGetter, 0, kReceiver) \
986
/* ES #sec-get-regexp.prototype.sticky */
\
987
TFJ(RegExpPrototypeStickyGetter, 0, kReceiver) \
988
/* ES #sec-regexp.prototype.test */
\
989
TFJ(RegExpPrototypeTest, 1, kReceiver, kString) \
990
TFS(RegExpPrototypeTestFast, kReceiver, kString) \
991
CPP(RegExpPrototypeToString) \
992
/* ES #sec-get-regexp.prototype.unicode */
\
993
TFJ(RegExpPrototypeUnicodeGetter, 0, kReceiver) \
994
CPP(RegExpRightContextGetter) \
995
\
996
/* ES #sec-regexp.prototype-@@replace */
\
997
TFJ(RegExpPrototypeReplace, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
998
/* ES #sec-regexp.prototype-@@split */
\
999
TFJ(RegExpPrototypeSplit, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1000
/* RegExp helpers */
\
1001
TFS(RegExpExecAtom, kRegExp, kString, kLastIndex, kMatchInfo) \
1002
TFS(RegExpExecInternal, kRegExp, kString, kLastIndex, kMatchInfo) \
1003
TFS(RegExpMatchFast, kReceiver, kPattern) \
1004
TFS(RegExpPrototypeExecSlow, kReceiver, kString) \
1005
TFS(RegExpReplace, kRegExp, kString, kReplaceValue) \
1006
TFS(RegExpSearchFast, kReceiver, kPattern) \
1007
TFS(RegExpSplit, kRegExp, kString, kLimit) \
1008
\
1009
/* RegExp String Iterator */
\
1010
/* https://tc39.github.io/proposal-string-matchall/ */
\
1011
TFJ(RegExpStringIteratorPrototypeNext, 0, kReceiver) \
1012
\
1013
/* Set */
\
1014
TFJ(SetConstructor, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1015
TFJ(SetPrototypeHas, 1, kReceiver, kKey) \
1016
TFJ(SetPrototypeAdd, 1, kReceiver, kKey) \
1017
TFJ(SetPrototypeDelete, 1, kReceiver, kKey) \
1018
CPP(SetPrototypeClear) \
1019
/* ES #sec-set.prototype.entries */
\
1020
TFJ(SetPrototypeEntries, 0, kReceiver) \
1021
/* ES #sec-get-set.prototype.size */
\
1022
TFJ(SetPrototypeGetSize, 0, kReceiver) \
1023
/* ES #sec-set.prototype.foreach */
\
1024
TFJ(SetPrototypeForEach, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1025
/* ES #sec-set.prototype.values */
\
1026
TFJ(SetPrototypeValues, 0, kReceiver) \
1027
/* ES #sec-%setiteratorprototype%.next */
\
1028
TFJ(SetIteratorPrototypeNext, 0, kReceiver) \
1029
TFS(SetOrSetIteratorToList, kSource) \
1030
\
1031
/* SharedArrayBuffer */
\
1032
CPP(SharedArrayBufferPrototypeGetByteLength) \
1033
CPP(SharedArrayBufferPrototypeSlice) \
1034
TFJ(AtomicsLoad, 2, kReceiver, kArray, kIndex) \
1035
TFJ(AtomicsStore, 3, kReceiver, kArray, kIndex, kValue) \
1036
TFJ(AtomicsExchange, 3, kReceiver, kArray, kIndex, kValue) \
1037
TFJ(AtomicsCompareExchange, 4, kReceiver, kArray, kIndex, kOldValue, \
1038
kNewValue) \
1039
TFJ(AtomicsAdd, 3, kReceiver, kArray, kIndex, kValue) \
1040
TFJ(AtomicsSub, 3, kReceiver, kArray, kIndex, kValue) \
1041
TFJ(AtomicsAnd, 3, kReceiver, kArray, kIndex, kValue) \
1042
TFJ(AtomicsOr, 3, kReceiver, kArray, kIndex, kValue) \
1043
TFJ(AtomicsXor, 3, kReceiver, kArray, kIndex, kValue) \
1044
CPP(AtomicsNotify) \
1045
CPP(AtomicsIsLockFree) \
1046
CPP(AtomicsWait) \
1047
CPP(AtomicsWake) \
1048
\
1049
/* String */
\
1050
/* ES #sec-string-constructor */
\
1051
TFJ(StringConstructor, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1052
/* ES #sec-string.fromcodepoint */
\
1053
CPP(StringFromCodePoint) \
1054
/* ES6 #sec-string.fromcharcode */
\
1055
TFJ(StringFromCharCode, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1056
/* ES6 #sec-string.prototype.anchor */
\
1057
TFJ(StringPrototypeAnchor, 1, kReceiver, kValue) \
1058
/* ES6 #sec-string.prototype.big */
\
1059
TFJ(StringPrototypeBig, 0, kReceiver) \
1060
/* ES6 #sec-string.prototype.blink */
\
1061
TFJ(StringPrototypeBlink, 0, kReceiver) \
1062
/* ES6 #sec-string.prototype.bold */
\
1063
TFJ(StringPrototypeBold, 0, kReceiver) \
1064
/* ES6 #sec-string.prototype.charat */
\
1065
TFJ(StringPrototypeCharAt, 1, kReceiver, kPosition) \
1066
/* ES6 #sec-string.prototype.charcodeat */
\
1067
TFJ(StringPrototypeCharCodeAt, 1, kReceiver, kPosition) \
1068
/* ES6 #sec-string.prototype.codepointat */
\
1069
TFJ(StringPrototypeCodePointAt, 1, kReceiver, kPosition) \
1070
/* ES6 #sec-string.prototype.concat */
\
1071
TFJ(StringPrototypeConcat, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1072
/* ES6 #sec-string.prototype.endswith */
\
1073
CPP(StringPrototypeEndsWith) \
1074
/* ES6 #sec-string.prototype.fontcolor */
\
1075
TFJ(StringPrototypeFontcolor, 1, kReceiver, kValue) \
1076
/* ES6 #sec-string.prototype.fontsize */
\
1077
TFJ(StringPrototypeFontsize, 1, kReceiver, kValue) \
1078
/* ES6 #sec-string.prototype.fixed */
\
1079
TFJ(StringPrototypeFixed, 0, kReceiver) \
1080
/* ES6 #sec-string.prototype.includes */
\
1081
TFJ(StringPrototypeIncludes, \
1082
SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1083
/* ES6 #sec-string.prototype.indexof */
\
1084
TFJ(StringPrototypeIndexOf, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1085
/* ES6 #sec-string.prototype.italics */
\
1086
TFJ(StringPrototypeItalics, 0, kReceiver) \
1087
/* ES6 #sec-string.prototype.lastindexof */
\
1088
CPP(StringPrototypeLastIndexOf) \
1089
/* ES6 #sec-string.prototype.link */
\
1090
TFJ(StringPrototypeLink, 1, kReceiver, kValue) \
1091
/* ES6 #sec-string.prototype.match */
\
1092
TFJ(StringPrototypeMatch, 1, kReceiver, kRegexp) \
1093
/* ES #sec-string.prototype.matchAll */
\
1094
TFJ(StringPrototypeMatchAll, 1, kReceiver, kRegexp) \
1095
/* ES6 #sec-string.prototype.localecompare */
\
1096
CPP(StringPrototypeLocaleCompare) \
1097
/* ES6 #sec-string.prototype.padEnd */
\
1098
TFJ(StringPrototypePadEnd, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1099
/* ES6 #sec-string.prototype.padStart */
\
1100
TFJ(StringPrototypePadStart, \
1101
SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1102
/* ES6 #sec-string.prototype.repeat */
\
1103
TFJ(StringPrototypeRepeat, 1, kReceiver, kCount) \
1104
/* ES6 #sec-string.prototype.replace */
\
1105
TFJ(StringPrototypeReplace, 2, kReceiver, kSearch, kReplace) \
1106
/* ES6 #sec-string.prototype.search */
\
1107
TFJ(StringPrototypeSearch, 1, kReceiver, kRegexp) \
1108
/* ES6 #sec-string.prototype.slice */
\
1109
TFJ(StringPrototypeSlice, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1110
/* ES6 #sec-string.prototype.small */
\
1111
TFJ(StringPrototypeSmall, 0, kReceiver) \
1112
/* ES6 #sec-string.prototype.split */
\
1113
TFJ(StringPrototypeSplit, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1114
/* ES6 #sec-string.prototype.strike */
\
1115
TFJ(StringPrototypeStrike, 0, kReceiver) \
1116
/* ES6 #sec-string.prototype.sub */
\
1117
TFJ(StringPrototypeSub, 0, kReceiver) \
1118
/* ES6 #sec-string.prototype.substr */
\
1119
TFJ(StringPrototypeSubstr, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1120
/* ES6 #sec-string.prototype.substring */
\
1121
TFJ(StringPrototypeSubstring, \
1122
SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1123
/* ES6 #sec-string.prototype.sup */
\
1124
TFJ(StringPrototypeSup, 0, kReceiver) \
1125
/* ES6 #sec-string.prototype.startswith */
\
1126
CPP(StringPrototypeStartsWith) \
1127
/* ES6 #sec-string.prototype.tostring */
\
1128
TFJ(StringPrototypeToString, 0, kReceiver) \
1129
TFJ(StringPrototypeTrim, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1130
TFJ(StringPrototypeTrimEnd, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1131
TFJ(StringPrototypeTrimStart, \
1132
SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1133
/* ES6 #sec-string.prototype.valueof */
\
1134
TFJ(StringPrototypeValueOf, 0, kReceiver) \
1135
/* ES6 #sec-string.raw */
\
1136
CPP(StringRaw) \
1137
/* ES6 #sec-string.prototype-@@iterator */
\
1138
TFJ(StringPrototypeIterator, 0, kReceiver) \
1139
\
1140
/* StringIterator */
\
1141
/* ES6 #sec-%stringiteratorprototype%.next */
\
1142
TFJ(StringIteratorPrototypeNext, 0, kReceiver) \
1143
TFS(StringToList, kSource) \
1144
\
1145
/* Symbol */
\
1146
/* ES #sec-symbol-constructor */
\
1147
CPP(SymbolConstructor) \
1148
/* ES6 #sec-symbol.for */
\
1149
CPP(SymbolFor) \
1150
/* ES6 #sec-symbol.keyfor */
\
1151
CPP(SymbolKeyFor) \
1152
/* ES #sec-symbol.prototype.description */
\
1153
TFJ(SymbolPrototypeDescriptionGetter, 0, kReceiver) \
1154
/* ES6 #sec-symbol.prototype-@@toprimitive */
\
1155
TFJ(SymbolPrototypeToPrimitive, 1, kReceiver, kHint) \
1156
/* ES6 #sec-symbol.prototype.tostring */
\
1157
TFJ(SymbolPrototypeToString, 0, kReceiver) \
1158
/* ES6 #sec-symbol.prototype.valueof */
\
1159
TFJ(SymbolPrototypeValueOf, 0, kReceiver) \
1160
\
1161
/* TypedArray */
\
1162
TFS(TypedArrayInitialize, kHolder, kLength, kElementSize, kInitialize, \
1163
kBufferConstructor) \
1164
TFS(TypedArrayInitializeWithBuffer, kHolder, kLength, kBuffer, kElementSize, \
1165
kByteOffset) \
1166
/* ES #sec-typedarray-constructors */
\
1167
TFS(CreateTypedArray, kTarget, kNewTarget, kArg1, kArg2, kArg3) \
1168
TFJ(TypedArrayBaseConstructor, 0, kReceiver) \
1169
TFJ(GenericConstructorLazyDeoptContinuation, 1, kReceiver, kResult) \
1170
TFJ(TypedArrayConstructor, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1171
CPP(TypedArrayPrototypeBuffer) \
1172
/* ES6 #sec-get-%typedarray%.prototype.bytelength */
\
1173
TFJ(TypedArrayPrototypeByteLength, 0, kReceiver) \
1174
/* ES6 #sec-get-%typedarray%.prototype.byteoffset */
\
1175
TFJ(TypedArrayPrototypeByteOffset, 0, kReceiver) \
1176
/* ES6 #sec-get-%typedarray%.prototype.length */
\
1177
TFJ(TypedArrayPrototypeLength, 0, kReceiver) \
1178
/* ES6 #sec-%typedarray%.prototype.entries */
\
1179
TFJ(TypedArrayPrototypeEntries, 0, kReceiver) \
1180
/* ES6 #sec-%typedarray%.prototype.keys */
\
1181
TFJ(TypedArrayPrototypeKeys, 0, kReceiver) \
1182
/* ES6 #sec-%typedarray%.prototype.values */
\
1183
TFJ(TypedArrayPrototypeValues, 0, kReceiver) \
1184
/* ES6 #sec-%typedarray%.prototype.copywithin */
\
1185
CPP(TypedArrayPrototypeCopyWithin) \
1186
/* ES6 #sec-%typedarray%.prototype.fill */
\
1187
CPP(TypedArrayPrototypeFill) \
1188
/* ES6 #sec-%typedarray%.prototype.filter */
\
1189
TFJ(TypedArrayPrototypeFilter, \
1190
SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1191
/* ES6 %TypedArray%.prototype.find */
\
1192
TFJ(TypedArrayPrototypeFind, \
1193
SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1194
/* ES6 %TypedArray%.prototype.findIndex */
\
1195
TFJ(TypedArrayPrototypeFindIndex, \
1196
SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1197
/* ES7 #sec-%typedarray%.prototype.includes */
\
1198
CPP(TypedArrayPrototypeIncludes) \
1199
/* ES6 #sec-%typedarray%.prototype.indexof */
\
1200
CPP(TypedArrayPrototypeIndexOf) \
1201
/* ES6 #sec-%typedarray%.prototype.lastindexof */
\
1202
CPP(TypedArrayPrototypeLastIndexOf) \
1203
/* ES6 #sec-%typedarray%.prototype.reverse */
\
1204
CPP(TypedArrayPrototypeReverse) \
1205
/* ES6 %TypedArray%.prototype.set */
\
1206
TFJ(TypedArrayPrototypeSet, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1207
/* ES6 #sec-%typedarray%.prototype.slice */
\
1208
TFJ(TypedArrayPrototypeSlice, \
1209
SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1210
/* ES6 %TypedArray%.prototype.subarray */
\
1211
TFJ(TypedArrayPrototypeSubArray, \
1212
SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1213
/* ES6 #sec-get-%typedarray%.prototype-@@tostringtag */
\
1214
TFJ(TypedArrayPrototypeToStringTag, 0, kReceiver) \
1215
/* ES6 %TypedArray%.prototype.every */
\
1216
TFJ(TypedArrayPrototypeEvery, \
1217
SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1218
/* ES6 %TypedArray%.prototype.some */
\
1219
TFJ(TypedArrayPrototypeSome, \
1220
SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1221
/* ES6 %TypedArray%.prototype.reduce */
\
1222
TFJ(TypedArrayPrototypeReduce, \
1223
SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1224
/* ES6 %TypedArray%.prototype.reduceRight */
\
1225
TFJ(TypedArrayPrototypeReduceRight, \
1226
SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1227
/* ES6 %TypedArray%.prototype.map */
\
1228
TFJ(TypedArrayPrototypeMap, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1229
/* ES6 %TypedArray%.prototype.forEach */
\
1230
TFJ(TypedArrayPrototypeForEach, \
1231
SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1232
/* ES6 %TypedArray%.of */
\
1233
TFJ(TypedArrayOf, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1234
/* ES6 %TypedArray%.from */
\
1235
TFJ(TypedArrayFrom, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1236
\
1237
/* Wasm */
\
1238
ASM(WasmCompileLazy) \
1239
TFC(WasmAllocateHeapNumber, AllocateHeapNumber, 1) \
1240
TFC(WasmAtomicWake, WasmAtomicWake, 1) \
1241
TFC(WasmI32AtomicWait, WasmI32AtomicWait, 1) \
1242
TFC(WasmCallJavaScript, CallTrampoline, 1) \
1243
TFC(WasmMemoryGrow, WasmMemoryGrow, 1) \
1244
TFC(WasmRecordWrite, RecordWrite, 1) \
1245
TFC(WasmStackGuard, NoContext, 1) \
1246
TFC(WasmToNumber, TypeConversion, 1) \
1247
TFC(WasmThrow, WasmThrow, 1) \
1248
TFS(ThrowWasmTrapUnreachable) \
1249
TFS(ThrowWasmTrapMemOutOfBounds) \
1250
TFS(ThrowWasmTrapUnalignedAccess) \
1251
TFS(ThrowWasmTrapDivByZero) \
1252
TFS(ThrowWasmTrapDivUnrepresentable) \
1253
TFS(ThrowWasmTrapRemByZero) \
1254
TFS(ThrowWasmTrapFloatUnrepresentable) \
1255
TFS(ThrowWasmTrapFuncInvalid) \
1256
TFS(ThrowWasmTrapFuncSigMismatch) \
1257
\
1258
/* WeakMap */
\
1259
TFJ(WeakMapConstructor, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1260
TFS(WeakMapLookupHashIndex, kTable, kKey) \
1261
TFJ(WeakMapGet, 1, kReceiver, kKey) \
1262
TFJ(WeakMapHas, 1, kReceiver, kKey) \
1263
TFJ(WeakMapPrototypeSet, 2, kReceiver, kKey, kValue) \
1264
TFJ(WeakMapPrototypeDelete, 1, kReceiver, kKey) \
1265
\
1266
/* WeakSet */
\
1267
TFJ(WeakSetConstructor, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1268
TFJ(WeakSetHas, 1, kReceiver, kKey) \
1269
TFJ(WeakSetPrototypeAdd, 1, kReceiver, kValue) \
1270
TFJ(WeakSetPrototypeDelete, 1, kReceiver, kValue) \
1271
\
1272
/* WeakSet / WeakMap Helpers */
\
1273
TFS(WeakCollectionDelete, kCollection, kKey) \
1274
TFS(WeakCollectionSet, kCollection, kKey, kValue) \
1275
\
1276
/* AsyncGenerator */
\
1277
\
1278
TFS(AsyncGeneratorResolve, kGenerator, kValue, kDone) \
1279
TFS(AsyncGeneratorReject, kGenerator, kValue) \
1280
TFS(AsyncGeneratorYield, kGenerator, kValue, kIsCaught) \
1281
TFS(AsyncGeneratorReturn, kGenerator, kValue, kIsCaught) \
1282
TFS(AsyncGeneratorResumeNext, kGenerator) \
1283
\
1284
/* AsyncGeneratorFunction( p1, p2, ... pn, body ) */
\
1285
/* proposal-async-iteration/#sec-asyncgeneratorfunction-constructor */
\
1286
CPP(AsyncGeneratorFunctionConstructor) \
1287
/* AsyncGenerator.prototype.next ( value ) */
\
1288
/* proposal-async-iteration/#sec-asyncgenerator-prototype-next */
\
1289
TFJ(AsyncGeneratorPrototypeNext, \
1290
SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1291
/* AsyncGenerator.prototype.return ( value ) */
\
1292
/* proposal-async-iteration/#sec-asyncgenerator-prototype-return */
\
1293
TFJ(AsyncGeneratorPrototypeReturn, \
1294
SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1295
/* AsyncGenerator.prototype.throw ( exception ) */
\
1296
/* proposal-async-iteration/#sec-asyncgenerator-prototype-throw */
\
1297
TFJ(AsyncGeneratorPrototypeThrow, \
1298
SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1299
\
1300
/* Await (proposal-async-iteration/#await), with resume behaviour */
\
1301
/* specific to Async Generators. Internal / Not exposed to JS code. */
\
1302
TFS(AsyncGeneratorAwaitCaught, kAsyncGeneratorObject, kValue) \
1303
TFS(AsyncGeneratorAwaitUncaught, kAsyncGeneratorObject, kValue) \
1304
TFJ(AsyncGeneratorAwaitResolveClosure, 1, kReceiver, kValue) \
1305
TFJ(AsyncGeneratorAwaitRejectClosure, 1, kReceiver, kValue) \
1306
TFJ(AsyncGeneratorYieldResolveClosure, 1, kReceiver, kValue) \
1307
TFJ(AsyncGeneratorReturnClosedResolveClosure, 1, kReceiver, kValue) \
1308
TFJ(AsyncGeneratorReturnClosedRejectClosure, 1, kReceiver, kValue) \
1309
TFJ(AsyncGeneratorReturnResolveClosure, 1, kReceiver, kValue) \
1310
\
1311
/* Async-from-Sync Iterator */
\
1312
\
1313
/* %AsyncFromSyncIteratorPrototype% */
\
1314
/* See tc39.github.io/proposal-async-iteration/ */
\
1315
/* #sec-%asyncfromsynciteratorprototype%-object) */
\
1316
TFJ(AsyncFromSyncIteratorPrototypeNext, 1, kReceiver, kValue) \
1317
/* #sec-%asyncfromsynciteratorprototype%.throw */
\
1318
TFJ(AsyncFromSyncIteratorPrototypeThrow, 1, kReceiver, kReason) \
1319
/* #sec-%asyncfromsynciteratorprototype%.return */
\
1320
TFJ(AsyncFromSyncIteratorPrototypeReturn, 1, kReceiver, kValue) \
1321
/* #sec-async-iterator-value-unwrap-functions */
\
1322
TFJ(AsyncIteratorValueUnwrap, 1, kReceiver, kValue) \
1323
\
1324
/* CEntry */
\
1325
ASM(CEntry_Return1_DontSaveFPRegs_ArgvOnStack_NoBuiltinExit) \
1326
ASM(CEntry_Return1_DontSaveFPRegs_ArgvOnStack_BuiltinExit) \
1327
ASM(CEntry_Return1_DontSaveFPRegs_ArgvInRegister_NoBuiltinExit) \
1328
ASM(CEntry_Return1_SaveFPRegs_ArgvOnStack_NoBuiltinExit) \
1329
ASM(CEntry_Return1_SaveFPRegs_ArgvOnStack_BuiltinExit) \
1330
ASM(CEntry_Return2_DontSaveFPRegs_ArgvOnStack_NoBuiltinExit) \
1331
ASM(CEntry_Return2_DontSaveFPRegs_ArgvOnStack_BuiltinExit) \
1332
ASM(CEntry_Return2_DontSaveFPRegs_ArgvInRegister_NoBuiltinExit) \
1333
ASM(CEntry_Return2_SaveFPRegs_ArgvOnStack_NoBuiltinExit) \
1334
ASM(CEntry_Return2_SaveFPRegs_ArgvOnStack_BuiltinExit) \
1335
\
1336
/* String helpers */
\
1337
TFS(StringAdd_CheckNone, kLeft, kRight) \
1338
TFS(StringAdd_ConvertLeft, kLeft, kRight) \
1339
TFS(StringAdd_ConvertRight, kLeft, kRight) \
1340
TFS(SubString, kString, kFrom, kTo) \
1341
\
1342
/* Miscellaneous */
\
1343
ASM(CallApiCallback_Argc0) \
1344
ASM(CallApiCallback_Argc1) \
1345
ASM(CallApiGetter) \
1346
ASM(DoubleToI) \
1347
TFC(GetProperty, GetProperty, 1) \
1348
TFS(SetProperty, kReceiver, kKey, kValue) \
1349
TFS(SetPropertyInLiteral, kReceiver, kKey, kValue) \
1350
ASM(MathPowInternal) \
1351
\
1352
/* Trace */
\
1353
CPP(IsTraceCategoryEnabled) \
1354
CPP(Trace) \
1355
\
1356
/* Weak refs */
\
1357
CPP(WeakCellClear) \
1358
CPP(WeakCellHoldingsGetter) \
1359
CPP(WeakFactoryCleanupIteratorNext) \
1360
CPP(WeakFactoryCleanupSome) \
1361
CPP(WeakFactoryConstructor) \
1362
CPP(WeakFactoryMakeCell) \
1363
CPP(WeakFactoryMakeRef) \
1364
CPP(WeakRefDeref)
1365
1366
#ifdef V8_INTL_SUPPORT
1367
#define BUILTIN_LIST_INTL(CPP, TFJ, TFS) \
1368
/* ecma402 #sec-intl.collator */
\
1369
CPP(CollatorConstructor) \
1370
/* ecma 402 #sec-collator-compare-functions*/
\
1371
CPP(CollatorInternalCompare) \
1372
/* ecma402 #sec-intl.collator.prototype.compare */
\
1373
CPP(CollatorPrototypeCompare) \
1374
/* ecma402 #sec-intl.collator.supportedlocalesof */
\
1375
CPP(CollatorSupportedLocalesOf) \
1376
CPP(CollatorPrototypeResolvedOptions) \
1377
/* ecma402 #sup-date.prototype.tolocaledatestring */
\
1378
CPP(DatePrototypeToLocaleDateString) \
1379
/* ecma402 #sup-date.prototype.tolocalestring */
\
1380
CPP(DatePrototypeToLocaleString) \
1381
/* ecma402 #sup-date.prototype.tolocaletimestring */
\
1382
CPP(DatePrototypeToLocaleTimeString) \
1383
/* ecma402 #sec-intl.datetimeformat */
\
1384
CPP(DateTimeFormatConstructor) \
1385
/* ecma402 #sec-datetime-format-functions */
\
1386
CPP(DateTimeFormatInternalFormat) \
1387
/* ecma402 #sec-intl.datetimeformat.prototype.format */
\
1388
CPP(DateTimeFormatPrototypeFormat) \
1389
/* ecma402 #sec-intl.datetimeformat.prototype.formattoparts */
\
1390
CPP(DateTimeFormatPrototypeFormatToParts) \
1391
/* ecma402 #sec-intl.datetimeformat.prototype.resolvedoptions */
\
1392
CPP(DateTimeFormatPrototypeResolvedOptions) \
1393
/* ecma402 #sec-intl.datetimeformat.supportedlocalesof */
\
1394
CPP(DateTimeFormatSupportedLocalesOf) \
1395
/* ecma402 #sec-intl.getcanonicallocales */
\
1396
CPP(IntlGetCanonicalLocales) \
1397
/* ecma402 #sec-intl-listformat-constructor */
\
1398
CPP(ListFormatConstructor) \
1399
/* ecma402 #sec-intl-list-format.prototype.format */
\
1400
TFJ(ListFormatPrototypeFormat, \
1401
SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1402
/* ecma402 #sec-intl-list-format.prototype.formattoparts */
\
1403
TFJ(ListFormatPrototypeFormatToParts, \
1404
SharedFunctionInfo::kDontAdaptArgumentsSentinel) \
1405
/* ecma402 #sec-intl.listformat.prototype.resolvedoptions */
\
1406
CPP(ListFormatPrototypeResolvedOptions) \
1407
/* ecma402 #sec-intl.ListFormat.supportedlocalesof */
\
1408
CPP(ListFormatSupportedLocalesOf) \
1409
/* ecma402 #sec-intl-locale-constructor */
\
1410
CPP(LocaleConstructor) \
1411
CPP(LocalePrototypeBaseName) \
1412
CPP(LocalePrototypeCalendar) \
1413
CPP(LocalePrototypeCaseFirst) \
1414
CPP(LocalePrototypeCollation) \
1415
CPP(LocalePrototypeHourCycle) \
1416
CPP(LocalePrototypeLanguage) \
1417
/* ecma402 #sec-Intl.Locale.prototype.maximize */
\
1418
CPP(LocalePrototypeMaximize) \
1419
/* ecma402 #sec-Intl.Locale.prototype.minimize */
\
1420
CPP(LocalePrototypeMinimize) \
1421
CPP(LocalePrototypeNumeric) \
1422
CPP(LocalePrototypeNumberingSystem) \
1423
CPP(LocalePrototypeRegion) \
1424
CPP(LocalePrototypeScript) \
1425
CPP(LocalePrototypeToString) \
1426
/* ecma402 #sec-intl.numberformat */
\
1427
CPP(NumberFormatConstructor) \
1428
/* ecma402 #sec-number-format-functions */
\
1429
CPP(NumberFormatInternalFormatNumber) \
1430
/* ecma402 #sec-intl.numberformat.prototype.format */
\
1431
CPP(NumberFormatPrototypeFormatNumber) \
1432
/* ecma402 #sec-intl.numberformat.prototype.formattoparts */
\
1433
CPP(NumberFormatPrototypeFormatToParts) \
1434
/* ecma402 #sec-intl.numberformat.prototype.resolvedoptions */
\
1435
CPP(NumberFormatPrototypeResolvedOptions) \
1436
/* ecma402 #sec-intl.numberformat.supportedlocalesof */
\
1437
CPP(NumberFormatSupportedLocalesOf) \
1438
/* ecma402 #sec-intl.pluralrules */
\
1439
CPP(PluralRulesConstructor) \
1440
CPP(PluralRulesPrototypeResolvedOptions) \
1441
/* ecma402 #sec-intl.pluralrules.prototype.select */
\
1442
CPP(PluralRulesPrototypeSelect) \
1443
/* ecma402 #sec-intl.pluralrules.supportedlocalesof */
\
1444
CPP(PluralRulesSupportedLocalesOf) \
1445
/* ecma402 #sec-intl.RelativeTimeFormat.constructor */
\
1446
CPP(RelativeTimeFormatConstructor) \
1447
/* ecma402 #sec-intl.RelativeTimeFormat.prototype.format */
\
1448
CPP(RelativeTimeFormatPrototypeFormat) \
1449
/* ecma402 #sec-intl.RelativeTimeFormat.prototype.formatToParts */
\
1450
CPP(RelativeTimeFormatPrototypeFormatToParts) \
1451
/* ecma402 #sec-intl.RelativeTimeFormat.prototype.resolvedOptions */
\
1452
CPP(RelativeTimeFormatPrototypeResolvedOptions) \
1453
/* ecma402 #sec-intl.RelativeTimeFormat.supportedlocalesof */
\
1454
CPP(RelativeTimeFormatSupportedLocalesOf) \
1455
/* ecma402 #sec-Intl.Segmenter */
\
1456
CPP(SegmenterConstructor) \
1457
/* ecma402 #sec-Intl.Segmenter.prototype.resolvedOptions */
\
1458
CPP(SegmenterPrototypeResolvedOptions) \
1459
/* ecma402 #sec-Intl.Segmenter.prototype.segment */
\
1460
CPP(SegmenterPrototypeSegment) \
1461
/* ecma402 #sec-Intl.Segmenter.supportedLocalesOf */
\
1462
CPP(SegmenterSupportedLocalesOf) \
1463
/* ecma402 #sec-segment-iterator-prototype-breakType */
\
1464
CPP(SegmentIteratorPrototypeBreakType) \
1465
/* ecma402 #sec-segment-iterator-prototype-following */
\
1466
CPP(SegmentIteratorPrototypeFollowing) \
1467
/* ecma402 #sec-segment-iterator-prototype-preceding */
\
1468
CPP(SegmentIteratorPrototypePreceding) \
1469
/* ecma402 #sec-segment-iterator-prototype-position */
\
1470
CPP(SegmentIteratorPrototypePosition) \
1471
/* ecma402 #sec-segment-iterator-prototype-next */
\
1472
CPP(SegmentIteratorPrototypeNext) \
1473
/* ES #sec-string.prototype.normalize */
\
1474
CPP(StringPrototypeNormalizeIntl) \
1475
/* ecma402 #sup-string.prototype.tolocalelowercase */
\
1476
CPP(StringPrototypeToLocaleLowerCase) \
1477
/* ecma402 #sup-string.prototype.tolocaleuppercase */
\
1478
CPP(StringPrototypeToLocaleUpperCase) \
1479
/* ES #sec-string.prototype.tolowercase */
\
1480
TFJ(StringPrototypeToLowerCaseIntl, 0, kReceiver) \
1481
/* ES #sec-string.prototype.touppercase */
\
1482
CPP(StringPrototypeToUpperCaseIntl) \
1483
TFS(StringToLowerCaseIntl, kString) \
1484
CPP(V8BreakIteratorConstructor) \
1485
CPP(V8BreakIteratorInternalAdoptText) \
1486
CPP(V8BreakIteratorInternalBreakType) \
1487
CPP(V8BreakIteratorInternalCurrent) \
1488
CPP(V8BreakIteratorInternalFirst) \
1489
CPP(V8BreakIteratorInternalNext) \
1490
CPP(V8BreakIteratorPrototypeAdoptText) \
1491
CPP(V8BreakIteratorPrototypeBreakType) \
1492
CPP(V8BreakIteratorPrototypeCurrent) \
1493
CPP(V8BreakIteratorPrototypeFirst) \
1494
CPP(V8BreakIteratorPrototypeNext) \
1495
CPP(V8BreakIteratorPrototypeResolvedOptions) \
1496
CPP(V8BreakIteratorSupportedLocalesOf)
1497
#else
1498
#define BUILTIN_LIST_INTL(CPP, TFJ, TFS) \
1499
/* no-op fallback version */
\
1500
CPP(StringPrototypeNormalize) \
1501
/* same as toLowercase; fallback version */
\
1502
CPP(StringPrototypeToLocaleLowerCase) \
1503
/* same as toUppercase; fallback version */
\
1504
CPP(StringPrototypeToLocaleUpperCase) \
1505
/* (obsolete) Unibrow version */
\
1506
CPP(StringPrototypeToLowerCase) \
1507
/* (obsolete) Unibrow version */
\
1508
CPP(StringPrototypeToUpperCase)
1509
#endif // V8_INTL_SUPPORT
1510
1511
#define BUILTIN_LIST(CPP, API, TFJ, TFC, TFS, TFH, BCH, ASM) \
1512
BUILTIN_LIST_BASE(CPP, API, TFJ, TFC, TFS, TFH, ASM) \
1513
BUILTIN_LIST_FROM_DSL(CPP, API, TFJ, TFC, TFS, TFH, ASM) \
1514
BUILTIN_LIST_INTL(CPP, TFJ, TFS) \
1515
BUILTIN_LIST_BYTECODE_HANDLERS(BCH)
1516
1517
// The exception thrown in the following builtins are caught
1518
// internally and result in a promise rejection.
1519
#define BUILTIN_PROMISE_REJECTION_PREDICTION_LIST(V) \
1520
V(AsyncFromSyncIteratorPrototypeNext) \
1521
V(AsyncFromSyncIteratorPrototypeReturn) \
1522
V(AsyncFromSyncIteratorPrototypeThrow) \
1523
V(AsyncFunctionAwaitCaught) \
1524
V(AsyncFunctionAwaitUncaught) \
1525
V(AsyncGeneratorResolve) \
1526
V(AsyncGeneratorAwaitCaught) \
1527
V(AsyncGeneratorAwaitUncaught) \
1528
V(PromiseAll) \
1529
V(PromiseConstructor) \
1530
V(PromiseConstructorLazyDeoptContinuation) \
1531
V(PromiseFulfillReactionJob) \
1532
V(PromiseRace) \
1533
V(ResolvePromise)
1534
1535
// Convenience macro listing all wasm runtime stubs. Note that the first few
1536
// elements of the list coincide with {compiler::TrapId}, order matters.
1537
#define WASM_RUNTIME_STUB_LIST(V, VTRAP) \
1538
FOREACH_WASM_TRAPREASON(VTRAP) \
1539
V(WasmAllocateHeapNumber) \
1540
V(WasmAtomicWake) \
1541
V(WasmI32AtomicWait) \
1542
V(WasmCallJavaScript) \
1543
V(WasmMemoryGrow) \
1544
V(WasmRecordWrite) \
1545
V(WasmStackGuard) \
1546
V(WasmToNumber) \
1547
V(WasmThrow) \
1548
V(DoubleToI)
1549
1550
// The exception thrown in the following builtins are caught internally and will
1551
// not be propagated further or re-thrown
1552
#define BUILTIN_EXCEPTION_CAUGHT_PREDICTION_LIST(V) V(PromiseRejectReactionJob)
1553
1554
#define IGNORE_BUILTIN(...)
1555
1556
#define BUILTIN_LIST_C(V) \
1557
BUILTIN_LIST(V, V, IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, \
1558
IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN)
1559
1560
#define BUILTIN_LIST_A(V) \
1561
BUILTIN_LIST(IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, \
1562
IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, V)
1563
1564
#define BUILTIN_LIST_TFS(V) \
1565
BUILTIN_LIST(IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, \
1566
V, IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN)
1567
1568
#define BUILTIN_LIST_TFJ(V) \
1569
BUILTIN_LIST(IGNORE_BUILTIN, IGNORE_BUILTIN, V, IGNORE_BUILTIN, \
1570
IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN)
1571
1572
#define BUILTIN_LIST_TFC(V) \
1573
BUILTIN_LIST(IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, V, \
1574
IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN)
1575
1576
}
// namespace internal
1577
}
// namespace v8
1578
1579
#endif // V8_BUILTINS_BUILTINS_DEFINITIONS_H_
v8
Definition:
libplatform.h:13
v8
src
builtins
builtins-definitions.h
Generated on Tue Dec 25 2018 14:38:18 by
1.8.14