• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2025 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_GLOBAL_ENV_FIELDS_H
17 #define ECMASCRIPT_GLOBAL_ENV_FIELDS_H
18 
19 #include <cstdint>
20 #include "compiler/builtins/builtins_call_signature_list.h"
21 
22 #define GLOBAL_ENV_SELF_FIELD(V)                                                                    \
23     V(JSTaggedValue, GlobalEnv, GLOBAL_ENV_INDEX)
24 
25 // NOLINTNEXTLINE(cppcoreguidelines-macro-usage)
26 #define GLOBAL_ENV_COMMON_FIELDS(V)                                                                 \
27     /* Function */                                                                                  \
28     V(JSTaggedValue, ObjectFunction, OBJECT_FUNCTION_INDEX)                                         \
29     V(JSTaggedValue, ObjectFunctionClass, OBJECT_FUNCTION_CLASS_INDEX)                              \
30     V(JSTaggedValue, ObjectFunctionNapiClass, OBJECT_FUNCTION_NAPI_CLASS_INDEX)                     \
31     V(JSTaggedValue, ObjectFunctionPrototype, OBJECT_FUNCTION_PROTOTYPE_INDEX)                      \
32     V(JSTaggedValue, ObjectFunctionPrototypeClass, OBJECT_FUNCTION_PROTOTYPE_CLASS_INDEX)           \
33     V(JSTaggedValue, ObjectFunctionTsNapiClass, OBJECT_FUNCTION_TS_NAPI_CLASS_INDEX)                \
34     V(JSTaggedValue, FunctionFunction, FUNCTION_FUNCTION_INDEX)                                     \
35     V(JSTaggedValue, FunctionPrototype, FUNCTION_PROTOTYPE_INDEX)                                   \
36     V(JSTaggedValue, NumberFunction, NUMBER_FUNCTION_INDEX)                                         \
37     V(JSTaggedValue, NumberPrototype, NUMBER_PROTOTYPE_INDEX)                                       \
38     V(JSTaggedValue, BigIntFunction, BIGINT_FUNCTION_INDEX)                                         \
39     V(JSTaggedValue, DateFunction, DATE_FUNCTION_INDEX)                                             \
40     V(JSTaggedValue, DatePrototype, DATE_PROTOTYPE_INDEX)                                           \
41     V(JSTaggedValue, BooleanFunction, BOOLEAN_FUNCTION_INDEX)                                       \
42     V(JSTaggedValue, BooleanPrototype, BOOLEAN_PROTOTYPE_INDEX)                                     \
43     V(JSTaggedValue, ErrorFunction, ERROR_FUNCTION_INDEX)                                           \
44     V(JSTaggedValue, ArrayFunction, ARRAY_FUNCTION_INDEX)                                           \
45     V(JSTaggedValue, ArrayPrototype, ARRAY_PROTOTYPE_INDEX)                                         \
46     V(JSTaggedValue, TypedArrayFunction, TYPED_ARRAY_FUNCTION_INDEX)                                \
47     V(JSTaggedValue, TypedArrayPrototype, TYPED_ARRAY_PROTOTYPE_INDEX)                              \
48     V(JSTaggedValue, Int8ArrayFunction, INT8_ARRAY_FUNCTION_INDEX)                                  \
49     V(JSTaggedValue, Uint8ArrayFunction, UINT8_ARRAY_FUNCTION_INDEX)                                \
50     V(JSTaggedValue, Uint8ClampedArrayFunction, UINT8_CLAMPED_ARRAY_FUNCTION_INDEX)                 \
51     V(JSTaggedValue, Int16ArrayFunction, INT16_ARRAY_FUNCTION_INDEX)                                \
52     V(JSTaggedValue, Uint16ArrayFunction, UINT16_ARRAY_FUNCTION_INDEX)                              \
53     V(JSTaggedValue, Int32ArrayFunction, INT32_ARRAY_FUNCTION_INDEX)                                \
54     V(JSTaggedValue, Uint32ArrayFunction, UINT32_ARRAY_FUNCTION_INDEX)                              \
55     V(JSTaggedValue, Float32ArrayFunction, FLOAT32_ARRAY_FUNCTION_INDEX)                            \
56     V(JSTaggedValue, Float64ArrayFunction, FLOAT64_ARRAY_FUNCTION_INDEX)                            \
57     V(JSTaggedValue, BigInt64ArrayFunction, BIGINT64_ARRAY_FUNCTION_INDEX)                          \
58     V(JSTaggedValue, BigUint64ArrayFunction, BIGUINT64_ARRAY_FUNCTION_INDEX)                        \
59     V(JSTaggedValue, Int8ArrayFunctionPrototype, INT8_ARRAY_FUNCTION_PROTOTYPE_INDEX)               \
60     V(JSTaggedValue, Uint8ArrayFunctionPrototype, UINT8_ARRAY_FUNCTION_PROTOTYPE_INDEX)             \
61     V(JSTaggedValue, Uint8ClampedArrayFunctionPrototype, UINT8_CLAMPED_ARRAY_FUNCTION_PROTO_INDEX)  \
62     V(JSTaggedValue, Int16ArrayFunctionPrototype, INT16_ARRAY_FUNCTION_PROTOTYPE_INDEX)             \
63     V(JSTaggedValue, Uint16ArrayFunctionPrototype, UINT16_ARRAY_FUNCTION_PROTOTYPE_INDEX)           \
64     V(JSTaggedValue, Int32ArrayFunctionPrototype, INT32_ARRAY_FUNCTION_PROTOTYPE_INDEX)             \
65     V(JSTaggedValue, Uint32ArrayFunctionPrototype, UINT32_ARRAY_FUNCTION_PROTOTYPE_INDEX)           \
66     V(JSTaggedValue, Float32ArrayFunctionPrototype, FLOAT32_ARRAY_FUNCTION_PROTOTYPE_INDEX)         \
67     V(JSTaggedValue, Float64ArrayFunctionPrototype, FLOAT64_ARRAY_FUNCTION_PROTOTYPE_INDEX)         \
68     V(JSTaggedValue, BigInt64ArrayFunctionPrototype, BIGINT64_ARRAY_FUNCTION_PROTOTYPE_INDEX)       \
69     V(JSTaggedValue, BigUint64ArrayFunctionPrototype, BIGUINT64_ARRAY_FUNCTION_PROTOTYPE_INDEX)     \
70     V(JSTaggedValue, MapClass, MAP_CLASS_INDEX)                                                     \
71     V(JSTaggedValue, SetClass, SET_CLASS_INDEX)                                                     \
72     V(JSTaggedValue, ArrayClass, ARRAY_CLASS_INDEX)                                                 \
73     V(JSTaggedValue, Int8ArrayRootHclass, INT8_ARRAY_ROOT_HCLASS_INDEX)                             \
74     V(JSTaggedValue, Uint8ArrayRootHclass, UINT8_ARRAY_ROOT_HCLASS_INDEX)                           \
75     V(JSTaggedValue, Uint8ClampedArrayRootHclass, UINT8_CLAMPED_ARRAY_ROOT_HCLASS_INDEX)            \
76     V(JSTaggedValue, Int16ArrayRootHclass, INT16_ARRAY_ROOT_HCLASS_INDEX)                           \
77     V(JSTaggedValue, Uint16ArrayRootHclass, UINT16_ARRAY_ROOT_HCLASS_INDEX)                         \
78     V(JSTaggedValue, Int32ArrayRootHclass, INT32_ARRAY_ROOT_HCLASS_INDEX)                           \
79     V(JSTaggedValue, Uint32ArrayRootHclass, UINT32_ARRAY_ROOT_HCLASS_INDEX)                         \
80     V(JSTaggedValue, Float32ArrayRootHclass, FLOAT32_ARRAY_ROOT_HCLASS_INDEX)                       \
81     V(JSTaggedValue, Float64ArrayRootHclass, FLOAT64_ARRAY_ROOT_HCLASS_INDEX)                       \
82     V(JSTaggedValue, BigInt64ArrayRootHclass, BIGINT64_ARRAY_ROOT_HCLASS_INDEX)                     \
83     V(JSTaggedValue, BigUint64ArrayRootHclass, BIGUINT64_ARRAY_ROOT_HCLASS_INDEX)                   \
84     V(JSTaggedValue, Int8ArrayRootHclassOnHeap, INT8_ARRAY_ROOT_HCLASS_ON_HEAP_INDEX)               \
85     V(JSTaggedValue, Uint8ArrayRootHclassOnHeap, UINT8_ARRAY_ROOT_HCLASS_ON_HEAP_INDEX)             \
86     V(JSTaggedValue, Uint8ClampedArrayRootHclassOnHeap, UINT8_CLAMPED_ARRAY_ROOT_HCLASS_ON_HEAP_INDEX)  \
87     V(JSTaggedValue, Int16ArrayRootHclassOnHeap, INT16_ARRAY_ROOT_HCLASS_ON_HEAP_INDEX)             \
88     V(JSTaggedValue, Uint16ArrayRootHclassOnHeap, UINT16_ARRAY_ROOT_HCLASS_ON_HEAP_INDEX)           \
89     V(JSTaggedValue, Int32ArrayRootHclassOnHeap, INT32_ARRAY_ROOT_HCLASS_ON_HEAP_INDEX)             \
90     V(JSTaggedValue, Uint32ArrayRootHclassOnHeap, UINT32_ARRAY_ROOT_HCLASS_ON_HEAP_INDEX)           \
91     V(JSTaggedValue, Float32ArrayRootHclassOnHeap, FLOAT32_ARRAY_ROOT_HCLASS_ON_HEAP_INDEX)         \
92     V(JSTaggedValue, Float64ArrayRootHclassOnHeap, FLOAT64_ARRAY_ROOT_HCLASS_ON_HEAP_INDEX)         \
93     V(JSTaggedValue, BigInt64ArrayRootHclassOnHeap, BIGINT64_ARRAY_ROOT_HCLASS_ON_HEAP_INDEX)       \
94     V(JSTaggedValue, BigUint64ArrayRootHclassOnHeap, BIGUINT64_ARRAY_ROOT_HCLASS_ON_HEAP_INDEX)     \
95     V(JSTaggedValue, ArrayBufferFunction, ARRAY_BUFFER_FUNCTION_INDEX)                              \
96     V(JSTaggedValue, SharedArrayBufferFunction, SHAREDARRAY_BUFFER_FUNCTION_INDEX)                  \
97     V(JSTaggedValue, ArrayProtoValuesFunction, ARRAY_PROTO_VALUES_FUNCTION_INDEX)                   \
98     V(JSTaggedValue, ArraySpeciesAccessor, ARRAY_SPECIES_ACCESSOR)                                  \
99     V(JSTaggedValue, SetProtoValuesFunction, SET_PROTO_VALUES_FUNCTION_INDEX)                       \
100     V(JSTaggedValue, MapProtoEntriesFunction, MAP_PROTO_ENTRIES_FUNCTION_INDEX)                     \
101     V(JSTaggedValue, StringProtoIterFunction, STRING_PROTO_ITER_FUNCTION_INDEX)                     \
102     V(JSTaggedValue, TypedArrayProtoValuesFunction, TYPED_ARRAY_PROTO_VALUES_FUNCTION_INDEX)        \
103     V(JSTaggedValue, DataViewFunction, DATA_VIEW_FUNCTION_INDEX)                                    \
104     V(JSTaggedValue, DataViewPrototype, DATA_VIEW_PROTOTYPE_INDEX)                                  \
105     V(JSTaggedValue, SymbolFunction, SYMBOL_FUNCTION_INDEX)                                         \
106     V(JSTaggedValue, RangeErrorFunction, RANGE_ERROR_FUNCTION_INDEX)                                \
107     V(JSTaggedValue, ReferenceErrorFunction, REFERENCE_ERROR_FUNCTION_INDEX)                        \
108     V(JSTaggedValue, TypeErrorFunction, TYPE_ERROR_FUNCTION_INDEX)                                  \
109     V(JSTaggedValue, AggregateErrorFunction, AGGREGATE_ERROR_FUNCTION_INDEX)                        \
110     V(JSTaggedValue, URIErrorFunction, URI_ERROR_FUNCTION_INDEX)                                    \
111     V(JSTaggedValue, SyntaxErrorFunction, SYNTAX_ERROR_FUNCTION_INDEX)                              \
112     V(JSTaggedValue, EvalErrorFunction, EVAL_ERROR_FUNCTION_INDEX)                                  \
113     V(JSTaggedValue, OOMErrorFunction, OOM_ERROR_FUNCTION_INDEX)                                    \
114     V(JSTaggedValue, OOMErrorObject, OOM_ERROR_Object_INDEX)                                        \
115     V(JSTaggedValue, TerminationErrorFunction, TERMINATION_ERROR_FUNCTION_INDEX)                    \
116     V(JSTaggedValue, IntlFunction, INTL_FUNCTION_INDEX)                                             \
117     V(JSTaggedValue, LocaleFunction, LOCALE_FUNCTION_INDEX)                                         \
118     V(JSTaggedValue, DateTimeFormatFunction, DATE_TIME_FORMAT_FUNCTION_INDEX)                       \
119     V(JSTaggedValue, RelativeTimeFormatFunction, RELATIVE_TIME_FORMAT_FUNCTION_INDEX)               \
120     V(JSTaggedValue, NumberFormatFunction, NUMBER_FORMAT_FUNCTION_INDEX)                            \
121     V(JSTaggedValue, CollatorFunction, COLLATOR_FUNCTION_INDEX)                                     \
122     V(JSTaggedValue, PluralRulesFunction, PLURAL_RULES_FUNCTION_INDEX)                              \
123     V(JSTaggedValue, DisplayNamesFunction, DISPLAY_NAMES_FUNCTION_INDEX)                            \
124     V(JSTaggedValue, SegmenterFunction, SEGMENTER_FUNCTION_INDEX)                                   \
125     V(JSTaggedValue, SegmentsFunction, SEGMENTS_FUNCTION_INDEX)                                     \
126     V(JSTaggedValue, SegmentIterator, SEGMENT_ITERATOR_INDEX)                                       \
127     V(JSTaggedValue, SegmentIteratorPrototype, SEGMENT_ITERATOR_PROTOTYPE_INDEX)                    \
128     V(JSTaggedValue, ListFormatFunction, LIST_FORMAT_FUNCTION_INDEX)                                \
129     V(JSTaggedValue, RegExpFunction, REGEXP_FUNCTION_INDEX)                                         \
130     V(JSTaggedValue, RegExpFuncInstanceClass, REGEXP_FUNC_INSTANCE_CLASS_INDEX)                     \
131     V(JSTaggedValue, RegExpExecFunction, REGEXP_EXEC_FUNCTION_INDEX)                                \
132     V(JSTaggedValue, RegExpSplitFunction, REGEXP_SPLIT_FUNCTION_INDEX)                              \
133     V(JSTaggedValue, RegExpSearchFunction, REGEXP_SEARCH_FUNCTION_INDEX)                            \
134     V(JSTaggedValue, RegExpMatchFunction, REGEXP_MATCH_FUNCTION_INDEX)                              \
135     V(JSTaggedValue, RegExpMatchAllFunction, REGEXP_MATCHALL_FUNCTION_INDEX)                        \
136     V(JSTaggedValue, RegExpReplaceFunction, REGEXP_REPLACE_FUNCTION_INDEX)                          \
137     V(JSTaggedValue, RegExpPrototype, REGEXP_PROTOTYPE_INDEX)                                       \
138     V(JSTaggedValue, RegExpPrototypeClass, REGEXP_PROTOTYPE_CLASS_INDEX)                            \
139     V(JSTaggedValue, BuiltinsSetFunction, BUILTINS_SET_FUNCTION_INDEX)                              \
140     V(JSTaggedValue, SetPrototype, SET_PROTOTYPE_INDEX)                                             \
141     V(JSTaggedValue, BuiltinsMapFunction, BUILTINS_MAP_FUNCTION_INDEX)                              \
142     V(JSTaggedValue, BuiltinsWeakMapFunction, BUILTINS_WEAK_MAP_FUNCTION_INDEX)                     \
143     V(JSTaggedValue, BuiltinsWeakSetFunction, BUILTINS_WEAK_SET_FUNCTION_INDEX)                     \
144     V(JSTaggedValue, BuiltinsWeakRefFunction, BUILTINS_WEAK_REF_FUNCTION_INDEX)                     \
145     V(JSTaggedValue, BuiltinsFinalizationRegistryFunction,                                          \
146         BUILTINS_FINALIZATION_REGISTRY_FUNCTION_INDEX)                                              \
147     V(JSTaggedValue, MapPrototype, MAP_PROTOTYPE_INDEX)                                             \
148     V(JSTaggedValue, MathFunction, MATH_FUNCTION_INDEX)                                             \
149     V(JSTaggedValue, MathFunctionClass, MATH_FUNCTION_CLASS_INDEX)                                  \
150     V(JSTaggedValue, AtomicsFunction, ATOMICS_FUNCTION_INDEX)                                       \
151     V(JSTaggedValue, JsonFunction, JSON_FUNCTION_INDEX)                                             \
152     V(JSTaggedValue, StringFunction, STRING_FUNCTION_INDEX)                                         \
153     V(JSTaggedValue, StringPrototype, STRING_PROTOTYPE_INDEX)                                       \
154     V(JSTaggedValue, ProxyFunction, PROXY_FUNCTION_INDEX)                                           \
155     V(JSTaggedValue, GeneratorFunctionFunction, GENERATOR_FUNCTION_OFFSET)                          \
156     V(JSTaggedValue, GeneratorFunctionPrototype, GENERATOR_FUNCTION_PROTOTYPE_OFFSET)               \
157     V(JSTaggedValue, AsyncGeneratorFunctionFunction, ASYNC_GENERATOR_FUNCTION_OFFSET)               \
158     V(JSTaggedValue, AsyncGeneratorFunctionPrototype, ASYNC_GENERATOR_FUNCTION_PROTOTYPE_OFFSET)    \
159     V(JSTaggedValue, InitialGenerator, INITIAL_GENERATOR_OFFSET)                                    \
160     V(JSTaggedValue, InitialAsyncGenerator, INITIAL_ASYNC_GENERATOR_OFFSET)                         \
161     V(JSTaggedValue, GeneratorPrototype, GENERATOR_PROTOTYPE_OFFSET)                                \
162     V(JSTaggedValue, AsyncGeneratorPrototype, ASYNC_GENERATOR_PROTOTYPE_OFFSET)                     \
163     V(JSTaggedValue, ReflectFunction, REFLECT_FUNCTION_INDEX)                                       \
164     V(JSTaggedValue, AsyncFunction, ASYNC_FUNCTION_INDEX)                                           \
165     V(JSTaggedValue, AsyncFunctionPrototype, ASYNC_FUNCTION_PROTOTYPE_INDEX)                        \
166     V(JSTaggedValue, JSGlobalObject, JS_GLOBAL_OBJECT_INDEX)                                        \
167     V(JSTaggedValue, HasInstanceFunction, HASINSTANCE_FUNCTION_INDEX)                               \
168     V(JSTaggedValue, HoleySymbol, HOLEY_SYMBOL_OFFSET)                                              \
169     V(JSTaggedValue, ElementICSymbol, ELEMENT_IC_SYMBOL_OFFSET)                                     \
170     V(JSTaggedValue, IteratorPrototype, ITERATOR_PROTOTYPE_INDEX)                                   \
171     V(JSTaggedValue, IteratorFuncClass, ITERATOR_FUNC_CLASS_INDEX)                                  \
172     V(JSTaggedValue, IteratorResult, ITERATOR_RESULT_INDEX)                                         \
173     V(JSTaggedValue, IteratorResultClass, ITERATOR_RESULT_CLASS_INDEX)                              \
174     V(JSTaggedValue, UndefinedIteratorResult, UNDEFINED_ITERATOR_RESULT_INDEX)                      \
175     V(JSTaggedValue, AsyncIteratorPrototype, ASYNC_ITERATOR_PROTOTYPE_INDEX)                        \
176     V(JSTaggedValue, ForinIteratorPrototype, FORIN_ITERATOR_PROTOTYPE_INDEX)                        \
177     V(JSTaggedValue, ForinIteratorClass, FOR_IN_ITERATOR_CLASS_INDEX)                               \
178     V(JSTaggedValue, StringIterator, STRING_ITERATOR_INDEX)                                         \
179     V(JSTaggedValue, StringIteratorClass, STRING_ITERATOR_CLASS_INDEX)                              \
180     V(JSTaggedValue, AsyncFromSyncIterator, ASYNC_FROM_SYNC_ITERATOR_INDEX)                         \
181     V(JSTaggedValue, MapIteratorPrototype, MAP_ITERATOR_PROTOTYPE_INDEX)                            \
182     V(JSTaggedValue, BitVectorIteratorPrototype, BITVECTOR_ITERATOR_PROTOTYPE_INDEX)                \
183     V(JSTaggedValue, SharedMapIteratorPrototype, SHARED_MAP_ITERATOR_PROTOTYPE_INDEX)               \
184     V(JSTaggedValue, SetIteratorPrototype, SET_ITERATOR_PROTOTYPE_INDEX)                            \
185     V(JSTaggedValue, SharedSetIteratorPrototype, SHARED_SET_ITERATOR_PROTOTYPE_INDEX)               \
186     V(JSTaggedValue, RegExpIteratorPrototype, REGEXP_ITERATOR_PROTOTYPE_INDEX)                      \
187     V(JSTaggedValue, ArrayIteratorPrototype, ARRAY_ITERATOR_PROTOTYPE_INDEX)                        \
188     V(JSTaggedValue, SharedArrayIteratorPrototype, SHARED_ARRAY_ITERATOR_PROTOTYPE_INDEX)           \
189     V(JSTaggedValue, StringIteratorPrototype, STRING_ITERATOR_PROTOTYPE_INDEX)                      \
190     V(JSTaggedValue, AsyncFromSyncIteratorPrototype, ASYNC_FROM_SYNC_ITERATOR_PROTOTYPE_INDEX)      \
191     V(JSTaggedValue, InterfaceTypeSymbol, INTERFACE_TYPE_SYMBOL_OFFSET)                             \
192     V(JSTaggedValue, ThrowTypeError, THROW_TYPE_ERROR_INDEX)                                        \
193     V(JSTaggedValue, PromiseFunction, PROMISE_FUNCTION_INDEX)                                       \
194     V(JSTaggedValue, PromiseReactionJob, PROMISE_REACTION_JOB_INDEX)                                \
195     V(JSTaggedValue, PromiseResolveThenableJob, PROMISE_REACTION_THENABLE_JOB_INDEX)                \
196     V(JSTaggedValue, DynamicImportJob, DYNAMIC_IMPORT_JOB_INDEX)                                    \
197     V(JSTaggedValue, TemplateMap, TEMPLATE_MAP_INDEX)                                               \
198     V(JSTaggedValue, FunctionClassWithProto, FUNCTION_CLASS_WITH_PROTO)                             \
199     V(JSTaggedValue, FunctionClassWithoutProto, FUNCTION_CLASS_WITHOUT_PROTO)                       \
200     V(JSTaggedValue, FunctionClassWithoutName, FUNCTION_CLASS_WITHOUT_NAME)                         \
201     V(JSTaggedValue, BoundFunctionClass, BOUND_FUNCTION_CLASS)                                      \
202     V(JSTaggedValue, ArgumentsClass, ARGUMENTS_CLASS)                                               \
203     V(JSTaggedValue, ArgumentsCallerAccessor, ARGUMENTS_CALLER_ACCESSOR)                            \
204     V(JSTaggedValue, ArgumentsCalleeAccessor, ARGUMENTS_CALLEE_ACCESSOR)                            \
205     V(JSTaggedValue, AsyncFunctionClass, ASYNC_FUNCTION_CLASS)                                      \
206     V(JSTaggedValue, AsyncAwaitStatusFunctionClass, ASYNC_AWAIT_STATUS_FUNCTION_CLASS)              \
207     V(JSTaggedValue, PromiseReactionFunctionClass, PROMISE_REACTION_FUNCTION_CLASS)                 \
208     V(JSTaggedValue, PromiseExecutorFunctionClass, PROMISE_EXECUTOR_FUNCTION_CLASS)                 \
209     V(JSTaggedValue, AsyncModuleFulfilledFunctionClass, ASYNC_MODULE_FULFILLED_FUNCTION_CLASS)      \
210     V(JSTaggedValue, AsyncModuleRejectedFunctionClass, ASYNC_MODULE_REJECTED_FUNCTION_CLASS)        \
211     V(JSTaggedValue, GeneratorFunctionClass, GENERATOR_FUNCTION_CLASS)                              \
212     V(JSTaggedValue, AsyncGeneratorFunctionClass, ASYNC_GENERATOR_FUNCTION_CLASS)                   \
213     V(JSTaggedValue, PromiseAllResolveElementFunctionClass, PROMISE_ALL_RESOLVE_ELEMENT_FUNC_CLASS) \
214     V(JSTaggedValue, PromiseAnyRejectElementFunctionClass, PROMISE_ANY_REJECT_ELEMENT_FUNC_CLASS)   \
215     V(JSTaggedValue, PromiseAllSettledElementFunctionClass, PROMISE_ALL_SETTLED_ELEMENT_FUNC_CLASS) \
216     V(JSTaggedValue, PromiseFinallyFunctionClass, PROMISE_FINALLY_FUNC_CLASS)                       \
217     V(JSTaggedValue, PromiseValueThunkOrThrowerFunctionClass,                                       \
218         PROMISE_VALUE_THUNK_OR_THROWER_FUNCTION_CLASS)                                              \
219     V(JSTaggedValue, AsyncGeneratorResNextRetProRstFtnClass,                                        \
220         ASYNC_GENERATOR_RESUME_NEXT_RETURN_PROCESSOR_RST_FTN_CLASS)                                 \
221     V(JSTaggedValue, AsyncFromSyncIterUnwarpClass, ASYNC_FROM_SYNC_ITER_UNWARP_CLASS)               \
222     V(JSTaggedValue, ProxyRevocFunctionClass, PROXY_REVOC_FUNCTION_CLASS)                           \
223     V(JSTaggedValue, NativeErrorFunctionClass, NATIVE_ERROR_FUNCTION_CLASS)                         \
224     V(JSTaggedValue, SpecificTypedArrayFunctionClass, SPERCIFIC_TYPED_ARRAY_FUNCTION_CLASS)         \
225     V(JSTaggedValue, ConstructorFunctionClass, CONSTRUCTOR_FUNCTION_CLASS)                          \
226     V(JSTaggedValue, NormalFunctionClass, NORMAL_FUNCTION_CLASS)                                    \
227     V(JSTaggedValue, JSIntlBoundFunctionClass, JS_INTL_BOUND_FUNCTION_CLASS)                        \
228     V(JSTaggedValue, NumberFormatLocales, NUMBER_FORMAT_LOCALES_INDEX)                              \
229     V(JSTaggedValue, DateTimeFormatLocales, DATE_TIMEFORMAT_LOCALES_INDEX)                          \
230     V(JSTaggedValue, ListFormatLocales, LIST_FORMAT_LOCALES_INDEX)                                  \
231     V(JSTaggedValue, GlobalRecord, GLOBAL_RECORD)                                                   \
232     V(JSTaggedValue, ModuleNamespaceClass, MODULENAMESPACE_CLASS)                                   \
233     V(JSTaggedValue, ObjectLiteralHClassCache, OBJECT_LITERAL_HCLASS_CACHE)                         \
234     V(JSTaggedValue, WeakRefKeepObjects, WEAK_REF_KEEP_OBJECTS)                                     \
235     V(JSTaggedValue, CjsModuleFunction, CJS_MODULE_FUNCTION_INDEX)                                  \
236     V(JSTaggedValue, CjsExportsFunction, CJS_EXPORTS_FUNCTION_INDEX)                                \
237     V(JSTaggedValue, CjsRequireFunction, CJS_REQUIRE_FUNCTION_INDEX)                                \
238     V(JSTaggedValue, GlobalPatch, GLOBAL_PATCH)                                                     \
239     V(JSTaggedValue, ExportOfScript, DEFAULT_EXPORT_OF_SCRIPT)                                      \
240     V(JSTaggedValue, NativeModuleFailureInfoClass, NATIVE_MODULE_FAILURE_INFO_CLASS)                \
241     V(JSTaggedValue, ArrayJoinStack, ARRAY_JOIN_STACK)                                              \
242     V(JSTaggedValue, NumberToStringResultCache, NUMBER_TO_STRING_RESULT_CACHE_INDEX)                \
243     V(JSTaggedValue, StringSplitResultCache, STRING_SPLIT_RESULT_CACHE_INDEX)                       \
244     V(JSTaggedValue, StringToListResultCache, STRING_TO_LIST_RESULT_CACHE_INDEX)                    \
245     V(JSTaggedValue, RegExpCache, REGEXP_CACHE_INDEX)                                               \
246     V(JSTaggedValue, RegExpGlobalResult, REGEXP_GLOBAL_RESULT_INDEX)                                \
247     V(JSTaggedValue, ElementNONEClass, ELEMENT_NONE_HCLASS_INDEX)                                   \
248     V(JSTaggedValue, ElementNONEProtoClass, ELEMENT_NONE_PROTO_HCLASS_INDEX)                        \
249     V(JSTaggedValue, ElementHOLEClass, ELEMENT_HOLE_HCLASS_INDEX)                                   \
250     V(JSTaggedValue, ElementHOLEProtoClass, ELEMENT_HOLE_PROTO_HCLASS_INDEX)                        \
251     V(JSTaggedValue, ElementINTClass, ELEMENT_INT_HCLASS_INDEX)                                     \
252     V(JSTaggedValue, ElementINTProtoClass, ELEMENT_INT_PROTO_HCLASS_INDEX)                          \
253     V(JSTaggedValue, ElementNUMBERClass, ELEMENT_NUMBER_HCLASS_INDEX)                               \
254     V(JSTaggedValue, ElementNUMBERProtoClass, ELEMENT_NUMBER_PROTO_HCLASS_INDEX)                    \
255     V(JSTaggedValue, ElementSTRINGClass, ELEMENT_STRING_HCLASS_INDEX)                               \
256     V(JSTaggedValue, ElementSTRINGProtoClass, ELEMENT_STRING_PROTO_HCLASS_INDEX)                    \
257     V(JSTaggedValue, ElementOBJECTClass, ELEMENT_OBJECT_HCLASS_INDEX)                               \
258     V(JSTaggedValue, ElementOBJECTProtoClass, ELEMENT_OBJECT_PROTO_HCLASS_INDEX)                    \
259     V(JSTaggedValue, ElementTAGGEDClass, ELEMENT_TAGGED_HCLASS_INDEX)                               \
260     V(JSTaggedValue, ElementTAGGEDProtoClass, ELEMENT_TAGGED_PROTO_HCLASS_INDEX)                    \
261     V(JSTaggedValue, ElementHOLE_INTClass, ELEMENT_HOLE_INT_HCLASS_INDEX)                           \
262     V(JSTaggedValue, ElementHOLE_INTProtoClass, ELEMENT_HOLE_INT_PROTO_HCLASS_INDEX)                \
263     V(JSTaggedValue, ElementHOLE_NUMBERClass, ELEMENT_HOLE_NUMBER_HCLASS_INDEX)                     \
264     V(JSTaggedValue, ElementHOLE_NUMBERProtoClass, ELEMENT_HOLE_NUMBER_PROTO_HCLASS_INDEX)          \
265     V(JSTaggedValue, ElementHOLE_STRINGClass, ELEMENT_HOLE_STRING_HCLASS_INDEX)                     \
266     V(JSTaggedValue, ElementHOLE_STRINGProtoClass, ELEMENT_HOLE_STRING_PROTO_HCLASS_INDEX)          \
267     V(JSTaggedValue, ElementHOLE_OBJECTClass, ELEMENT_HOLE_OBJECT_HCLASS_INDEX)                     \
268     V(JSTaggedValue, ElementHOLE_OBJECTProtoClass, ELEMENT_HOLE_OBJECT_PROTO_HCLASS_INDEX)          \
269     V(JSTaggedValue, ElementHOLE_TAGGEDClass, ELEMENT_HOLE_TAGGED_HCLASS_INDEX)                     \
270     V(JSTaggedValue, ElementHOLE_TAGGEDProtoClass, ELEMENT_HOLE_TAGGED_PROTO_HCLASS_INDEX)          \
271     V(JSTaggedValue, ModuleManagerNativePointer, MODULE_MANAGER_NATIVE_POINTER_INDEX)               \
272     V(JSTaggedValue, DetectorDependentInfos, DETECTOR_DEPENDENT_INFOS_INDEX)
273 
274 #define GLOBAL_ENV_CONTAINER_ITERATORS(V)                                                           \
275     /* non ECMA standard jsapi containers iterators */                                              \
276     V(JSTaggedValue, ArrayListFunction, ARRAYLIST_FUNCTION_INDEX)                                   \
277     V(JSTaggedValue, ArrayListIteratorPrototype, ARRAYLIST_ITERATOR_PROTOTYPE_INDEX)                \
278     V(JSTaggedValue, HashMapIteratorPrototype, HASHMAP_ITERATOR_PROTOTYPE_INDEX)                    \
279     V(JSTaggedValue, HashSetIteratorPrototype, HASHSET_ITERATOR_PROTOTYPE_INDEX)                    \
280     V(JSTaggedValue, LightWeightMapIteratorPrototype, LIGHTWEIGHTMAP_ITERATOR_PROTOTYPE_INDEX)      \
281     V(JSTaggedValue, LightWeightSetIteratorPrototype, LIGHTWEIGHTSET_ITERATOR_PROTOTYPE_INDEX)      \
282     V(JSTaggedValue, TreeMapIteratorPrototype, TREEMAP_ITERATOR_PROTOTYPE_INDEX)                    \
283     V(JSTaggedValue, TreeSetIteratorPrototype, TREESET_ITERATOR_PROTOTYPE_INDEX)                    \
284     V(JSTaggedValue, VectorFunction, VECTOR_FUNCTION_INDEX)                                         \
285     V(JSTaggedValue, VectorIteratorPrototype, VECTOR_ITERATOR_PROTOTYPE_INDEX)                      \
286     V(JSTaggedValue, QueueIteratorPrototype, QUEUE_ITERATOR_PROTOTYPE_INDEX)                        \
287     V(JSTaggedValue, PlainArrayIteratorPrototype, PLAIN_ARRAY_ITERATOR_PROTOTYPE_INDEX)             \
288     V(JSTaggedValue, PlainArrayFunction, PLAIN_ARRAY_FUNCTION_INDEX)                                \
289     V(JSTaggedValue, DequeIteratorPrototype, DEQUE_ITERATOR_PROTOTYPE_INDEX)                        \
290     V(JSTaggedValue, StackIteratorPrototype, STACK_ITERATOR_PROTOTYPE_INDEX)                        \
291     V(JSTaggedValue, ListFunction, LIST_FUNCTION_INDEX)                                             \
292     V(JSTaggedValue, LinkedListFunction, LINKED_LIST_FUNCTION_INDEX)                                \
293     V(JSTaggedValue, ListIteratorPrototype, LIST_ITERATOR_PROTOTYPE_INDEX)                          \
294     V(JSTaggedValue, LinkedListIteratorPrototype, LINKED_LIST_ITERATOR_PROTOTYPE_INDEX)             \
295     V(JSTaggedValue, BufferFunction, BUFFER_FUNCTION_INDEX)
296 
297 #define GLOBAL_ENV_SHARED_FIELDS(V)                                                                              \
298     V(JSTaggedValue, SObjectFunction, SHARED_OBJECT_FUNCTION_INDEX)                                              \
299     V(JSTaggedValue, SObjectFunctionPrototype, SHARED_OBJECT_FUNCTION_PROTOTYPE_INDEX)                           \
300     V(JSTaggedValue, SFunctionFunction, SHARED_FUNCTION_FUNCTION_INDEX)                                          \
301     V(JSTaggedValue, SFunctionPrototype, SHARED_FUNCTION_PROTOTYPE_INDEX)                                        \
302     V(JSTaggedValue, SBuiltininArrayBufferFunction, SENDABLE_BUILTIN_ARRAY_BUFFER_FUNCTION_INDEX)                \
303     V(JSTaggedValue, SBuiltininSetFunction, SHARED_BUILTIN_SET_FUNCTION_INDEX)                                   \
304     V(JSTaggedValue, SBuiltininMapFunction, SHARED_BUILTIN_MAP_FUNCTION_INDEX)                                   \
305     V(JSTaggedValue, SConstructorClass, SHARED_CONSTRUCTOR_CLASS_INDEX)                                          \
306     V(JSTaggedValue, SFunctionClassWithoutProto, SHARED_FUNCTION_CLASS_WITHOUT_PROTO)                            \
307     V(JSTaggedValue, SFunctionClassWithProto, SHARED_FUNCTION_CLASS_WITH_PROTO)                                  \
308     V(JSTaggedValue, SFunctionClassWithoutAccessor, SHARED_FUNCTION_CLASS_WITHOUT_ACCESSOR)                      \
309     V(JSTaggedValue, SNormalFunctionClass, SHARED_NORMAL_FUNCTION_CLASS)                                         \
310     V(JSTaggedValue, SAsyncFunctionFunction, SHARED_ASYNC_FUNCTION_FUNCTION_INDEX)                               \
311     V(JSTaggedValue, SAsyncFunctionPrototype, SHARED_ASYNC_FUNCTION_PROTOTYPE_INDEX)                             \
312     V(JSTaggedValue, SAsyncFunctionClass, SHARED_ASYNC_FUNCTION_CLASS)                                           \
313     /* DETECTOR SYMBOL BEGIN (Maintain the same order with DETECTOR_SYMBOL_LIST) */                              \
314     V(JSTaggedValue, ReplaceSymbol, REPLACE_SYMBOL_INDEX)                                                        \
315     V(JSTaggedValue, SplitSymbol, SPLIT_SYMBOL_INDEX)                                                            \
316     V(JSTaggedValue, MatchAllSymbol, MATCH_ALL_SYMBOL_INDEX)                                                     \
317     V(JSTaggedValue, IteratorSymbol, ITERATOR_SYMBOL_INDEX)                                                      \
318     V(JSTaggedValue, SpeciesSymbol, SPECIES_SYMBOL_INDEX)                                                        \
319     /* DETECTOR SYMBOL END */                                                                                    \
320     V(JSTaggedValue, IsConcatSpreadableSymbol, ISCONCAT_SYMBOL_INDEX)                                            \
321     V(JSTaggedValue, ToStringTagSymbol, TOSTRINGTAG_SYMBOL_INDEX)                                                \
322     V(JSTaggedValue, AsyncIteratorSymbol, ASYNC_ITERATOR_SYMBOL_INDEX)                                           \
323     V(JSTaggedValue, MatchSymbol, MATCH_SYMBOL_INDEX)                                                            \
324     V(JSTaggedValue, SearchSymbol, SEARCH_SYMBOL_INDEX)                                                          \
325     V(JSTaggedValue, ToPrimitiveSymbol, TOPRIMITIVE_SYMBOL_INDEX)                                                \
326     V(JSTaggedValue, UnscopablesSymbol, UNSCOPABLES_SYMBOL_INDEX)                                                \
327     V(JSTaggedValue, NativeBindingSymbol, NATIVE_BINDING_SYMBOL_INDEX)                                           \
328     V(JSTaggedValue, HasInstanceSymbol, HASINSTANCE_SYMBOL_INDEX)                                                \
329     V(JSTaggedValue, SendableArrayBufferPrototype, SENDABLE_ARRAY_BUFFER_PROTOTYPE_INDEX)                        \
330     V(JSTaggedValue, SharedArrayFunction, SHARED_ARRAY_FUNCTION_INDEX)                                           \
331     V(JSTaggedValue, SharedArrayPrototype, SHARED_ARRAY_PROTOTYPE_INDEX)                                         \
332     V(JSTaggedValue, SharedMapPrototype,  SHARED_MAP_PROTOTYPE_INDEX)                                            \
333     V(JSTaggedValue, SharedSetPrototype, SHARED_SET_PROTOTYPE_INDEX)                                             \
334     V(JSTaggedValue, SharedTypedArrayFunction, SHARED_TYPED_ARRAY_FUNCTION_INDEX)                                \
335     V(JSTaggedValue, SharedTypedArrayPrototype, SHARED_TYPED_ARRAY_PROTOTYPE_INDEX)                              \
336     V(JSTaggedValue, SharedInt8ArrayFunction, SHARED_INT8_ARRAY_FUNCTION_INDEX)                                  \
337     V(JSTaggedValue, SharedUint8ArrayFunction, SHARED_UINT8_ARRAY_FUNCTION_INDEX)                                \
338     V(JSTaggedValue, SharedUint8ClampedArrayFunction, SHARED_UINT8_CLAMPED_ARRAY_FUNCTION_INDEX)                 \
339     V(JSTaggedValue, SharedInt16ArrayFunction, SHARED_INT16_ARRAY_FUNCTION_INDEX)                                \
340     V(JSTaggedValue, SharedUint16ArrayFunction, SHARED_UINT16_ARRAY_FUNCTION_INDEX)                              \
341     V(JSTaggedValue, SharedInt32ArrayFunction, SHARED_INT32_ARRAY_FUNCTION_INDEX)                                \
342     V(JSTaggedValue, SharedUint32ArrayFunction, SHARED_UINT32_ARRAY_FUNCTION_INDEX)                              \
343     V(JSTaggedValue, SharedFloat32ArrayFunction, SHARED_FLOAT32_ARRAY_FUNCTION_INDEX)                            \
344     V(JSTaggedValue, SharedFloat64ArrayFunction, SHARED_FLOAT64_ARRAY_FUNCTION_INDEX)                            \
345     V(JSTaggedValue, SharedBigInt64ArrayFunction, SHARED_BIGINT64_ARRAY_FUNCTION_INDEX)                          \
346     V(JSTaggedValue, SharedBigUint64ArrayFunction, SHARED_BIGUINT64_ARRAY_FUNCTION_INDEX)                        \
347     V(JSTaggedValue, SharedSpecificTypedArrayFunctionClass, SHARED_SPERCIFIC_TYPED_ARRAY_FUNCTION_CLASS)         \
348     V(JSTaggedValue, SharedInt8ArrayFunctionPrototype, SHARED_INT8_ARRAY_FUNCTION_PROTOTYPE_INDEX)               \
349     V(JSTaggedValue, SharedUint8ArrayFunctionPrototype, SHARED_UINT8_ARRAY_FUNCTION_PROTOTYPE_INDEX)             \
350     V(JSTaggedValue, SharedUint8ClampedArrayFunctionPrototype, SHARED_UINT8_CLAMPED_ARRAY_FUNCTION_PROTO_INDEX)  \
351     V(JSTaggedValue, SharedInt16ArrayFunctionPrototype, SHARED_INT16_ARRAY_FUNCTION_PROTOTYPE_INDEX)             \
352     V(JSTaggedValue, SharedUint16ArrayFunctionPrototype, SHARED_UINT16_ARRAY_FUNCTION_PROTOTYPE_INDEX)           \
353     V(JSTaggedValue, SharedInt32ArrayFunctionPrototype, SHARED_INT32_ARRAY_FUNCTION_PROTOTYPE_INDEX)             \
354     V(JSTaggedValue, SharedUint32ArrayFunctionPrototype, SHARED_UINT32_ARRAY_FUNCTION_PROTOTYPE_INDEX)           \
355     V(JSTaggedValue, SharedFloat32ArrayFunctionPrototype, SHARED_FLOAT32_ARRAY_FUNCTION_PROTOTYPE_INDEX)         \
356     V(JSTaggedValue, SharedFloat64ArrayFunctionPrototype, SHARED_FLOAT64_ARRAY_FUNCTION_PROTOTYPE_INDEX)         \
357     V(JSTaggedValue, SharedBigInt64ArrayFunctionPrototype, SHARED_BIGINT64_ARRAY_FUNCTION_PROTOTYPE_INDEX)       \
358     V(JSTaggedValue, SharedBigUint64ArrayFunctionPrototype, SHARED_BIGUINT64_ARRAY_FUNCTION_PROTOTYPE_INDEX)     \
359     V(JSTaggedValue, SharedInt8ArrayRootHclass, SHARED_INT8_ARRAY_ROOT_HCLASS_INDEX)                             \
360     V(JSTaggedValue, SharedUint8ArrayRootHclass, SHARED_UINT8_ARRAY_ROOT_HCLASS_INDEX)                           \
361     V(JSTaggedValue, SharedUint8ClampedArrayRootHclass, SHARED_UINT8_CLAMPED_ARRAY_ROOT_HCLASS_INDEX)            \
362     V(JSTaggedValue, SharedInt16ArrayRootHclass, SHARED_INT16_ARRAY_ROOT_HCLASS_INDEX)                           \
363     V(JSTaggedValue, SharedUint16ArrayRootHclass, SHARED_UINT16_ARRAY_ROOT_HCLASS_INDEX)                         \
364     V(JSTaggedValue, SharedInt32ArrayRootHclass, SHARED_INT32_ARRAY_ROOT_HCLASS_INDEX)                           \
365     V(JSTaggedValue, SharedUint32ArrayRootHclass, SHARED_UINT32_ARRAY_ROOT_HCLASS_INDEX)                         \
366     V(JSTaggedValue, SharedFloat32ArrayRootHclass, SHARED_FLOAT32_ARRAY_ROOT_HCLASS_INDEX)                       \
367     V(JSTaggedValue, SharedFloat64ArrayRootHclass, SHARED_FLOAT64_ARRAY_ROOT_HCLASS_INDEX)                       \
368     V(JSTaggedValue, SharedBigInt64ArrayRootHclass, SHARED_BIGINT64_ARRAY_ROOT_HCLASS_INDEX)                     \
369     V(JSTaggedValue, SharedBigUint64ArrayRootHclass, SHARED_BIGUINT64_ARRAY_ROOT_HCLASS_INDEX)                   \
370     V(JSTaggedValue, SharedInt8ArrayRootHclassOnHeap, SHARED_INT8_ARRAY_ROOT_HCLASS_ON_HEAP_INDEX)               \
371     V(JSTaggedValue, SharedUint8ArrayRootHclassOnHeap, SHARED_UINT8_ARRAY_ROOT_HCLASS_ON_HEAP_INDEX)             \
372     V(JSTaggedValue, SharedUint8ClampedArrayRootHclassOnHeap, SHARED_UINT8_CLAMPED_ARRAY_ROOT_HCLASS_ON_HEAP_INDEX)  \
373     V(JSTaggedValue, SharedInt16ArrayRootHclassOnHeap, SHARED_INT16_ARRAY_ROOT_HCLASS_ON_HEAP_INDEX)             \
374     V(JSTaggedValue, SharedUint16ArrayRootHclassOnHeap, SHARED_UINT16_ARRAY_ROOT_HCLASS_ON_HEAP_INDEX)           \
375     V(JSTaggedValue, SharedInt32ArrayRootHclassOnHeap, SHARED_INT32_ARRAY_ROOT_HCLASS_ON_HEAP_INDEX)             \
376     V(JSTaggedValue, SharedUint32ArrayRootHclassOnHeap, SHARED_UINT32_ARRAY_ROOT_HCLASS_ON_HEAP_INDEX)           \
377     V(JSTaggedValue, SharedFloat32ArrayRootHclassOnHeap, SHARED_FLOAT32_ARRAY_ROOT_HCLASS_ON_HEAP_INDEX)         \
378     V(JSTaggedValue, SharedFloat64ArrayRootHclassOnHeap, SHARED_FLOAT64_ARRAY_ROOT_HCLASS_ON_HEAP_INDEX)         \
379     V(JSTaggedValue, SharedBigInt64ArrayRootHclassOnHeap, SHARED_BIGINT64_ARRAY_ROOT_HCLASS_ON_HEAP_INDEX)       \
380     V(JSTaggedValue, SharedBigUint64ArrayRootHclassOnHeap, SHARED_BIGUINT64_ARRAY_ROOT_HCLASS_ON_HEAP_INDEX)     \
381     V(JSTaggedValue, SharedModuleNamespaceClass, SHARED_MODULENAMESPACE_CLASS)                                   \
382     V(JSTaggedValue, BitVectorPrototype, BITVECTOR_PROTOTYPE_INDEX)                                              \
383     V(JSTaggedValue, BitVectorFunction, BITVECTOR_FUNCTION_INDEX)
384 
385 #if ENABLE_NEXT_OPTIMIZATION
386 #define CONDITION_GLOBAL_REFLECT_HAS(V)
387 #else
388 #define CONDITION_GLOBAL_REFLECT_HAS(V) V(JSTaggedValue, ReflectHas, REFLECT_HAS_INDEX)
389 #endif
390 
391 // Use for builtins inlining
392 #define GLOBAL_ENV_INLINED_BUILTINS(V)                                                    \
393     V(JSTaggedValue, MathSqrt, MATH_SQRT_INDEX)                                           \
394     V(JSTaggedValue, MathAcos, MATH_ACOS_INDEX)                                           \
395     V(JSTaggedValue, MathAcosh, MATH_ACOSH_INDEX)                                         \
396     V(JSTaggedValue, MathAsin, MATH_ASIN_INDEX)                                           \
397     V(JSTaggedValue, MathAsinh, MATH_ASINH_INDEX)                                         \
398     V(JSTaggedValue, MathAtan, MATH_ATAN_INDEX)                                           \
399     V(JSTaggedValue, MathAtan2, MATH_ATAN2_INDEX)                                         \
400     V(JSTaggedValue, MathAtanh, MATH_ATANH_INDEX)                                         \
401     V(JSTaggedValue, MathCos, MATH_COS_INDEX)                                             \
402     V(JSTaggedValue, MathCosh, MATH_COSH_INDEX)                                           \
403     V(JSTaggedValue, MathSign, MATH_SIGN_INDEX)                                           \
404     V(JSTaggedValue, MathSin, MATH_SIN_INDEX)                                             \
405     V(JSTaggedValue, MathSinh, MATH_SINH_INDEX)                                           \
406     V(JSTaggedValue, MathTan, MATH_TAN_INDEX)                                             \
407     V(JSTaggedValue, MathTanh, MATH_TANH_INDEX)                                           \
408     V(JSTaggedValue, MathTrunc, MATH_TRUNC_INDEX)                                         \
409     V(JSTaggedValue, MathLog, MATH_LOG_INDEX)                                             \
410     V(JSTaggedValue, MathLog2, MATH_LOG2_INDEX)                                           \
411     V(JSTaggedValue, MathLog10, MATH_LOG10_INDEX)                                         \
412     V(JSTaggedValue, MathLog1p, MATH_LOG1P_INDEX)                                         \
413     V(JSTaggedValue, MathExp, MATH_EXP_INDEX)                                             \
414     V(JSTaggedValue, MathExpm1, MATH_EXPM1_INDEX)                                         \
415     V(JSTaggedValue, MathClz32, MATH_CLZ32_INDEX)                                         \
416     V(JSTaggedValue, MathAbs, MATH_ABS_INDEX)                                             \
417     V(JSTaggedValue, MathPow, MATH_POW_INDEX)                                             \
418     V(JSTaggedValue, MathCbrt, MATH_CBRT_INDEX)                                           \
419     V(JSTaggedValue, MathMin, MATH_MIN_INDEX)                                             \
420     V(JSTaggedValue, MathMax, MATH_MAX_INDEX)                                             \
421     V(JSTaggedValue, MathRound, MATH_ROUND_INDEX)                                         \
422     V(JSTaggedValue, MathFRound, MATH_FROUND_INDEX)                                       \
423     V(JSTaggedValue, MathCeil, MATH_CEIL_INDEX)                                           \
424     V(JSTaggedValue, MathFloor, MATH_FLOOR_INDEX)                                         \
425     V(JSTaggedValue, MathImul, MATH_IMUL_INDEX)                                           \
426     V(JSTaggedValue, BigIntAsIntN, BIGINT_AS_INTN_INDEX)                                  \
427     V(JSTaggedValue, BigIntAsUintN, BIGINT_AS_UINTN_INDEX)                                \
428     V(JSTaggedValue, GlobalIsFinite, GLOBAL_IS_FINITE_INDEX)                              \
429     V(JSTaggedValue, GlobalIsNan, GLOBAL_IS_NAN_INDEX)                                    \
430     V(JSTaggedValue, StringLocaleCompare, STRING_LOCALE_COMPARE_INDEX)                    \
431     V(JSTaggedValue, ArraySort, ARRAY_SORT_INDEX)                                         \
432     V(JSTaggedValue, JsonStringify, JSON_STRINGFY_INDEX)                                  \
433     V(JSTaggedValue, MapIteratorProtoNext, MAP_ITERATOR_PROTO_NEXT_INDEX)                 \
434     V(JSTaggedValue, SetIteratorProtoNext, SET_ITERATOR_PROTO_NEXT_INDEX)                 \
435     V(JSTaggedValue, StringIteratorProtoNext, STRING_ITERATOR_PROTO_NEXT_INDEX)           \
436     V(JSTaggedValue, ArrayIteratorProtoNext, ARRAY_ITERATOR_PROTO_NEXT_INDEX)             \
437     V(JSTaggedValue, IteratorProtoReturn, ITERATOR_PROTO_RETURN_INDEX)                    \
438     V(JSTaggedValue, ArrayBufferIsView, ARRAY_BUFFER_IS_VIEW_INDEX)                       \
439     V(JSTaggedValue, DataViewGetFloat32, DATA_VIEW_GET_FLOAT32_INDEX)                     \
440     V(JSTaggedValue, DataViewGetFloat64, DATA_VIEW_GET_FLOAT64_INDEX)                     \
441     V(JSTaggedValue, DataViewGetInt8, DATA_VIEW_GET_INT8_INDEX)                           \
442     V(JSTaggedValue, DataViewGetInt16, DATA_VIEW_GET_INT16_INDEX)                         \
443     V(JSTaggedValue, DataViewGetInt32, DATA_VIEW_GET_INT32_INDEX)                         \
444     V(JSTaggedValue, DataViewGetUint16, DATA_VIEW_GET_UINT16_INDEX)                       \
445     V(JSTaggedValue, DataViewGetUint32, DATA_VIEW_GET_UINT32_INDEX)                       \
446     V(JSTaggedValue, DataViewGetUint8, DATA_VIEW_GET_UINT8_INDEX)                         \
447     V(JSTaggedValue, DataViewSetInt8, DATA_VIEW_SET_INT8_INDEX)                           \
448     V(JSTaggedValue, DataViewSetInt16, DATA_VIEW_SET_INT16_INDEX)                         \
449     V(JSTaggedValue, DataViewSetUint8, DATA_VIEW_SET_UINT8_INDEX)                         \
450     V(JSTaggedValue, DataViewSetUint16, DATA_VIEW_SET_UINT16_INDEX)                       \
451     V(JSTaggedValue, DataViewSetUint32, DATA_VIEW_SET_UINT32_INDEX)                       \
452     V(JSTaggedValue, DateGetTime, DATE_GET_TIME_INDEX)                                    \
453     V(JSTaggedValue, DateNow, DATE_NOW_INDEX)                                             \
454     V(JSTaggedValue, ObjectIs, OBJECT_IS_INDEX)                                           \
455     V(JSTaggedValue, ObjectGetProto, OBJECT_GET_PROTO_INDEX)                              \
456     V(JSTaggedValue, ObjectIsPrototypeOf, OBJECT_IS_PROTOTYPE_OF_INDEX)                   \
457     V(JSTaggedValue, ReflectGetPrototypeOf, REFLECT_GET_PROTOTYPE_OF_INDEX)               \
458     CONDITION_GLOBAL_REFLECT_HAS(V)                                                       \
459     V(JSTaggedValue, ReflectConstruct, REFLECT_CONSTRUCT_INDEX)                           \
460     V(JSTaggedValue, ReflectApply, REFLECT_APPLY_INDEX)                                   \
461     V(JSTaggedValue, FunctionPrototypeHasInstance, FUNCTION_PROTOTYPE_HAS_INSTANCE_INDEX) \
462     V(JSTaggedValue, ArrayKeys, ARRAY_KEYS_INDEX)                                         \
463     V(JSTaggedValue, ArrayEntries, ARRAY_ENTRIES_INDEX)                                   \
464     V(JSTaggedValue, GlobalDecodeURIComponent, GLOBAL_DECODE_URI_COMPONENT_INDEX)
465 
466 #define GLOBAL_ENV_FIELDS(V)                                \
467     GLOBAL_ENV_SELF_FIELD(V)                                \
468     GLOBAL_ENV_SHARED_FIELDS(V)                             \
469     GLOBAL_ENV_COMMON_FIELDS(V)                             \
470     GLOBAL_ENV_CONTAINER_ITERATORS(V)                       \
471     GLOBAL_ENV_INLINED_BUILTINS(V)
472 
473 namespace panda::ecmascript {
474 #define GLOBAL_ENV_FIELD_ENUM_ITEM(Type, Name, INDEX) INDEX,
475 #define INDEX_FILTER_BUILTIN4(ARG1, ARG2, ARG3, Index) Index##_INDEX,
476 #define INDEX_FILTER_BUILTIN6(ARG1, ARG2, ARG3, ARG4, ARG5, Index) Index##_INDEX,
477 // clang-format off
478 enum class GlobalEnvField : uint16_t {
479     GLOBAL_ENV_FIELDS(GLOBAL_ENV_FIELD_ENUM_ITEM)
480     BUILTINS_METHOD_STUB_LIST(INDEX_FILTER_BUILTIN4, INDEX_FILTER_BUILTIN4,
481                               INDEX_FILTER_BUILTIN4, INDEX_FILTER_BUILTIN6)
482     FINAL_INDEX,
483     INVALID = -1
484 };
485 // clang-format on
486 #undef INDEX_FILTER_BUILTIN6
487 #undef INDEX_FILTER_BUILTIN4
488 #undef GLOBAL_ENV_FIELD_ENUM_ITEM
489 
490 #define DETECTOR_SYMBOL_LIST(V)                      \
491     V(ReplaceSymbol,  "Symbol.replace",   replace )  \
492     V(SplitSymbol,    "Symbol.split",     split   )  \
493     V(MatchAllSymbol, "Symbol.matchAll",  matchAll)  \
494     V(IteratorSymbol, "Symbol.iterator",  iterator)  \
495     V(SpeciesSymbol,  "Symbol.species",   species)
496 }  // namespace panda::ecmascript
497 #endif // ECMASCRIPT_GLOBAL_ENV_FIELDS_H
498