1/*
2 * Copyright (c) 2021-2024 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 *     http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16#ifndef ECMASCRIPT_RUNTIME_CALL_ID_H
17#define ECMASCRIPT_RUNTIME_CALL_ID_H
18
19#include "ecmascript/base/config.h"
20#include "ecmascript/dfx/vmstat/runtime_stat.h"
21#include "ecmascript/ecma_context.h"
22
23namespace panda::ecmascript {
24// NOLINTNEXTLINE(cppcoreguidelines-macro-usage)
25#define INTERPRETER_CALLER_LIST(V)   \
26    V(RunInternal)                   \
27    V(Ldnan)                         \
28    V(Ldinfinity)                    \
29    V(Ldundefined)                   \
30    V(Ldboolean)                     \
31    V(Ldnumber)                      \
32    V(Ldstring)                      \
33    V(Ldnull)                        \
34    V(Ldsymbol)                      \
35    V(Ldfunction)                    \
36    V(Ldglobal)                      \
37    V(Ldtrue)                        \
38    V(Ldfalse)                       \
39    V(Tonumber)                      \
40    V(Toboolean)                     \
41    V(Add2)                          \
42    V(Sub2)                          \
43    V(Mul2)                          \
44    V(Div2)                          \
45    V(Mod2)                          \
46    V(Eq)                            \
47    V(NotEq)                         \
48    V(Less)                          \
49    V(LessEq)                        \
50    V(Greater)                       \
51    V(GreaterEq)                     \
52    V(StrictNotEq)                   \
53    V(StrictEq)                      \
54    V(Shl2)                          \
55    V(Shr2)                          \
56    V(Ashr2)                         \
57    V(And2)                          \
58    V(Or2)                           \
59    V(Xor2)                          \
60    V(Neg)                           \
61    V(Not)                           \
62    V(Inc)                           \
63    V(Dec)                           \
64    V(Exp)                           \
65    V(Throw)                         \
66    V(LdObjByIndex)                  \
67    V(StObjByIndex)                  \
68    V(LdObjByName)                   \
69    V(StObjByName)                   \
70    V(LdObjByValue)                  \
71    V(StObjByValue)                  \
72    V(StOwnByName)                   \
73    V(StOwnById)                     \
74    V(StOwnByValue)                  \
75    V(Trygetobjprop)                 \
76    V(Delobjprop)                    \
77    V(Defineglobalvar)               \
78    V(Definelocalvar)                \
79    V(Definefuncexpr)                \
80    V(DefineFunc)                    \
81    V(SetPatchModule)                \
82    V(NewobjRange)                   \
83    V(Refeq)                         \
84    V(Typeof)                        \
85    V(Ldnewobjrange)                 \
86    V(IsIn)                          \
87    V(Instanceof)                    \
88    V(InstanceofByHandler)           \
89    V(NewObjApply)                   \
90    V(CallArg0)                      \
91    V(CallArg1)                      \
92    V(CallArg2)                      \
93    V(CallArg3)                      \
94    V(CallThisRange)                 \
95    V(CallRange)                     \
96    V(CallSpread)                    \
97    V(Newlexenv)                     \
98    V(NewlexenvwithName)             \
99    V(NewSendableEnv)                \
100    V(Stlexvar)                      \
101    V(Ldlexvar)                      \
102    V(Ldlexenv)                      \
103    V(GetPropIterator)               \
104    V(GetPropIteratorSlowpath)       \
105    V(PrimitiveStringCreate)         \
106    V(CreateIterResultObj)           \
107    V(SuspendGenerator)              \
108    V(ResumeGenerator)               \
109    V(GetResumeMode)                 \
110    V(CreateGeneratorObj)            \
111    V(DefineGetterSetterByValue)     \
112    V(AsyncFunctionEnter)            \
113    V(AsyncFunctionAwaitUncaught)    \
114    V(AsyncFunctionResolveOrReject ) \
115    V(ThrowUndefined)                \
116    V(ThrowConstAssignment)          \
117    V(ThrowUndefinedIfHole)          \
118    V(Copyrestargs)                  \
119    V(Trystobjprop)                  \
120    V(GetTemplateObject)             \
121    V(CreateStringIterator)          \
122    V(NewJSArrayIterator)            \
123    V(NewJSTypedArrayIterator)       \
124    V(MapIteratorNext)               \
125    V(SetIteratorNext)               \
126    V(StringIteratorNext)            \
127    V(ArrayIteratorNext)             \
128    V(GetIterator)                   \
129    V(GetAsyncIterator)              \
130    V(ThrowIfNotObject)              \
131    V(ThrowThrowNotExists)           \
132    V(CreateObjectWithExcludedKeys ) \
133    V(ThrowPatternNonCoercible)      \
134    V(IterNext)                      \
135    V(CloseIterator)                 \
136    V(StArraySpread)                 \
137    V(GetCallSpreadArgs)             \
138    V(TryLoadICByName)               \
139    V(LoadICByName)                  \
140    V(GetPropertyByName)             \
141    V(TryLoadICByValue)              \
142    V(LoadICByValue)                 \
143    V(TryStoreICByName)              \
144    V(StoreOwnICByValue)             \
145    V(StoreICByName)                 \
146    V(TryStoreICByValue)             \
147    V(StoreICByValue)                \
148    V(NotifyInlineCache)             \
149    V(LoadGlobalICByName)            \
150    V(StoreGlobalICByName)           \
151    V(StoreICWithHandler)            \
152    V(StorePrototype)                \
153    V(StoreWithTransition)           \
154    V(StoreTransWithProto)           \
155    V(StoreWithAOT)                  \
156    V(StoreField)                    \
157    V(StoreGlobal)                   \
158    V(LoadPrototype)                 \
159    V(LoadICWithHandler)             \
160    V(StoreElement)                  \
161    V(CallGetter)                    \
162    V(CallSetter)                    \
163    V(AddPropertyByName)             \
164    V(AddPropertyByIndex)            \
165    V(GetPropertyByIndex)            \
166    V(GetPropertyByValue)            \
167    V(SetPropertyByIndex)            \
168    V(SetPropertyByValue)            \
169    V(FastTypeOf)                    \
170    V(FastSetPropertyByIndex)        \
171    V(FastSetPropertyByValue)        \
172    V(FastGetPropertyByName)         \
173    V(FastGetPropertyByValue)        \
174    V(FastGetPropertyByIndex)        \
175    V(NewLexicalEnv)                 \
176    V(ExecuteNative)                 \
177    V(Execute)                       \
178    V(AsmExecute)                    \
179    V(ExecuteAot)                    \
180    V(ToJSTaggedValueWithInt32)      \
181    V(ToJSTaggedValueWithUint32)     \
182    V(ThrowIfSuperNotCorrectCall)    \
183    V(CreateEmptyArray)              \
184    V(CreateEmptyObject)             \
185    V(CreateObjectWithBuffer)        \
186    V(CreateObjectHavingMethod)      \
187    V(SetObjectWithProto)            \
188    V(getmodulenamespace)            \
189    V(StModuleVar)                   \
190    V(LdModuleVar)                   \
191    V(CreateRegExpWithLiteral)       \
192    V(CreateArrayWithBuffer)         \
193    V(GetNextPropName)               \
194    V(GetNextPropNameSlowpath)       \
195    V(CopyDataProperties)            \
196    V(GetUnmapedArgs)                \
197    V(TryStGlobalByName)             \
198    V(LdGlobalVar)                   \
199    V(StGlobalVar)                   \
200    V(TryUpdateGlobalRecord)         \
201    V(LdGlobalRecord)                \
202    V(StGlobalRecord)                \
203    V(ThrowReferenceError)           \
204    V(ThrowTypeError)                \
205    V(MismatchError)                 \
206    V(ThrowSyntaxError)              \
207    V(NewClassFunc)                  \
208    V(DefineClass)                   \
209    V(SuperCall)                     \
210    V(SuperCallSpread)               \
211    V(DefineMethod)                  \
212    V(LdSuperByValue)                \
213    V(StSuperByValue)                \
214    V(ThrowDeleteSuperProperty)      \
215    V(ModWithTSType)                 \
216    V(MulWithTSType)                 \
217    V(SubWithTSType)                 \
218    V(DivWithTSType)                 \
219    V(AddWithTSType)                 \
220    V(GetBitOPDate)                  \
221    V(ShlWithTSType)                 \
222    V(ShrWithTSType)                 \
223    V(AshrWithTSType)                \
224    V(AndWithTSType)                 \
225    V(OrWithTSType)                  \
226    V(XorWithTSType)                 \
227    V(EqualWithIC)                   \
228    V(NotEqualWithIC)                \
229    V(Compare)                       \
230    V(LessWithIC)                    \
231    V(LessEqWithIC)                  \
232    V(GreaterWithIC)                 \
233    V(SetPropertyByName)             \
234    V(GreaterEqWithIC)               \
235    V(LdBigInt)                      \
236    V(Tonumeric)                     \
237    V(CreateAsyncGeneratorObj)       \
238    V(AsyncGeneratorResolve)         \
239    V(GetSuperConstructor)           \
240    V(DynamicImport)                 \
241    V(LdPatchVar)                    \
242    V(StPatchVar)                    \
243    V(AsyncGeneratorReject)          \
244    V(LdPrivateProperty)             \
245    V(StPrivateProperty)             \
246    V(TestIn)                        \
247    V(NotifyConcurrentResult)        \
248    V(DefineField)                   \
249    V(ToPropertyKey)                 \
250    V(CreatePrivateProperty)         \
251    V(DefinePrivateProperty)         \
252    V(CreateSharedClass)             \
253    V(LdSendableClass)               \
254    V(UpdateAOTHClass)               \
255    V(SetGeneratorState)
256
257// NOLINTNEXTLINE(cppcoreguidelines-macro-usage)
258#define BUILTINS_API_LIST(V)                   \
259    V(Array, Constructor)                     \
260    V(Array, From)                            \
261    V(Array, Of)                              \
262    V(Array, IsArray)                         \
263    V(Array, Entries)                         \
264    V(Array, Species)                         \
265    V(Array, Concat)                          \
266    V(Array, CopyWithin)                      \
267    V(Array, Every)                           \
268    V(Array, Fill)                            \
269    V(Array, Filter)                          \
270    V(Array, Find)                            \
271    V(Array, FindIndex)                       \
272    V(Array, FindLast)                        \
273    V(Array, FindLastIndex)                   \
274    V(Array, ForEach)                         \
275    V(Array, IndexOf)                         \
276    V(Array, Join)                            \
277    V(Array, Keys)                            \
278    V(Array, LastIndexOf)                     \
279    V(Array, Map)                             \
280    V(Array, Pop)                             \
281    V(Array, Push)                            \
282    V(Array, Reduce)                          \
283    V(Array, ReduceRight)                     \
284    V(Array, Reverse)                         \
285    V(Array, Shift)                           \
286    V(Array, Slice)                           \
287    V(Array, Some)                            \
288    V(Array, Sort)                            \
289    V(Array, Splice)                          \
290    V(Array, ToLocaleString)                  \
291    V(Array, ToString)                        \
292    V(Array, Unscopables)                     \
293    V(Array, Unshift)                         \
294    V(Array, Values)                          \
295    V(Array, Includes)                        \
296    V(Array, Flat)                            \
297    V(Array, FlatMap)                         \
298    V(Array, At)                              \
299    V(Array, ToReversed)                      \
300    V(Array, With)                            \
301    V(Array, ToSorted)                        \
302    V(Array, ToSpliced)                       \
303    V(SharedArray, Constructor)               \
304    V(SharedArray, From)                      \
305    V(SharedArray, Create)                    \
306    V(SharedArray, IsArray)                   \
307    V(SharedArray, Entries)                   \
308    V(SharedArray, Species)                   \
309    V(SharedArray, Concat)                    \
310    V(SharedArray, Fill)                      \
311    V(SharedArray, Filter)                    \
312    V(SharedArray, Find)                      \
313    V(SharedArray, FindIndex)                 \
314    V(SharedArray, ForEach)                   \
315    V(SharedArray, IndexOf)                   \
316    V(SharedArray, Join)                      \
317    V(SharedArray, Keys)                      \
318    V(SharedArray, Map)                       \
319    V(SharedArray, Pop)                       \
320    V(SharedArray, Push)                      \
321    V(SharedArray, Reduce)                    \
322    V(SharedArray, Shift)                     \
323    V(SharedArray, Slice)                     \
324    V(SharedArray, Sort)                      \
325    V(SharedArray, Splice)                    \
326    V(SharedArray, ToString)                  \
327    V(SharedArray, Unscopables)               \
328    V(SharedArray, Unshift)                   \
329    V(SharedArray, Values)                    \
330    V(SharedArray, Includes)                  \
331    V(SharedArray, Flat)                      \
332    V(SharedArray, FlatMap)                   \
333    V(SharedArray, At)                        \
334    V(SharedArray, With)                      \
335    V(SharedArray, ShrinkTo)                  \
336    V(SharedArray, ExtendTo)                  \
337    V(SharedArray, Every)                     \
338    V(SharedArray, Some)                      \
339    V(SharedArray, LastIndexOf)               \
340    V(ArrayBuffer, Constructor)               \
341    V(ArrayBuffer, Slice)                     \
342    V(ArrayBuffer, Species)                   \
343    V(ArrayBuffer, GetByteLength)             \
344    V(ArrayBuffer, GetValueFromBuffer)        \
345    V(ArrayBuffer, SetValueInBuffer)          \
346    V(ArrayBuffer, CloneArrayBuffer)          \
347    V(ArrayBuffer, AllocateArrayBuffer)       \
348    V(ArrayBuffer, IsView)                    \
349    V(SharedArrayBuffer, Constructor)         \
350    V(SharedArrayBuffer, Slice)               \
351    V(SharedArrayBuffer, AllocateSharedArrayBuffer) \
352    V(SharedArrayBuffer, IsSharedArrayBuffer) \
353    V(SharedArrayBuffer, IsView)              \
354    V(SharedArrayBuffer, Species)             \
355    V(SharedArrayBuffer, GetByteLength)       \
356    V(SendableArrayBuffer, Constructor)       \
357    V(SendableArrayBuffer, Slice)             \
358    V(SendableArrayBuffer, Species)           \
359    V(SendableArrayBuffer, GetByteLength)     \
360    V(SendableArrayBuffer, GetValueFromBuffer)  \
361    V(SendableArrayBuffer, SetValueInBuffer)  \
362    V(SendableArrayBuffer, CloneArrayBuffer)  \
363    V(SendableArrayBuffer, AllocateSendableArrayBuffer) \
364    V(SendableArrayBuffer, IsView)            \
365    V(AsyncFromSyncIterator, Next)            \
366    V(AsyncFromSyncIterator, Throw)           \
367    V(AsyncFromSyncIterator, Return)          \
368    V(AsyncFunction, Constructor)             \
369    V(SharedAsyncFunction, Constructor)       \
370    V(Boolean, BooleanPrototypeToString)      \
371    V(Boolean, BooleanPrototypeValueOf)       \
372    V(Boolean, Constructor)                   \
373    V(Boolean, ThisBooleanValue)              \
374    V(CjsExports, CjsExportsConstructor)      \
375    V(CjsModule, CjsModuleConstructor)        \
376    V(CjsModule, Compiler)                    \
377    V(CjsModule, Load)                        \
378    V(CjsModule, ResolveFilename)             \
379    V(CjsModule, Require)                     \
380    V(CjsModule, GetExportsForCircularRequire) \
381    V(CjsModule, UpdateChildren)              \
382    V(CjsRequire, CjsRequireConstructor)      \
383    V(CjsRequire, Main)                       \
384    V(CjsRequire, Resolve)                    \
385    V(Collator, CollatorConstructor)          \
386    V(Collator, SupportedLocalesOf)           \
387    V(Collator, Compare)                      \
388    V(Collator, AnonymousCollator)            \
389    V(Collator, ResolvedOptions)              \
390    V(DataView, Constructor)                  \
391    V(DataView, GetBuffer)                    \
392    V(DataView, GetByteLength)                \
393    V(DataView, GetOffset)                    \
394    V(DataView, GetViewValue)                 \
395    V(DataView, SetViewValue)                 \
396    V(DataView, GetFloat32)                   \
397    V(DataView, GetFloat64)                   \
398    V(DataView, GetInt8)                      \
399    V(DataView, GetInt16)                     \
400    V(DataView, GetInt32)                     \
401    V(DataView, GetUint8)                     \
402    V(DataView, GetUint16)                    \
403    V(DataView, GetUint32)                    \
404    V(DataView, GetBigInt64)                  \
405    V(DataView, GetBigUint64)                 \
406    V(DataView, SetFloat32)                   \
407    V(DataView, SetFloat64)                   \
408    V(DataView, SetInt8)                      \
409    V(DataView, SetInt16)                     \
410    V(DataView, SetInt32)                     \
411    V(DataView, SetUint8)                     \
412    V(DataView, SetUint16)                    \
413    V(DataView, SetUint32)                    \
414    V(DataView, SetBigInt64)                  \
415    V(DataView, SetBigUint64)                 \
416    V(DataView, GetTypedValue)                \
417    V(DataView, SetTypedValue)                \
418    V(Date, Constructor)                      \
419    V(Date, Now)                              \
420    V(Date, UTC)                              \
421    V(Date, Parse)                            \
422    V(Date, GetDateField)                     \
423    V(Date, GetTime)                          \
424    V(Date, SetTime)                          \
425    V(Date, ToJSON)                           \
426    V(Date, ValueOf)                          \
427    V(Date, ToPrimitive)                      \
428    V(Date, ToLocaleString)                   \
429    V(Date, ToLocaleDateString)               \
430    V(Date, ToLocaleTimeString)               \
431    V(DateTimeFormat, Constructor)            \
432    V(DateTimeFormat, SupportedLocalesOf)     \
433    V(DateTimeFormat, Format)                 \
434    V(DateTimeFormat, AnonymousDateTimeFormat) \
435    V(DateTimeFormat, FormatToParts)          \
436    V(DateTimeFormat, ResolvedOptions)        \
437    V(DateTimeFormat, FormatRange)            \
438    V(DateTimeFormat, FormatRangeToParts)     \
439    V(DisplayNames, Constructor)              \
440    V(DisplayNames, SupportedLocalesOf)       \
441    V(DisplayNames, Of)                       \
442    V(DisplayNames, ResolvedOptions)          \
443    V(Segmenter, Constructor)                 \
444    V(Segmenter, SupportedLocalesOf)          \
445    V(Segmenter, ResolvedOptions)             \
446    V(Segmenter, Segment)                     \
447    V(Segments, Containing)                   \
448    V(Segments, GetSegmentIterator)           \
449    V(SegmentIterator, Next)                  \
450    V(Error, ErrorConstructor)                \
451    V(Error, ErrorToString)                   \
452    V(Error, RangeErrorConstructor)           \
453    V(Error, RangeErrorToString)              \
454    V(Error, ReferenceErrorConstructor)       \
455    V(Error, ReferenceErrorToString)          \
456    V(Error, TypeErrorConstructor)            \
457    V(Error, TypeErrorToString)               \
458    V(Error, ThrowTypeError)                  \
459    V(Error, URIErrorConstructor)             \
460    V(Error, URIErrorToString)                \
461    V(Error, SyntaxErrorConstructor)          \
462    V(Error, SyntaxErrorToString)             \
463    V(Error, EvalErrorConstructor)            \
464    V(Error, EvalErrorToString)               \
465    V(Error, AggregateErrorConstructor)       \
466    V(Error, AggregateErrorToString)          \
467    V(Error, OOMErrorConstructor)             \
468    V(Error, OOMErrorToString)                \
469    V(Error, TerminationErrorConstructor)     \
470    V(Error, TerminationErrorToString)        \
471    V(Function, Constructor)                  \
472    V(Function, PrototypeApply)               \
473    V(Function, PrototypeBind)                \
474    V(Function, PrototypeCall)                \
475    V(Function, PrototypeToString)            \
476    V(Function, PrototypeHasInstance)         \
477    V(Function, PrototypeInvokeSelf)          \
478    V(Generator, Constructor)                 \
479    V(Generator, PrototypeNext)               \
480    V(Generator, PrototypeReturn)             \
481    V(Generator, PrototypeThrow)              \
482    V(Global, IsFinite)                       \
483    V(Global, NotSupportEval)                 \
484    V(Global, Encode)                         \
485    V(Global, IsNaN)                          \
486    V(Global, PrintEntryPoint)                \
487    V(Global, NewobjRange)                    \
488    V(Global, Decode)                         \
489    V(Global, PrintString)                    \
490    V(Global, StartRuntimeStat)               \
491    V(Global, StopRuntimeStat)                \
492    V(Global, PrintOptStat)                   \
493    V(Global, PrintFunctionCallStat)          \
494    V(Global, CallJsBoundFunction)            \
495    V(Global, CallJsProxy)                    \
496    V(Global, DecodeURI)                      \
497    V(Global, EncodeURI)                      \
498    V(Global, DecodeURIComponent)             \
499    V(Global, EncodeURIComponent)             \
500    V(Global, Escape)                         \
501    V(Global, Unescape)                       \
502    V(Global, GetCurrentModuleName)           \
503    V(Global, GetCurrentBundleName)           \
504    V(Intl, GetCanonicalLocales)              \
505    V(Iterator, Constructor)                  \
506    V(Iterator, Next)                         \
507    V(Iterator, Throw)                        \
508    V(Iterator, Return)                       \
509    V(Iterator, GetObj)                       \
510    V(Locale, Constructor)                    \
511    V(Locale, Maximize)                       \
512    V(Locale, Minimize)                       \
513    V(Locale, ToString)                       \
514    V(Locale, GetBaseName)                    \
515    V(Locale, GetCalendar)                    \
516    V(Locale, GetCaseFirst)                   \
517    V(Locale, GetCollation)                   \
518    V(Locale, GetHourCycle)                   \
519    V(Locale, GetNumeric)                     \
520    V(Locale, GetNumberingSystem)             \
521    V(Locale, GetLanguage)                    \
522    V(Locale, GetScript)                      \
523    V(Locale, GetRegion)                      \
524    V(AsyncIterator, Constructor)             \
525    V(AsyncIterator, Next)                    \
526    V(AsyncIterator, Throw)                   \
527    V(AsyncIterator, Return)                  \
528    V(AsyncIterator, GetObj)                  \
529    V(Json, Parse)                            \
530    V(Json, Stringify)                        \
531    V(Map, Constructor)                       \
532    V(Map, Species)                           \
533    V(Map, Clear)                             \
534    V(Map, Delete)                            \
535    V(Map, Entries)                           \
536    V(Map, Get)                               \
537    V(Map, Has)                               \
538    V(Map, Keys)                              \
539    V(Map, Set)                               \
540    V(Map, GetSize)                           \
541    V(Map, Values)                            \
542    V(Map, ForEach)                           \
543    V(Map, AddEntriesFromIterable)            \
544    V(SharedMap, Constructor)               \
545    V(SharedMap, Species)                   \
546    V(SharedMap, Clear)                     \
547    V(SharedMap, Delete)                    \
548    V(SharedMap, Entries)                   \
549    V(SharedMap, Get)                       \
550    V(SharedMap, Has)                       \
551    V(SharedMap, Keys)                      \
552    V(SharedMap, Set)                       \
553    V(SharedMap, GetSize)                   \
554    V(SharedMap, Values)                    \
555    V(SharedMap, ForEach)                   \
556    V(SharedMap, AddEntriesFromIterable)    \
557    V(Math, Abs)                              \
558    V(Math, Acos)                             \
559    V(Math, Acosh)                            \
560    V(Math, Asin)                             \
561    V(Math, Asinh)                            \
562    V(Math, Atan)                             \
563    V(Math, Atanh)                            \
564    V(Math, Atan2)                            \
565    V(Math, Cbrt)                             \
566    V(Math, Ceil)                             \
567    V(Math, Clz32)                            \
568    V(Math, Cos)                              \
569    V(Math, Cosh)                             \
570    V(Math, Exp)                              \
571    V(Math, Expm1)                            \
572    V(Math, Floor)                            \
573    V(Math, Fround)                           \
574    V(Math, Hypot)                            \
575    V(Math, Imul)                             \
576    V(Math, Log)                              \
577    V(Math, Log1p)                            \
578    V(Math, Log10)                            \
579    V(Math, Log2)                             \
580    V(Math, Max)                              \
581    V(Math, Min)                              \
582    V(Math, Pow)                              \
583    V(Math, Random)                           \
584    V(Math, Round)                            \
585    V(Math, Sign)                             \
586    V(Math, Sin)                              \
587    V(Math, Sinh)                             \
588    V(Math, Sqrt)                             \
589    V(Math, Tan)                              \
590    V(Math, Tanh)                             \
591    V(Math, Trunc)                            \
592    V(NumberFormat, Constructor)              \
593    V(NumberFormat, SupportedLocalesOf)       \
594    V(NumberFormat, Format)                   \
595    V(NumberFormat, FormatToParts)            \
596    V(NumberFormat, ResolvedOptions)          \
597    V(Atomics, AtomicReadModifyWrite)         \
598    V(Atomics, AtomicReadModifyWriteCase)     \
599    V(Atomics, Add)                           \
600    V(Atomics, And)                           \
601    V(Atomics, DoWait)                        \
602    V(Atomics, HandleWithUint8)               \
603    V(Atomics, HandleWithInt8)                \
604    V(Atomics, HandleWithUint16)              \
605    V(Atomics, HandleWithInt16)               \
606    V(Atomics, HandleWithUint32)              \
607    V(Atomics, HandleWithInt32)               \
608    V(Atomics, HandleWithBigInt64)            \
609    V(Atomics, HandleWithBigUint64)           \
610    V(Atomics, Or)                            \
611    V(Atomics, Xor)                           \
612    V(Atomics, Sub)                           \
613    V(Atomics, Exchange)                      \
614    V(Atomics, CompareExchange)               \
615    V(Atomics, Store)                         \
616    V(Atomics, Load)                          \
617    V(Atomics, IsLockFree)                    \
618    V(Atomics, Wait)                          \
619    V(Atomics, Notify)                        \
620    V(Number, Constructor)                    \
621    V(Number, IsFinite)                       \
622    V(Number, IsInteger)                      \
623    V(Number, IsNaN)                          \
624    V(Number, IsSafeInteger)                  \
625    V(Number, ParseFloat)                     \
626    V(Number, ParseInt)                       \
627    V(Number, ToExponential)                  \
628    V(Number, ToFixed)                        \
629    V(Number, ToLocaleString)                 \
630    V(Number, ToPrecision)                    \
631    V(Number, ToString)                       \
632    V(Number, ValueOf)                        \
633    V(Number, ThisNumberValue)                \
634    V(BigInt, Constructor)                    \
635    V(BigInt, AsUintN)                        \
636    V(BigInt, AsIntN)                         \
637    V(BigInt, ToLocaleString)                 \
638    V(BigInt, ToString)                       \
639    V(BigInt, ValueOf)                        \
640    V(BigInt, ThisBigIntValue)                \
641    V(AsyncGenerator, Constructor)            \
642    V(AsyncGenerator, PrototypeNext)          \
643    V(AsyncGenerator, PrototypeReturn)        \
644    V(AsyncGenerator, PrototypeThrow)         \
645    V(Object, Constructor)                    \
646    V(Object, Assign)                         \
647    V(Object, Create)                         \
648    V(Object, CreateDataPropertyOnObjectFunctions) \
649    V(Object, DefineProperties)               \
650    V(Object, DefineProperty)                 \
651    V(Object, Freeze)                         \
652    V(Object, FromEntries)                    \
653    V(Object, GetOwnPropertyDescriptor)       \
654    V(Object, GetOwnPropertyDescriptors)      \
655    V(Object, GetOwnPropertyKeys)             \
656    V(Object, GetOwnPropertyNames)            \
657    V(Object, GetOwnPropertySymbols)          \
658    V(Object, GetPrototypeOf)                 \
659    V(Object, Is)                             \
660    V(Object, IsExtensible)                   \
661    V(Object, IsFrozen)                       \
662    V(Object, IsSealed)                       \
663    V(Object, PropertyIsEnumerable)           \
664    V(Object, CreateRealm)                    \
665    V(Object, Keys)                           \
666    V(Object, Values)                         \
667    V(Object, PreventExtensions)              \
668    V(Object, Seal)                           \
669    V(Object, SetPrototypeOf)                 \
670    V(Object, HasOwnProperty)                 \
671    V(Object, HasOwn)                         \
672    V(Object, IsPrototypeOf)                  \
673    V(Object, ToLocaleString)                 \
674    V(Object, GetBuiltinObjectToString)       \
675    V(Object, ToString)                       \
676    V(Object, ValueOf)                        \
677    V(Object, ProtoGetter)                    \
678    V(Object, ProtoSetter)                    \
679    V(PluralRules, Constructor)               \
680    V(PluralRules, SupportedLocalesOf)        \
681    V(PluralRules, Select)                    \
682    V(PluralRules, ResolvedOptions)           \
683    V(PromiseHandler, Resolve)                \
684    V(PromiseHandler, Reject)                 \
685    V(PromiseHandler, Executor)               \
686    V(PromiseHandler, ResolveElementFunction) \
687    V(PromiseHandler, AllSettledResolveElementFunction) \
688    V(PromiseHandler, AllSettledRejectElementFunction) \
689    V(PromiseHandler, AnyRejectElementFunction) \
690    V(PromiseHandler, AsyncAwaitRejected)     \
691    V(PromiseHandler, AsyncAwaitFulfilled)    \
692    V(PromiseHandler, valueThunkFunction)     \
693    V(PromiseHandler, throwerFunction)        \
694    V(PromiseHandler, ThenFinally)            \
695    V(PromiseHandler, CatchFinally)           \
696    V(PromiseHandler, PromiseResolve)         \
697    V(PromiseJob, Reaction)                   \
698    V(PromiseJob, ResolveThenableJob)         \
699    V(PromiseJob, DynamicImportJob)           \
700    V(PromiseJob, CatchException)             \
701    V(Promise, Constructor)                   \
702    V(Promise, All)                           \
703    V(Promise, Race)                          \
704    V(Promise, Reject)                        \
705    V(Promise, Resolve)                       \
706    V(Promise, GetSpecies)                    \
707    V(Promise, GetPromiseResolve)             \
708    V(Promise, Catch)                         \
709    V(Promise, Then)                          \
710    V(Promise, PerformPromiseThen)            \
711    V(Promise, Finally)                       \
712    V(Promise, Any)                           \
713    V(Promise, PerformPromiseAny)             \
714    V(Promise, AllSettled)                    \
715    V(Promise, PerformPromiseRace)            \
716    V(Promise, PerformPromiseAll)             \
717    V(Promise, PerformPromiseAllSettled)      \
718    V(Proxy, Constructor)                     \
719    V(Proxy, Revocable)                       \
720    V(Proxy, InvalidateProxyFunction)         \
721    V(Reflect, Apply)                         \
722    V(Reflect, Constructor)                   \
723    V(Reflect, DefineProperty)                \
724    V(Reflect, DeleteProperty)                \
725    V(Reflect, Get)                           \
726    V(Reflect, GetOwnPropertyDescriptor)      \
727    V(Reflect, GetPrototypeOf)                \
728    V(Reflect, Has)                           \
729    V(Reflect, OwnKeys)                       \
730    V(Reflect, PreventExtensions)             \
731    V(Reflect, Set)                           \
732    V(Reflect, SetPrototypeOf)                \
733    V(RegExp, Constructor)                    \
734    V(RegExp, Exec)                           \
735    V(RegExp, Test)                           \
736    V(RegExp, ToString)                       \
737    V(RegExp, GetFlags)                       \
738    V(RegExp, GetSpecies)                     \
739    V(RegExp, Match)                          \
740    V(RegExp, MatchAll)                       \
741    V(RegExp, Replace)                        \
742    V(RegExp, Search)                         \
743    V(RegExp, Split)                          \
744    V(RegExp, Create)                         \
745    V(RegExp, GetGlobal)                      \
746    V(RegExp, GetHasIndices)                  \
747    V(RegExp, GetIgnoreCase)                  \
748    V(RegExp, GetMultiline)                   \
749    V(RegExp, GetDotAll)                      \
750    V(RegExp, GetSource)                      \
751    V(RegExp, GetSticky)                      \
752    V(RegExp, GetUnicode)                     \
753    V(RegExp, RegExpReplaceFast)              \
754    V(RegExp, Matcher)                        \
755    V(RegExp, GetFlagsInternal)               \
756    V(RegExp, RegExpBuiltinExec)              \
757    V(RegExp, RegExpExec)                     \
758    V(RegExp, UpdateExpressionFlags)          \
759    V(RegExp, RegExpAlloc)                    \
760    V(RegExp, GetDollarString)                \
761    V(RegExp, RegExpInitialize)               \
762    V(RegExp, EscapeRegExpPattern)            \
763    V(RegExp, FlagsBitsToString)              \
764    V(RelativeTimeFormat, Constructor)        \
765    V(RelativeTimeFormat, SupportedLocalesOf) \
766    V(RelativeTimeFormat, Format)             \
767    V(RelativeTimeFormat, FormatToParts)      \
768    V(RelativeTimeFormat, ResolvedOptions)    \
769    V(Set, Constructor)                       \
770    V(Set, Species)                           \
771    V(Set, Add)                               \
772    V(Set, Clear)                             \
773    V(Set, Delete)                            \
774    V(Set, Entries)                           \
775    V(Set, Has)                               \
776    V(Set, GetSize)                           \
777    V(Set, Values)                            \
778    V(Set, ForEach)                           \
779    V(SharedSet, Constructor)                 \
780    V(SharedSet, Species)                     \
781    V(SharedSet, Add)                         \
782    V(SharedSet, Clear)                       \
783    V(SharedSet, Delete)                      \
784    V(SharedSet, Entries)                     \
785    V(SharedSet, Has)                         \
786    V(SharedSet, GetSize)                     \
787    V(SharedSet, Values)                      \
788    V(SharedSet, ForEach)                     \
789    V(StringIterator, Next)                   \
790    V(String, Constructor)                    \
791    V(String, FromCharCode)                   \
792    V(String, FromCodePoint)                  \
793    V(String, Raw)                            \
794    V(String, GetSubstitution)                \
795    V(String, At)                             \
796    V(String, CharAt)                         \
797    V(String, CharCodeAt)                     \
798    V(String, IsWellFormed)                   \
799    V(String, ToWellFormed)                   \
800    V(String, CodePointAt)                    \
801    V(String, Concat)                         \
802    V(String, EndsWith)                       \
803    V(String, Includes)                       \
804    V(String, IndexOf)                        \
805    V(String, LastIndexOf)                    \
806    V(String, LocaleCompare)                  \
807    V(String, Match)                          \
808    V(String, MatchAll)                       \
809    V(String, Normalize)                      \
810    V(String, PadStart)                       \
811    V(String, PadEnd)                         \
812    V(String, Repeat)                         \
813    V(String, Replace)                        \
814    V(String, ReplaceAll)                     \
815    V(String, Search)                         \
816    V(String, Slice)                          \
817    V(String, Split)                          \
818    V(String, StartsWith)                     \
819    V(String, Substring)                      \
820    V(String, ToLocaleLowerCase)              \
821    V(String, ToLocaleUpperCase)              \
822    V(String, ToLowerCase)                    \
823    V(String, ToString)                       \
824    V(String, ToUpperCase)                    \
825    V(String, Trim)                           \
826    V(String, TrimStart)                      \
827    V(String, TrimEnd)                        \
828    V(String, TrimLeft)                       \
829    V(String, TrimRight)                      \
830    V(String, GetStringIterator)              \
831    V(String, SubStr)                         \
832    V(String, GetLength)                      \
833    V(String, ThisStringValue)                \
834    V(String, Pad)                            \
835    V(Symbol, Constructor)                    \
836    V(Symbol, ToString)                       \
837    V(Symbol, ValueOf)                        \
838    V(Symbol, For)                            \
839    V(Symbol, KeyFor)                         \
840    V(Symbol, DescriptionGetter)              \
841    V(Symbol, ThisSymbolValue)                \
842    V(Symbol, ToPrimitive)                    \
843    V(Symbol, SymbolDescriptiveString)        \
844    V(TypedArray, BaseConstructor)            \
845    V(TypedArray, Int8ArrayConstructor)       \
846    V(TypedArray, Uint8ArrayConstructor)      \
847    V(TypedArray, Uint8ClampedArrayConstructor) \
848    V(TypedArray, Int16ArrayConstructor)      \
849    V(TypedArray, Uint16ArrayConstructor)     \
850    V(TypedArray, Int32ArrayConstructor)      \
851    V(TypedArray, Uint32ArrayConstructor)     \
852    V(TypedArray, Float32ArrayConstructor)    \
853    V(TypedArray, Float64ArrayConstructor)    \
854    V(TypedArray, BigInt64ArrayConstructor)   \
855    V(TypedArray, BigUint64ArrayConstructor)  \
856    V(TypedArray, Fill)                       \
857    V(TypedArray, Find)                       \
858    V(TypedArray, FindIndex)                  \
859    V(TypedArray, FindLast)                   \
860    V(TypedArray, FindLastIndex)              \
861    V(TypedArray, IndexOf)                    \
862    V(TypedArray, LastIndexOf)                \
863    V(TypedArray, Reduce)                     \
864    V(TypedArray, ReduceRight)                \
865    V(TypedArray, Reverse)                    \
866    V(TypedArray, Some)                       \
867    V(TypedArray, ToLocaleString)             \
868    V(TypedArray, ToString)                   \
869    V(TypedArray, Includes)                   \
870    V(TypedArray, From)                       \
871    V(TypedArray, Of)                         \
872    V(TypedArray, Species)                    \
873    V(TypedArray, GetBuffer)                  \
874    V(TypedArray, GetByteLength)              \
875    V(TypedArray, GetByteOffset)              \
876    V(TypedArray, CopyWithin)                 \
877    V(TypedArray, Entries)                    \
878    V(TypedArray, Every)                      \
879    V(TypedArray, Filter)                     \
880    V(TypedArray, ForEach)                    \
881    V(TypedArray, Join)                       \
882    V(TypedArray, Keys)                       \
883    V(TypedArray, GetLength)                  \
884    V(TypedArray, Map)                        \
885    V(TypedArray, Set)                        \
886    V(TypedArray, Slice)                      \
887    V(TypedArray, Sort)                       \
888    V(TypedArray, ToSorted)                   \
889    V(TypedArray, Subarray)                   \
890    V(TypedArray, Values)                     \
891    V(TypedArray, With)                       \
892    V(TypedArray, ToStringTag)                \
893    V(TypedArray, At)                         \
894    V(TypedArray, ToReversed)                 \
895    V(SharedTypedArray, BaseConstructor)              \
896    V(SharedTypedArray, Int8ArrayConstructor)         \
897    V(SharedTypedArray, Uint8ArrayConstructor)        \
898    V(SharedTypedArray, Uint8ClampedArrayConstructor) \
899    V(SharedTypedArray, Int16ArrayConstructor)        \
900    V(SharedTypedArray, Uint16ArrayConstructor)       \
901    V(SharedTypedArray, Int32ArrayConstructor)        \
902    V(SharedTypedArray, Uint32ArrayConstructor)       \
903    V(SharedTypedArray, Float32ArrayConstructor)      \
904    V(SharedTypedArray, Float64ArrayConstructor)      \
905    V(SharedTypedArray, BigInt64ArrayConstructor)     \
906    V(SharedTypedArray, BigUint64ArrayConstructor)    \
907    V(SharedTypedArray, Fill)                 \
908    V(SharedTypedArray, Find)                 \
909    V(SharedTypedArray, FindIndex)            \
910    V(SharedTypedArray, IndexOf)              \
911    V(SharedTypedArray, Reduce)               \
912    V(SharedTypedArray, Reverse)              \
913    V(SharedTypedArray, Some)                 \
914    V(SharedTypedArray, ToLocaleString)       \
915    V(SharedTypedArray, ToString)             \
916    V(SharedTypedArray, Includes)             \
917    V(SharedTypedArray, From)                 \
918    V(SharedTypedArray, Of)                   \
919    V(SharedTypedArray, Species)              \
920    V(SharedTypedArray, GetBuffer)            \
921    V(SharedTypedArray, GetByteLength)        \
922    V(SharedTypedArray, GetByteOffset)        \
923    V(SharedTypedArray, GetLength)            \
924    V(SharedTypedArray, CopyWithin)           \
925    V(SharedTypedArray, Entries)              \
926    V(SharedTypedArray, Every)                \
927    V(SharedTypedArray, Filter)               \
928    V(SharedTypedArray, ForEach)              \
929    V(SharedTypedArray, Join)                 \
930    V(SharedTypedArray, Keys)                 \
931    V(SharedTypedArray, Map)                  \
932    V(SharedTypedArray, Set)                  \
933    V(SharedTypedArray, Slice)                \
934    V(SharedTypedArray, Sort)                 \
935    V(SharedTypedArray, Subarray)             \
936    V(SharedTypedArray, Values)               \
937    V(SharedTypedArray, ToStringTag)          \
938    V(SharedTypedArray, At)                   \
939    V(WeakMap, Constructor)                   \
940    V(WeakMap, Delete)                        \
941    V(WeakMap, Get)                           \
942    V(WeakMap, Has)                           \
943    V(WeakMap, Set)                           \
944    V(WeakSet, Constructor)                   \
945    V(WeakSet, Delete)                        \
946    V(WeakSet, Add)                           \
947    V(WeakSet, Has)                           \
948    V(WeakRef, Constructor)                   \
949    V(WeakRef, Deref)                         \
950    V(FinalizationRegistry, Constructor)      \
951    V(FinalizationRegistry, Register)         \
952    V(FinalizationRegistry, Unregister)       \
953    V(ArrayList, Constructor)                 \
954    V(ArrayList, Add)                         \
955    V(ArrayList, Insert)                      \
956    V(ArrayList, Clear)                       \
957    V(ArrayList, Clone)                       \
958    V(ArrayList, Has)                         \
959    V(ArrayList, GetCapacity)                 \
960    V(ArrayList, IncreaseCapacityTo)          \
961    V(ArrayList, TrimToCurrentLength)         \
962    V(ArrayList, GetIndexOf)                  \
963    V(ArrayList, IsEmpty)                     \
964    V(ArrayList, GetLastIndexOf)              \
965    V(ArrayList, RemoveByIndex)               \
966    V(ArrayList, Remove)                      \
967    V(ArrayList, RemoveByRange)               \
968    V(ArrayList, ReplaceAllElements)          \
969    V(ArrayList, Sort)                        \
970    V(ArrayList, SubArrayList)                \
971    V(ArrayList, ConvertToArray)              \
972    V(ArrayList, ForEach)                     \
973    V(ArrayList, GetIteratorObj)              \
974    V(ArrayList, Get)                         \
975    V(ArrayList, Set)                         \
976    V(ArrayList, GetSize)                     \
977    V(BitVector, Constructor)                 \
978    V(BitVector, Push)                        \
979    V(BitVector, Pop)                         \
980    V(BitVector, Has)                         \
981    V(BitVector, SetBitsByRange)              \
982    V(BitVector, GetBitsByRange)              \
983    V(BitVector, Resize)                      \
984    V(BitVector, SetAllBits)                  \
985    V(BitVector, GetBitCountByRange)          \
986    V(BitVector, GetIndexOf)                  \
987    V(BitVector, GetLastIndexOf)              \
988    V(BitVector, FlipBitByIndex)              \
989    V(BitVector, FlipBitsByRange)             \
990    V(BitVector, GetSize)                     \
991    V(BitVector, GetIteratorObj)              \
992    V(ListFormat, Constructor)                \
993    V(ListFormat, SupportedLocalesOf)         \
994    V(ListFormat, Format)                     \
995    V(ListFormat, FormatToParts)              \
996    V(ListFormat, ResolvedOptions)            \
997    V(LightWeightMap, Constructor)            \
998    V(LightWeightMap, HasAll)                 \
999    V(LightWeightMap, HasKey)                 \
1000    V(LightWeightMap, HasValue)               \
1001    V(LightWeightMap, IncreaseCapacityTo)     \
1002    V(LightWeightMap, Entries)                \
1003    V(LightWeightMap, Get)                    \
1004    V(LightWeightMap, GetIndexOfKey)          \
1005    V(LightWeightMap, GetIndexOfValue)        \
1006    V(LightWeightMap, IsEmpty)                \
1007    V(LightWeightMap, GetKeyAt)               \
1008    V(LightWeightMap, Keys)                   \
1009    V(LightWeightMap, SetAll)                 \
1010    V(LightWeightMap, Set)                    \
1011    V(LightWeightMap, Remove)                 \
1012    V(LightWeightMap, RemoveAt)               \
1013    V(LightWeightMap, Clear)                  \
1014    V(LightWeightMap, SetValueAt)             \
1015    V(LightWeightMap, ForEach)                \
1016    V(LightWeightMap, ToString)               \
1017    V(LightWeightMap, GetValueAt)             \
1018    V(LightWeightMap, Length)                 \
1019    V(LightWeightSet, Constructor)            \
1020    V(LightWeightSet, Add)                    \
1021    V(LightWeightSet, AddAll)                 \
1022    V(LightWeightSet, IsEmpty)                \
1023    V(LightWeightSet, GetValueAt)             \
1024    V(LightWeightSet, HasAll)                 \
1025    V(LightWeightSet, Has)                    \
1026    V(LightWeightSet, HasHash)                \
1027    V(LightWeightSet, Equal)                  \
1028    V(LightWeightSet, IncreaseCapacityTo)     \
1029    V(LightWeightSet, GetIteratorObj)         \
1030    V(LightWeightSet, Values)                 \
1031    V(LightWeightSet, Entries)                \
1032    V(LightWeightSet, ForEach)                \
1033    V(LightWeightSet, GetIndexOf)             \
1034    V(LightWeightSet, Remove)                 \
1035    V(LightWeightSet, RemoveAt)               \
1036    V(LightWeightSet, Clear)                  \
1037    V(LightWeightSet, ToString)               \
1038    V(LightWeightSet, ToArray)                \
1039    V(LightWeightSet, GetSize)                \
1040    V(PlainArray, Constructor)                \
1041    V(PlainArray, Add)                        \
1042    V(PlainArray, Clear)                      \
1043    V(PlainArray, Clone)                      \
1044    V(PlainArray, Has)                        \
1045    V(PlainArray, Get)                        \
1046    V(PlainArray, GetIteratorObj)             \
1047    V(PlainArray, ForEach)                    \
1048    V(PlainArray, ToString)                   \
1049    V(PlainArray, GetIndexOfKey)              \
1050    V(PlainArray, GetIndexOfValue)            \
1051    V(PlainArray, IsEmpty)                    \
1052    V(PlainArray, GetKeyAt)                   \
1053    V(PlainArray, Remove)                     \
1054    V(PlainArray, RemoveAt)                   \
1055    V(PlainArray, RemoveRangeFrom)            \
1056    V(PlainArray, SetValueAt)                 \
1057    V(PlainArray, GetValueAt)                 \
1058    V(PlainArray, GetSize)                    \
1059    V(HashMap, Constructor)                   \
1060    V(HashMap, HasKey)                        \
1061    V(HashMap, HasValue)                      \
1062    V(HashMap, Replace)                       \
1063    V(HashMap, Keys)                          \
1064    V(HashMap, Values)                        \
1065    V(HashMap, GetIteratorObj)                \
1066    V(HashMap, Entries)                       \
1067    V(HashMap, ForEach)                       \
1068    V(HashMap, Set)                           \
1069    V(HashMap, SetAll)                        \
1070    V(HashMap, Remove)                        \
1071    V(HashMap, Get)                           \
1072    V(HashMap, Clear)                         \
1073    V(HashMap, GetLength)                     \
1074    V(HashMap, IsEmpty)                       \
1075    V(HashSet, Constructor)                   \
1076    V(HashSet, IsEmpty)                       \
1077    V(HashSet, Has)                           \
1078    V(HashSet, Add)                           \
1079    V(HashSet, Remove)                        \
1080    V(HashSet, Clear)                         \
1081    V(HashSet, GetLength)                     \
1082    V(HashSet, GetIteratorObj)                \
1083    V(HashSet, Values)                        \
1084    V(HashSet, Entries)                       \
1085    V(HashSet, ForEach)                       \
1086    V(TreeMap, Constructor)                   \
1087    V(TreeMap, HasKey)                        \
1088    V(TreeMap, HasValue)                      \
1089    V(TreeMap, GetFirstKey)                   \
1090    V(TreeMap, GetLastKey)                    \
1091    V(TreeMap, Set)                           \
1092    V(TreeMap, Get)                           \
1093    V(TreeMap, SetAll)                        \
1094    V(TreeMap, Remove)                        \
1095    V(TreeMap, Clear)                         \
1096    V(TreeMap, GetLowerKey)                   \
1097    V(TreeMap, GetHigherKey)                  \
1098    V(TreeMap, Replace)                       \
1099    V(TreeMap, IsEmpty)                       \
1100    V(TreeMap, GetLength)                     \
1101    V(TreeMap, Keys)                          \
1102    V(TreeMap, Values)                        \
1103    V(TreeMap, Entries)                       \
1104    V(TreeMap, ForEach)                       \
1105    V(TreeSet, Constructor)                   \
1106    V(TreeSet, Add)                           \
1107    V(TreeSet, Remove)                        \
1108    V(TreeSet, Clear)                         \
1109    V(TreeSet, Has)                           \
1110    V(TreeSet, GetFirstValue)                 \
1111    V(TreeSet, GetLastValue)                  \
1112    V(TreeSet, GetLowerValue)                 \
1113    V(TreeSet, GetHigherValue)                \
1114    V(TreeSet, PopFirst)                      \
1115    V(TreeSet, PopLast)                       \
1116    V(TreeSet, IsEmpty)                       \
1117    V(TreeSet, GetLength)                     \
1118    V(TreeSet, Values)                        \
1119    V(TreeSet, ForEach)                       \
1120    V(TreeSet, Entries)                       \
1121    V(Deque, Constructor)                     \
1122    V(Deque, InsertFront)                     \
1123    V(Deque, InsertEnd)                       \
1124    V(Deque, GetFirst)                        \
1125    V(Deque, GetLast)                         \
1126    V(Deque, GetFront)                        \
1127    V(Deque, GetTail)                         \
1128    V(Deque, Has)                             \
1129    V(Deque, PopFirst)                        \
1130    V(Deque, PopLast)                         \
1131    V(Deque, ForEach)                         \
1132    V(Deque, GetIteratorObj)                  \
1133    V(Deque, GetSize)                         \
1134    V(Stack, Constructor)                     \
1135    V(Stack, Iterator)                        \
1136    V(Stack, IsEmpty)                         \
1137    V(Stack, Push)                            \
1138    V(Stack, Peek)                            \
1139    V(Stack, Pop)                             \
1140    V(Stack, Locate)                          \
1141    V(Stack, ForEach)                         \
1142    V(Stack, GetLength)                       \
1143    V(Vector, Constructor)                    \
1144    V(Vector, Add)                            \
1145    V(Vector, Insert)                         \
1146    V(Vector, SetLength)                      \
1147    V(Vector, GetCapacity)                    \
1148    V(Vector, IncreaseCapacityTo)             \
1149    V(Vector, Get)                            \
1150    V(Vector, GetIndexOf)                     \
1151    V(Vector, GetIndexFrom)                   \
1152    V(Vector, IsEmpty)                        \
1153    V(Vector, GetLastElement)                 \
1154    V(Vector, GetLastIndexOf)                 \
1155    V(Vector, GetLastIndexFrom)               \
1156    V(Vector, Remove)                         \
1157    V(Vector, RemoveByIndex)                  \
1158    V(Vector, RemoveByRange)                  \
1159    V(Vector, Set)                            \
1160    V(Vector, SubVector)                      \
1161    V(Vector, ToString)                       \
1162    V(Vector, GetSize)                        \
1163    V(Vector, ForEach)                        \
1164    V(Vector, ReplaceAllElements)             \
1165    V(Vector, Has)                            \
1166    V(Vector, Sort)                           \
1167    V(Vector, Clear)                          \
1168    V(Vector, Clone)                          \
1169    V(Vector, CopyToArray)                    \
1170    V(Vector, ConvertToArray)                 \
1171    V(Vector, GetFirstElement)                \
1172    V(Vector, TrimToCurrentLength)            \
1173    V(Vector, GetIteratorObj)                 \
1174    V(Queue, Constructor)                     \
1175    V(Queue, Add)                             \
1176    V(Queue, GetFirst)                        \
1177    V(Queue, Pop)                             \
1178    V(Queue, ForEach)                         \
1179    V(Queue, GetIteratorObj)                  \
1180    V(Queue, GetSize)                         \
1181    V(List, Constructor)                      \
1182    V(List, Add)                              \
1183    V(List, GetFirst)                         \
1184    V(List, GetLast)                          \
1185    V(List, Insert)                           \
1186    V(List, Clear)                            \
1187    V(List, RemoveByIndex)                    \
1188    V(List, Remove)                           \
1189    V(List, Has)                              \
1190    V(List, IsEmpty)                          \
1191    V(List, Get)                              \
1192    V(List, GetIndexOf)                       \
1193    V(List, GetLastIndexOf)                   \
1194    V(List, Set)                              \
1195    V(List, ForEach)                          \
1196    V(List, ReplaceAllElements)               \
1197    V(List, GetIteratorObj)                   \
1198    V(List, Equal)                            \
1199    V(List, Sort)                             \
1200    V(List, ConvertToArray)                   \
1201    V(List, GetSubList)                       \
1202    V(List, Length)                           \
1203    V(LinkedList, Constructor)                \
1204    V(LinkedList, Length)                     \
1205    V(LinkedList, Add)                        \
1206    V(LinkedList, GetFirst)                   \
1207    V(LinkedList, GetLast)                    \
1208    V(LinkedList, Insert)                     \
1209    V(LinkedList, AddFirst)                   \
1210    V(LinkedList, Clear)                      \
1211    V(LinkedList, Clone)                      \
1212    V(LinkedList, Has)                        \
1213    V(LinkedList, Get)                        \
1214    V(LinkedList, GetIndexOf)                 \
1215    V(LinkedList, GetLastIndexOf)             \
1216    V(LinkedList, RemoveByIndex)              \
1217    V(LinkedList, Remove)                     \
1218    V(LinkedList, RemoveFirst)                \
1219    V(LinkedList, RemoveLast)                 \
1220    V(LinkedList, RemoveFirstFound)           \
1221    V(LinkedList, RemoveLastFound)            \
1222    V(LinkedList, Set)                        \
1223    V(LinkedList, ConvertToArray)             \
1224    V(LinkedList, ForEach)                    \
1225    V(LinkedList, GetIteratorObj)
1226
1227#define ABSTRACT_OPERATION_LIST(V) \
1228    V(JSTaggedValue, ToString)     \
1229
1230#define MEM_ALLOCATE_AND_GC_LIST(V)  \
1231    V(FullGC_RunPhases)              \
1232    V(PartialGC_RunPhases)           \
1233    V(ConcurrentMarking)             \
1234    V(ConcurrentMarkingInitialize)   \
1235    V(IncrementalMarking)            \
1236    V(IncrementalMarkingInitialize)  \
1237    V(WaitConcurrentMarkingFinished) \
1238    V(ReMarking)                     \
1239    V(ConcurrentSweepingInitialize)  \
1240    V(ConcurrentSweepingWait)        \
1241    V(ParallelEvacuationInitialize)  \
1242    V(ParallelEvacuation)            \
1243    V(ParallelUpdateReference)       \
1244    V(WaitUpdateFinished)            \
1245    V(UpdateRoot)                    \
1246    V(UpdateWeakReference)           \
1247    V(ParallelEvacuator)             \
1248    V(ParallelEvacuatorInitialize)   \
1249    V(ParallelEvacuatorFinalize)     \
1250    V(HugeSpaceExpand)               \
1251    V(NonMovableSpaceExpand)         \
1252    V(HeapPrepare)                   \
1253
1254// NOLINTNEXTLINE(cppcoreguidelines-macro-usage)
1255#define INTERPRETER_CALLER_ID(name) INTERPRETER_ID_##name,
1256#define RUNTIME_CALLER_ID(name) RUNTIME_ID_##name,
1257// NOLINTNEXTLINE(cppcoreguidelines-macro-usage)
1258// NOLINTNEXTLINE(cppcoreguidelines-macro-usage)
1259#define BUILTINS_API_ID(class, name) BUILTINS_ID_##class##_##name,
1260// NOLINTNEXTLINE(cppcoreguidelines-macro-usage)
1261#define ABSTRACT_OPERATION_ID(class, name) ABSTRACT_ID_##class##_##name,
1262
1263#define MEM_ALLOCATE_AND_GC_ID(name) MEM_ID##name,
1264
1265enum EcmaRuntimeCallerId {
1266    INTERPRETER_CALLER_LIST(INTERPRETER_CALLER_ID) BUILTINS_API_LIST(BUILTINS_API_ID)
1267    ABSTRACT_OPERATION_LIST(ABSTRACT_OPERATION_ID)
1268    MEM_ALLOCATE_AND_GC_LIST(MEM_ALLOCATE_AND_GC_ID)
1269#define DEF_RUNTIME_ID(name) RUNTIME_ID_##name,
1270    RUNTIME_STUB_WITH_GC_LIST(DEF_RUNTIME_ID)
1271#undef DEF_RUNTIME_ID
1272    RUNTIME_CALLER_NUMBER,
1273};
1274
1275#if ECMASCRIPT_ENABLE_INTERPRETER_RUNTIME_STAT
1276// NOLINTNEXTLINE(cppcoreguidelines-macro-usage)
1277#define INTERPRETER_TRACE(thread, name)                                                                    \
1278    [[maybe_unused]] JSThread *_js_thread_ = thread;                                                       \
1279    [[maybe_unused]] EcmaRuntimeStat *_run_stat_ = _js_thread_->GetCurrentEcmaContext()->GetRuntimeStat(); \
1280    RuntimeTimerScope interpret_##name##_scope_(INTERPRETER_CALLER_ID(name) _run_stat_)
1281#if defined(ECMASCRIPT_SUPPORT_CPUPROFILER)
1282// NOLINTNEXTLINE(cppcoreguidelines-macro-usage)
1283#define RUNTIME_TRACE(thread, name)                                                                        \
1284    [[maybe_unused]] JSThread *_js_thread_ = thread;                                                       \
1285    [[maybe_unused]] EcmaRuntimeStat *_run_stat_ = _js_thread_->GetCurrentEcmaContext()->GetRuntimeStat(); \
1286    RuntimeTimerScope interpret_##name##_scope_(RUNTIME_CALLER_ID(name) _run_stat_);                       \
1287    [[maybe_unused]] RuntimeStateScope _runtime_state_##name##_scope_(_js_thread_)
1288#else
1289#define RUNTIME_TRACE(thread, name)                                                                        \
1290    [[maybe_unused]] JSThread *_js_thread_ = thread;                                                       \
1291    [[maybe_unused]] EcmaRuntimeStat *_run_stat_ = _js_thread_->GetCurrentEcmaContext()->GetRuntimeStat(); \
1292    RuntimeTimerScope interpret_##name##_scope_(RUNTIME_CALLER_ID(name) _run_stat_);
1293#endif
1294#else
1295#define INTERPRETER_TRACE(thread, name) static_cast<void>(0) // NOLINT(cppcoreguidelines-macro-usage)
1296#if defined(ECMASCRIPT_SUPPORT_CPUPROFILER)
1297// NOLINTNEXTLINE(cppcoreguidelines-macro-usage)
1298#define RUNTIME_TRACE(thread, name)                                                            \
1299    [[maybe_unused]] JSThread *_js_thread_ = thread;                                           \
1300    [[maybe_unused]] RuntimeStateScope _runtime_state_##name##_scope_(_js_thread_)
1301#else
1302#define RUNTIME_TRACE(thread, name) static_cast<void>(0) // NOLINT(cppcoreguidelines-macro-usage)
1303#endif // defined(ECMASCRIPT_SUPPORT_CPUPROFILER)
1304#endif // ECMASCRIPT_ENABLE_INTERPRETER_RUNTIME_STAT
1305
1306#if ECMASCRIPT_ENABLE_BUILTINS_RUNTIME_STAT
1307// NOLINTNEXTLINE(cppcoreguidelines-macro-usage)
1308#define BUILTINS_API_TRACE(thread, class, name)                                                            \
1309    [[maybe_unused]] JSThread *_js_thread_ = thread;                                                       \
1310    [[maybe_unused]] EcmaRuntimeStat *_run_stat_ = _js_thread_->GetCurrentEcmaContext()->GetRuntimeStat(); \
1311    RuntimeTimerScope builtins_##class##name##_scope_(BUILTINS_API_ID(class, name) _run_stat_)
1312
1313// NOLINTNEXTLINE(cppcoreguidelines-macro-usage)
1314#define ABSTRACT_OPERATION_TRACE(thread, class, name)                                                      \
1315    [[maybe_unused]] JSThread *_js_thread_ = thread;                                                       \
1316    [[maybe_unused]] EcmaRuntimeStat *_run_stat_ = _js_thread_->GetCurrentEcmaContext()->GetRuntimeStat(); \
1317    RuntimeTimerScope abstract_##class##name##_scope_(ABSTRACT_OPERATION_ID(class, name) _run_stat_)
1318#else
1319#define BUILTINS_API_TRACE(thread, class, name) static_cast<void>(0) // NOLINT(cppcoreguidelines-macro-usage)
1320#define ABSTRACT_OPERATION_TRACE(class, name) static_cast<void>(0) // NOLINT(cppcoreguidelines-macro-usage)
1321#endif // ECMASCRIPT_ENABLE_BUILTINS_RUNTIME_STAT
1322
1323#if ECMASCRIPT_ENABLE_ALLOCATE_AND_GC_RUNTIME_STAT
1324#define MEM_ALLOCATE_AND_GC_TRACE(vm, name)                                                     \
1325    CHECK_JS_THREAD(vm);                                                                        \
1326    EcmaRuntimeStat *_run_stat_ = vm->GetJSThread()->GetCurrentEcmaContext()->GetRuntimeStat(); \
1327    RuntimeTimerScope mem_##name##_scope_(MEM_ALLOCATE_AND_GC_ID(name) _run_stat_)
1328#else
1329#define MEM_ALLOCATE_AND_GC_TRACE(vm, name) static_cast<void>(0) // NOLINT(cppcoreguidelines-macro-usage)
1330#endif // ECMASCRIPT_ENABLE_ALLOCATE_AND_GC_RUNTIME_STAT
1331}  // namespace panda::ecmascript
1332#endif
1333