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