14514f5e3Sopenharmony_ci/*
24514f5e3Sopenharmony_ci * Copyright (c) 2021-2022 Huawei Device Co., Ltd.
34514f5e3Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
44514f5e3Sopenharmony_ci * you may not use this file except in compliance with the License.
54514f5e3Sopenharmony_ci * You may obtain a copy of the License at
64514f5e3Sopenharmony_ci *
74514f5e3Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
84514f5e3Sopenharmony_ci *
94514f5e3Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
104514f5e3Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
114514f5e3Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
124514f5e3Sopenharmony_ci * See the License for the specific language governing permissions and
134514f5e3Sopenharmony_ci * limitations under the License.
144514f5e3Sopenharmony_ci */
154514f5e3Sopenharmony_ci
164514f5e3Sopenharmony_ci#ifndef ECMASCRIPT_GLOBAL_ENV_CONSTANTS_H
174514f5e3Sopenharmony_ci#define ECMASCRIPT_GLOBAL_ENV_CONSTANTS_H
184514f5e3Sopenharmony_ci
194514f5e3Sopenharmony_ci#include <cstdint>
204514f5e3Sopenharmony_ci
214514f5e3Sopenharmony_ci#include "ecmascript/js_tagged_value.h"
224514f5e3Sopenharmony_ci#include "ecmascript/mem/visitor.h"
234514f5e3Sopenharmony_ci#include "libpandabase/macros.h"
244514f5e3Sopenharmony_ci
254514f5e3Sopenharmony_cinamespace panda::ecmascript {
264514f5e3Sopenharmony_ci// Forward Declaration
274514f5e3Sopenharmony_citemplate<typename T>
284514f5e3Sopenharmony_ciclass JSHandle;
294514f5e3Sopenharmony_ciclass JSHClass;
304514f5e3Sopenharmony_ciclass JSThread;
314514f5e3Sopenharmony_ciclass ObjectFactory;
324514f5e3Sopenharmony_ci
334514f5e3Sopenharmony_ci// NOLINTNEXTLINE(cppcoreguidelines-macro-usage)
344514f5e3Sopenharmony_ci#define SHARED_GLOBAL_ENV_CONSTANT_CLASS(V)                                                                           \
354514f5e3Sopenharmony_ci    /* GC Root */                                                                                                     \
364514f5e3Sopenharmony_ci    V(JSTaggedValue, HClassClass, HCLASS_CLASS_INDEX, ecma_roots_class)                                               \
374514f5e3Sopenharmony_ci    V(JSTaggedValue, FreeObjectWithNoneFieldClass, FREE_OBJECT_WITH_NONE_FIELD_CLASS_INDEX, ecma_roots_class)         \
384514f5e3Sopenharmony_ci    V(JSTaggedValue, FreeObjectWithOneFieldClass, FREE_OBJECT_WITH_ONE_FIELD_CLASS_INDEX, ecma_roots_class)           \
394514f5e3Sopenharmony_ci    V(JSTaggedValue, FreeObjectWithTwoFieldClass, FREE_OBJECT_WITH_TWO_FIELD_CLASS_INDEX, ecma_roots_class)           \
404514f5e3Sopenharmony_ci    V(JSTaggedValue, LineStringClass, LINE_STRING_CLASS_INDEX, ecma_roots_class)                                      \
414514f5e3Sopenharmony_ci    V(JSTaggedValue, SlicedStringClass, SLICED_STRING_CLASS_INDEX, ecma_roots_class)                                  \
424514f5e3Sopenharmony_ci    V(JSTaggedValue, ConstantStringClass, CONSTANT_STRING_CLASS_INDEX, ecma_roots_class)                              \
434514f5e3Sopenharmony_ci    V(JSTaggedValue, TreeStringClass, TREE_STRING_CLASS_INDEX, ecma_roots_class)                                      \
444514f5e3Sopenharmony_ci    V(JSTaggedValue, ArrayClass, ARRAY_CLASS_INDEX, ecma_roots_class)                                                 \
454514f5e3Sopenharmony_ci    V(JSTaggedValue, ByteArrayClass, BYTE_ARRAY_CLASS_INDEX, ecma_roots_class)                                        \
464514f5e3Sopenharmony_ci    V(JSTaggedValue, ConstantPoolClass, CONSTANT_POOL_CLASS_INDEX, ecma_roots_class)                                  \
474514f5e3Sopenharmony_ci    V(JSTaggedValue, ProfileTypeInfoClass, PROFILE_TYPE_INFO_CLASS_INDEX, ecma_roots_class)                           \
484514f5e3Sopenharmony_ci    V(JSTaggedValue, DictionaryClass, DICTIONARY_CLASS_INDEX, ecma_roots_class)                                       \
494514f5e3Sopenharmony_ci    V(JSTaggedValue, COWArrayClass, COW_ARRAY_CLASS_INDEX, ecma_roots_class)                                          \
504514f5e3Sopenharmony_ci    V(JSTaggedValue, MutantTaggedArrayClass, MUTANT_TAGGED_ARRAY_CLASS_INDEX, ecma_roots_class)                       \
514514f5e3Sopenharmony_ci    V(JSTaggedValue, COWMutantTaggedArrayClass, COW_MUTANT_TAGGED_ARRAY_CLASS_INDEX, ecma_roots_class)                \
524514f5e3Sopenharmony_ci    V(JSTaggedValue, BigIntClass, BIGINT_CLASS_INDEX, ecma_roots_class)                                               \
534514f5e3Sopenharmony_ci    V(JSTaggedValue, JSNativePointerClass, JS_NATIVE_POINTER_CLASS_INDEX, ecma_roots_class)                           \
544514f5e3Sopenharmony_ci    V(JSTaggedValue, SJSNativePointerClass, SENDABLE_JS_NATIVE_POINTER_CLASS_INDEX, ecma_roots_class)                 \
554514f5e3Sopenharmony_ci    V(JSTaggedValue, EnvClass, ENV_CLASS_INDEX, ecma_roots_class)                                                     \
564514f5e3Sopenharmony_ci    V(JSTaggedValue, SymbolClass, SYMBOL_CLASS_INDEX, ecma_roots_class)                                               \
574514f5e3Sopenharmony_ci    V(JSTaggedValue, AccessorDataClass, ACCESSOR_DATA_CLASS_INDEX, ecma_roots_class)                                  \
584514f5e3Sopenharmony_ci    V(JSTaggedValue, InternalAccessorClass, INTERNAL_ACCESSOR_CLASS_INDEX, ecma_roots_class)                          \
594514f5e3Sopenharmony_ci    V(JSTaggedValue, CompletionRecordClass, COMPLETION_RECORD_CLASS_INDEX, ecma_roots_class)                          \
604514f5e3Sopenharmony_ci    V(JSTaggedValue, GeneratorContextClass, GENERATOR_CONTEST_INDEX, ecma_roots_class)                                \
614514f5e3Sopenharmony_ci    V(JSTaggedValue, AsyncGeneratorRequestRecordClass, ASYNC_GENERATOR_REQUEST_CLASS_INDEX, ecma_roots_class)         \
624514f5e3Sopenharmony_ci    V(JSTaggedValue, AsyncIteratorRecordClass, ASYNC_ITERATOR_RECORD_CLASS_INDEX, ecma_roots_class)                   \
634514f5e3Sopenharmony_ci    V(JSTaggedValue, CapabilityRecordClass, CAPABILITY_RECORD_CLASS_INDEX, ecma_roots_class)                          \
644514f5e3Sopenharmony_ci    V(JSTaggedValue, ReactionsRecordClass, REACTIONS_RECORD_CLASS_INDEX, ecma_roots_class)                            \
654514f5e3Sopenharmony_ci    V(JSTaggedValue, PromiseIteratorRecordClass, PROMISE_ITERATOR_RECORD_CLASS_INDEX, ecma_roots_class)               \
664514f5e3Sopenharmony_ci    V(JSTaggedValue, PromiseRecordClass, PROMISE_RECORD_CLASS_INDEX, ecma_roots_class)                                \
674514f5e3Sopenharmony_ci    V(JSTaggedValue, PromiseResolvingFunctionsRecordClass, PROMISE_RESOLVING_FUNCTIONS_CLASS_INDEX, ecma_roots_class) \
684514f5e3Sopenharmony_ci    V(JSTaggedValue, MicroJobQueueClass, MICRO_JOB_QUEUE_CLASS_INDEX, ecma_roots_class)                               \
694514f5e3Sopenharmony_ci    V(JSTaggedValue, PendingJobClass, PENDING_JOB_CLASS_INDEX, ecma_roots_class)                                      \
704514f5e3Sopenharmony_ci    V(JSTaggedValue, ProtoChangeMarkerClass, PROTO_CHANGE_MARKER_CLASS_INDEX, ecma_roots_class)                       \
714514f5e3Sopenharmony_ci    V(JSTaggedValue, ProtoChangeDetailsClass, PROTO_CHANGE_DETAILS_CLASS_INDEX, ecma_roots_class)                     \
724514f5e3Sopenharmony_ci    V(JSTaggedValue, MarkerCellClass, MARKER_CELL_CLASS_INDEX, ecma_roots_class)                                      \
734514f5e3Sopenharmony_ci    V(JSTaggedValue, TrackInfoClass, TRACK_INFO_CLASS_INDEX, ecma_roots_class)                                        \
744514f5e3Sopenharmony_ci    V(JSTaggedValue, PrototypeHandlerClass, PROTOTYPE_HANDLER_CLASS_INDEX, ecma_roots_class)                          \
754514f5e3Sopenharmony_ci    V(JSTaggedValue, TransitionHandlerClass, TRANSITION_HANDLER_CLASS_INDEX, ecma_roots_class)                        \
764514f5e3Sopenharmony_ci    V(JSTaggedValue, TransWithProtoHandlerClass, TRANS_WITH_PROTO_HANDLER_CLASS_INDEX, ecma_roots_class)              \
774514f5e3Sopenharmony_ci    V(JSTaggedValue, StoreTSHandlerClass, STORE_TS_HANDLER_CLASS_INDEX, ecma_roots_class)                             \
784514f5e3Sopenharmony_ci    V(JSTaggedValue, PropertyBoxClass, PROPERTY_BOX_CLASS_INDEX, ecma_roots_class)                                    \
794514f5e3Sopenharmony_ci    V(JSTaggedValue, ProgramClass, PROGRAM_CLASS_INDEX, ecma_roots_class)                                             \
804514f5e3Sopenharmony_ci    V(JSTaggedValue, ImportEntryClass, IMPORT_ENTRY_CLASS_INDEX, ecma_roots_class)                                    \
814514f5e3Sopenharmony_ci    V(JSTaggedValue, LocalExportEntryClass, LOCAL_EXPORT_ENTRY_CLASS_INDEX, ecma_roots_class)                         \
824514f5e3Sopenharmony_ci    V(JSTaggedValue, IndirectExportEntryClass, INDIRECT_EXPORT_ENTRY_CLASS_INDEX, ecma_roots_class)                   \
834514f5e3Sopenharmony_ci    V(JSTaggedValue, StarExportEntryClass, STAR_EXPORT_ENTRY_CLASS_INDEX, ecma_roots_class)                           \
844514f5e3Sopenharmony_ci    V(JSTaggedValue, SourceTextModuleClass, SOURCE_TEXT_MODULE_CLASS_INDEX, ecma_roots_class)                         \
854514f5e3Sopenharmony_ci    V(JSTaggedValue, ResolvedBindingClass, RESOLVED_BINDING_CLASS_INDEX, ecma_roots_class)                            \
864514f5e3Sopenharmony_ci    V(JSTaggedValue, ResolvedIndexBindingClass, RESOLVED_INDEX_BINDING_CLASS_INDEX, ecma_roots_class)                 \
874514f5e3Sopenharmony_ci    V(JSTaggedValue, MachineCodeClass, MACHINE_CODE_CLASS_INDEX, ecma_roots_class)                                    \
884514f5e3Sopenharmony_ci    V(JSTaggedValue, ClassInfoExtractorHClass, CLASS_INFO_EXTRACTOR_HCLASS_INDEX, ecma_roots_class)                   \
894514f5e3Sopenharmony_ci    V(JSTaggedValue, CellRecordClass, CELL_RECORD_CLASS_INDEX, ecma_roots_class)                                      \
904514f5e3Sopenharmony_ci    V(JSTaggedValue, AOTLiteralInfoClass, AOT_LITERAL_INFO_CLASS_INDEX, ecma_roots_class)                             \
914514f5e3Sopenharmony_ci    V(JSTaggedValue, MethodClass, METHOD_CLASS_INDEX, ecma_roots_class)                                               \
924514f5e3Sopenharmony_ci    V(JSTaggedValue, LinkedNode, LINKED_NODE_CLASS_INDEX, ecma_roots_class)                                           \
934514f5e3Sopenharmony_ci    V(JSTaggedValue, RBTreeNode, RB_TREENODE_CLASS_INDEX, ecma_roots_class)                                           \
944514f5e3Sopenharmony_ci    V(JSTaggedValue, ClassLiteralClass, CLASS_LITERAL_HCLASS_INDEX, ecma_roots_class)                                 \
954514f5e3Sopenharmony_ci    V(JSTaggedValue, ExtraProfileTypeInfoClass, EXTRA_PROFILE_TYPE_INFO_CLASS_INDEX, ecma_roots_class)               \
964514f5e3Sopenharmony_ci    V(JSTaggedValue, ProfileTypeInfoCell0Class, PROFILE_TYPE_INFO_CELL_0_CLASS_INDEX, ecma_roots_class)               \
974514f5e3Sopenharmony_ci    V(JSTaggedValue, ProfileTypeInfoCell1Class, PROFILE_TYPE_INFO_CELL_1_CLASS_INDEX, ecma_roots_class)               \
984514f5e3Sopenharmony_ci    V(JSTaggedValue, ProfileTypeInfoCellNClass, PROFILE_TYPE_INFO_CELL_N_CLASS_INDEX, ecma_roots_class)               \
994514f5e3Sopenharmony_ci    V(JSTaggedValue, FunctionTemplateClass, FUNCTION_TEMPLATE_CLASS_INDEX, ecma_roots_class)                          \
1004514f5e3Sopenharmony_ci    V(JSTaggedValue, VTableClass, VTABLE_CLASS_INDEX, ecma_roots_class)                                               \
1014514f5e3Sopenharmony_ci    V(JSTaggedValue, ResolvedRecordIndexBindingClass, RESOLVED_RECORD_INEDX_BINDING_CLASS_INDEX, ecma_roots_class)    \
1024514f5e3Sopenharmony_ci    V(JSTaggedValue, ResolvedRecordBindingClass, RESOLVED_RECORD_BINDING_CLASS_INDEX, ecma_roots_class)               \
1034514f5e3Sopenharmony_ci    V(JSTaggedValue, SendableEnvClass, SENDABLE_ENV_CLASS_INDEX, ecma_roots_class)                                    \
1044514f5e3Sopenharmony_ci
1054514f5e3Sopenharmony_ci#define GLOBAL_ENV_CONSTANT_CLASS(V)                                                                                  \
1064514f5e3Sopenharmony_ci    V(JSTaggedValue, JSProxyCallableClass, JS_PROXY_CALLABLE_CLASS_INDEX, ecma_roots_class)                           \
1074514f5e3Sopenharmony_ci    V(JSTaggedValue, JSProxyConstructClass, JS_PROXY_CONSTRUCT_CLASS_INDEX, ecma_roots_class)                         \
1084514f5e3Sopenharmony_ci    V(JSTaggedValue, JSRealmClass, JS_REALM_CLASS_INDEX, ecma_roots_class)                                            \
1094514f5e3Sopenharmony_ci    V(JSTaggedValue, JSRegExpClass, JS_REGEXP_CLASS_INDEX, ecma_roots_class)                                          \
1104514f5e3Sopenharmony_ci    V(JSTaggedValue, JSProxyOrdinaryClass, JS_PROXY_ORDINARY_CLASS_INDEX, ecma_roots_class)                           \
1114514f5e3Sopenharmony_ci    V(JSTaggedValue, JSSetIteratorClass, JS_SET_ITERATOR_CLASS_INDEX, ecma_roots_class)                               \
1124514f5e3Sopenharmony_ci    V(JSTaggedValue, JSSharedSetIteratorClass, JS_SHARED_SET_ITERATOR_CLASS_INDEX, ecma_roots_class)                  \
1134514f5e3Sopenharmony_ci    V(JSTaggedValue, JSRegExpIteratorClass, JS_REGEXP_ITERATOR_CLASS_INDEX, ecma_roots_class)                         \
1144514f5e3Sopenharmony_ci    V(JSTaggedValue, JSMapIteratorClass, JS_MAP_ITERATOR_CLASS_INDEX, ecma_roots_class)                               \
1154514f5e3Sopenharmony_ci    V(JSTaggedValue, JSSharedMapIteratorClass, JS_SHARED_MAP_ITERATOR_CLASS_INDEX, ecma_roots_class)                  \
1164514f5e3Sopenharmony_ci    V(JSTaggedValue, JSArrayIteratorClass, JS_ARRAY_ITERATOR_CLASS_INDEX, ecma_roots_class)                           \
1174514f5e3Sopenharmony_ci    V(JSTaggedValue, JSSharedArrayIteratorClass, JS_SHARED_ARRAY_ITERATOR_CLASS_INDEX, ecma_roots_class)              \
1184514f5e3Sopenharmony_ci    V(JSTaggedValue, JSAPIArrayListIteratorClass, JS_API_ARRAYLIST_ITERATOR_CLASS_INDEX, ecma_roots_class)            \
1194514f5e3Sopenharmony_ci    V(JSTaggedValue, JSAPIDequeIteratorClass, JS_API_DEQUE_ITERATOR_CLASS_INDEX, ecma_roots_class)                    \
1204514f5e3Sopenharmony_ci    V(JSTaggedValue, JSAPILightWeightMapIteratorClass, JS_API_LIGHTWEIGHTMAP_ITERATOR_CLASS_INDEX, ecma_roots_class)  \
1214514f5e3Sopenharmony_ci    V(JSTaggedValue, JSAPILightWeightSetIteratorClass, JS_API_LIGHTWEIGHTSET_ITERATOR_CLASS_INDEX, ecma_roots_class)  \
1224514f5e3Sopenharmony_ci    V(JSTaggedValue, JSAPILinkedListIteratorClass, JS_API_LINKED_LIST_ITERATOR_CLASS_INDEX, ecma_roots_class)         \
1234514f5e3Sopenharmony_ci    V(JSTaggedValue, JSAPIListIteratorClass, JS_API_LIST_ITERATOR_CLASS_INDEX, ecma_roots_class)                      \
1244514f5e3Sopenharmony_ci    V(JSTaggedValue, JSAPIPlainArrayIteratorClass, JS_API_PLAIN_ARRAY_ITERATOR_CLASS_INDEX, ecma_roots_class)         \
1254514f5e3Sopenharmony_ci    V(JSTaggedValue, JSAPIQueueIteratorClass, JS_API_QUEUE_ITERATOR_CLASS_INDEX, ecma_roots_class)                    \
1264514f5e3Sopenharmony_ci    V(JSTaggedValue, JSAPIStackIteratorClass, JS_API_STACK_ITERATOR_CLASS_INDEX, ecma_roots_class)                    \
1274514f5e3Sopenharmony_ci    V(JSTaggedValue, JSAPIVectorIteratorClass, JS_API_VECTOR_ITERATOR_CLASS_INDEX, ecma_roots_class)                  \
1284514f5e3Sopenharmony_ci    V(JSTaggedValue, JSAPIBitVectorIteratorClass, JS_API_BITVECTOR_ITERATOR_CLASS_INDEX, ecma_roots_class)            \
1294514f5e3Sopenharmony_ci    V(JSTaggedValue, JSAPIHashMapIteratorClass, JS_API_HASH_MAP_ITERATOR_CLASS_INDEX, ecma_roots_class)               \
1304514f5e3Sopenharmony_ci    V(JSTaggedValue, JSAPIHashSetIteratorClass, JS_API_HASH_SET_ITERATOR_CLASS_INDEX, ecma_roots_class)               \
1314514f5e3Sopenharmony_ci    V(JSTaggedValue, JSAPITreeMapIteratorClass, JS_API_TREE_MAP_ITERATOR_CLASS_INDEX, ecma_roots_class)               \
1324514f5e3Sopenharmony_ci    V(JSTaggedValue, JSAPITreeSetIteratorClass, JS_API_TREE_SET_ITERATOR_CLASS_INDEX, ecma_roots_class)               \
1334514f5e3Sopenharmony_ci    V(JSTaggedValue, JSAPIIteratorFuncHClass, JS_API_ITERATOR_FUNC_CLASS_INDEX, ecma_roots_class)                     \
1344514f5e3Sopenharmony_ci    V(JSTaggedValue, JSAPIAsyncIteratorFuncHClass, JS_API_ASYNCITERATOR_FUNC_CLASS_INDEX, ecma_roots_class)           \
1354514f5e3Sopenharmony_ci    V(JSTaggedValue, ObjectClass, OBJECT_HCLASS_INDEX, initial_object_hclass)                                         \
1364514f5e3Sopenharmony_ci    V(JSTaggedValue, IteratorResultClass, ITERATOR_RESULT_CLASS, ecma_roots_class)                                    \
1374514f5e3Sopenharmony_ci    V(JSTaggedValue, ClassPrototypeClass, CLASS_PROTOTYPE_HCLASS_INDEX, ecma_roots_class)                             \
1384514f5e3Sopenharmony_ci    V(JSTaggedValue, ClassConstructorClass, CLASS_CONSTRUCTOR_HCLASS_INDEX, ecma_roots_class)                         \
1394514f5e3Sopenharmony_ci    V(JSTaggedValue, ElementNoneProtoClass, ELEMENT_NONE_PROTO_HCLASS_INDEX, ecma_roots_class)                        \
1404514f5e3Sopenharmony_ci    V(JSTaggedValue, ElementHoleProtoClass, ELEMENT_HOLE_PROTO_HCLASS_INDEX, ecma_roots_class)                        \
1414514f5e3Sopenharmony_ci    V(JSTaggedValue, ElementIntProtoClass, ELEMENT_INT_PROTO_HCLASS_INDEX, ecma_roots_class)                          \
1424514f5e3Sopenharmony_ci    V(JSTaggedValue, ElementNumberProtoClass, ELEMENT_NUMBER_PROTO_HCLASS_INDEX, ecma_roots_class)                    \
1434514f5e3Sopenharmony_ci    V(JSTaggedValue, ElementStringProtoClass, ELEMENT_STRING_PROTO_HCLASS_INDEX, ecma_roots_class)                    \
1444514f5e3Sopenharmony_ci    V(JSTaggedValue, ElementObjectProtoClass, ELEMENT_OBJECT_PROTO_HCLASS_INDEX, ecma_roots_class)                    \
1454514f5e3Sopenharmony_ci    V(JSTaggedValue, ElementTaggedProtoClass, ELEMENT_TAGGED_PROTO_HCLASS_INDEX, ecma_roots_class)                    \
1464514f5e3Sopenharmony_ci    V(JSTaggedValue, ElementHoleIntProtoClass, ELEMENT_HOLE_INT_PROTO_HCLASS_INDEX, ecma_roots_class)                 \
1474514f5e3Sopenharmony_ci    V(JSTaggedValue, ElementHoleNumberProtoClass, ELEMENT_HOLE_NUMBER_PROTO_HCLASS_INDEX, ecma_roots_class)           \
1484514f5e3Sopenharmony_ci    V(JSTaggedValue, ElementHoleStringProtoClass, ELEMENT_HOLE_STRING_PROTO_HCLASS_INDEX, ecma_roots_class)           \
1494514f5e3Sopenharmony_ci    V(JSTaggedValue, ElementHoleObjectProtoClass, ELEMENT_HOLE_OBJECT_PROTO_HCLASS_INDEX, ecma_roots_class)           \
1504514f5e3Sopenharmony_ci    V(JSTaggedValue, ElementHoleTaggedProtoClass, ELEMENT_HOLE_TAGGED_PROTO_HCLASS_INDEX, ecma_roots_class)           \
1514514f5e3Sopenharmony_ci    V(JSTaggedValue, ElementNoneClass, ELEMENT_NONE_HCLASS_INDEX, ecma_roots_class)                                   \
1524514f5e3Sopenharmony_ci    V(JSTaggedValue, ElementHoleClass, ELEMENT_HOLE_HCLASS_INDEX, ecma_roots_class)                                   \
1534514f5e3Sopenharmony_ci    V(JSTaggedValue, ElementIntClass, ELEMENT_INT_HCLASS_INDEX, ecma_roots_class)                                     \
1544514f5e3Sopenharmony_ci    V(JSTaggedValue, ElementNumberClass, ELEMENT_NUMBER_HCLASS_INDEX, ecma_roots_class)                               \
1554514f5e3Sopenharmony_ci    V(JSTaggedValue, ElementStringClass, ELEMENT_STRING_HCLASS_INDEX, ecma_roots_class)                               \
1564514f5e3Sopenharmony_ci    V(JSTaggedValue, ElementObjectClass, ELEMENT_OBJECT_HCLASS_INDEX, ecma_roots_class)                               \
1574514f5e3Sopenharmony_ci    V(JSTaggedValue, ElementTaggedClass, ELEMENT_TAGGED_HCLASS_INDEX, ecma_roots_class)                               \
1584514f5e3Sopenharmony_ci    V(JSTaggedValue, ElementHoleIntClass, ELEMENT_HOLE_INT_HCLASS_INDEX, ecma_roots_class)                            \
1594514f5e3Sopenharmony_ci    V(JSTaggedValue, ElementHoleNumberClass, ELEMENT_HOLE_NUMBER_HCLASS_INDEX, ecma_roots_class)                      \
1604514f5e3Sopenharmony_ci    V(JSTaggedValue, ElementHoleStringClass, ELEMENT_HOLE_STRING_HCLASS_INDEX, ecma_roots_class)                      \
1614514f5e3Sopenharmony_ci    V(JSTaggedValue, ElementHoleObjectClass, ELEMENT_HOLE_OBJECT_HCLASS_INDEX, ecma_roots_class)                      \
1624514f5e3Sopenharmony_ci    V(JSTaggedValue, ElementHoleTaggedClass, ELEMENT_HOLE_TAGGED_HCLASS_INDEX, ecma_roots_class)
1634514f5e3Sopenharmony_ci
1644514f5e3Sopenharmony_ci// NOLINTNEXTLINE(cppcoreguidelines-macro-usage)
1654514f5e3Sopenharmony_ci#define GLOBAL_ENV_CONSTANT_SPECIAL(V)                                                                 \
1664514f5e3Sopenharmony_ci    V(JSTaggedValue, EmptyLayoutInfo, EMPTY_LAYOUT_INFO_OBJECT_INDEX, ecma_roots_special)              \
1674514f5e3Sopenharmony_ci    V(JSTaggedValue, DefaultSupers, DEFAULT_SUPERS_INDEX, ecma_roots_special)                          \
1684514f5e3Sopenharmony_ci    V(JSTaggedValue, EmptyTaggedQueue, EMPTY_TAGGED_QUEUE_OBJECT_INDEX, ecma_roots_special)            \
1694514f5e3Sopenharmony_ci    V(JSTaggedValue, UndefinedCompletionRecord, UNDEFINED_COMPLRTION_RECORD_INDEX, ecma_roots_special)
1704514f5e3Sopenharmony_ci
1714514f5e3Sopenharmony_ci// Use for builtins inlining
1724514f5e3Sopenharmony_ci#define GLOBAL_ENV_INLINED_BUILTINS(V)                                                                  \
1734514f5e3Sopenharmony_ci    V(JSTaggedValue, MathSqrt, MATH_SQRT_INDEX, ecma_roots_builtins)                                    \
1744514f5e3Sopenharmony_ci    V(JSTaggedValue, MathAcos, MATH_ACOS_INDEX, ecma_roots_builtins)                                    \
1754514f5e3Sopenharmony_ci    V(JSTaggedValue, MathAcosh, MATH_ACOSH_INDEX, ecma_roots_builtins)                                  \
1764514f5e3Sopenharmony_ci    V(JSTaggedValue, MathAsin, MATH_ASIN_INDEX, ecma_roots_builtins)                                    \
1774514f5e3Sopenharmony_ci    V(JSTaggedValue, MathAsinh, MATH_ASINH_INDEX, ecma_roots_builtins)                                  \
1784514f5e3Sopenharmony_ci    V(JSTaggedValue, MathAtan, MATH_ATAN_INDEX, ecma_roots_builtins)                                    \
1794514f5e3Sopenharmony_ci    V(JSTaggedValue, MathAtan2, MATH_ATAN2_INDEX, ecma_roots_builtins)                                  \
1804514f5e3Sopenharmony_ci    V(JSTaggedValue, MathAtanh, MATH_ATANH_INDEX, ecma_roots_builtins)                                  \
1814514f5e3Sopenharmony_ci    V(JSTaggedValue, MathCos, MATH_COS_INDEX, ecma_roots_builtins)                                      \
1824514f5e3Sopenharmony_ci    V(JSTaggedValue, MathCosh, MATH_COSH_INDEX, ecma_roots_builtins)                                    \
1834514f5e3Sopenharmony_ci    V(JSTaggedValue, MathSign, MATH_SIGN_INDEX, ecma_roots_builtins)                                    \
1844514f5e3Sopenharmony_ci    V(JSTaggedValue, MathSin, MATH_SIN_INDEX, ecma_roots_builtins)                                      \
1854514f5e3Sopenharmony_ci    V(JSTaggedValue, MathSinh, MATH_SINH_INDEX, ecma_roots_builtins)                                    \
1864514f5e3Sopenharmony_ci    V(JSTaggedValue, MathTan, MATH_TAN_INDEX, ecma_roots_builtins)                                      \
1874514f5e3Sopenharmony_ci    V(JSTaggedValue, MathTanh, MATH_TANH_INDEX, ecma_roots_builtins)                                    \
1884514f5e3Sopenharmony_ci    V(JSTaggedValue, MathTrunc, MATH_TRUNC_INDEX, ecma_roots_builtins)                                  \
1894514f5e3Sopenharmony_ci    V(JSTaggedValue, MathLog, MATH_LOG_INDEX, ecma_roots_builtins)                                      \
1904514f5e3Sopenharmony_ci    V(JSTaggedValue, MathLog2, MATH_LOG2_INDEX, ecma_roots_builtins)                                    \
1914514f5e3Sopenharmony_ci    V(JSTaggedValue, MathLog10, MATH_LOG10_INDEX, ecma_roots_builtins)                                  \
1924514f5e3Sopenharmony_ci    V(JSTaggedValue, MathLog1p, MATH_LOG1P_INDEX, ecma_roots_builtins)                                  \
1934514f5e3Sopenharmony_ci    V(JSTaggedValue, MathExp, MATH_EXP_INDEX, ecma_roots_builtins)                                      \
1944514f5e3Sopenharmony_ci    V(JSTaggedValue, MathExpm1, MATH_EXPM1_INDEX, ecma_roots_builtins)                                  \
1954514f5e3Sopenharmony_ci    V(JSTaggedValue, MathClz32, MATH_CLZ32_INDEX, ecma_roots_builtins)                                  \
1964514f5e3Sopenharmony_ci    V(JSTaggedValue, MathAbs, MATH_ABS_INDEX, ecma_roots_builtins)                                      \
1974514f5e3Sopenharmony_ci    V(JSTaggedValue, MathPow, MATH_POW_INDEX, ecma_roots_builtins)                                      \
1984514f5e3Sopenharmony_ci    V(JSTaggedValue, MathCbrt, MATH_CBRT_INDEX, ecma_roots_builtins)                                    \
1994514f5e3Sopenharmony_ci    V(JSTaggedValue, MathMin, MATH_MIN_INDEX, ecma_roots_builtins)                                      \
2004514f5e3Sopenharmony_ci    V(JSTaggedValue, MathMax, MATH_MAX_INDEX, ecma_roots_builtins)                                      \
2014514f5e3Sopenharmony_ci    V(JSTaggedValue, MathRound, MATH_ROUND_INDEX, ecma_roots_builtins)                                  \
2024514f5e3Sopenharmony_ci    V(JSTaggedValue, MathFRound, MATH_FROUND_INDEX, ecma_roots_builtins)                                \
2034514f5e3Sopenharmony_ci    V(JSTaggedValue, MathCeil, MATH_CEIL_INDEX, ecma_roots_builtins)                                    \
2044514f5e3Sopenharmony_ci    V(JSTaggedValue, MathFloor, MATH_FLOOR_INDEX, ecma_roots_builtins)                                  \
2054514f5e3Sopenharmony_ci    V(JSTaggedValue, MathImul, MATH_IMUL_INDEX, ecma_roots_builtins)                                    \
2064514f5e3Sopenharmony_ci    V(JSTaggedValue, BigIntAsIntN, BIGINT_AS_INTN_INDEX, ecma_roots_builtins)                           \
2074514f5e3Sopenharmony_ci    V(JSTaggedValue, BigIntAsUintN, BIGINT_AS_UINTN_INDEX, ecma_roots_builtins)                         \
2084514f5e3Sopenharmony_ci    V(JSTaggedValue, GlobalIsFinite, GLOBAL_IS_FINITE_INDEX, ecma_roots_builtins)                       \
2094514f5e3Sopenharmony_ci    V(JSTaggedValue, GlobalIsNan, GLOBAL_IS_NAN_INDEX, ecma_roots_builtins)                             \
2104514f5e3Sopenharmony_ci    V(JSTaggedValue, MapGet, MAP_GET_INDEX, ecma_roots_builtins)                                        \
2114514f5e3Sopenharmony_ci    V(JSTaggedValue, MapHas, MAP_HAS_INDEX, ecma_roots_builtins)                                        \
2124514f5e3Sopenharmony_ci    V(JSTaggedValue, MapKeys, MAP_KEYS_INDEX, ecma_roots_builtins)                                      \
2134514f5e3Sopenharmony_ci    V(JSTaggedValue, MapValues, MAP_VALUES_INDEX, ecma_roots_builtins)                                  \
2144514f5e3Sopenharmony_ci    V(JSTaggedValue, MapEntries, MAP_ENTRIES_INDEX, ecma_roots_builtins)                                \
2154514f5e3Sopenharmony_ci    V(JSTaggedValue, SetHas, SET_HAS_INDEX, ecma_roots_builtins)                                        \
2164514f5e3Sopenharmony_ci    V(JSTaggedValue, MapDelete, MAP_DELETE_INDEX, ecma_roots_builtins)                                  \
2174514f5e3Sopenharmony_ci    V(JSTaggedValue, SetDelete, SET_DELETE_INDEX, ecma_roots_builtins)                                  \
2184514f5e3Sopenharmony_ci    V(JSTaggedValue, SetValues, SET_VALUES_INDEX, ecma_roots_builtins)                                  \
2194514f5e3Sopenharmony_ci    V(JSTaggedValue, SetEntries, SET_ENTRIES_INDEX, ecma_roots_builtins)                                \
2204514f5e3Sopenharmony_ci    V(JSTaggedValue, MapClear, MAP_CLEAR_INDEX, ecma_roots_builtins)                                    \
2214514f5e3Sopenharmony_ci    V(JSTaggedValue, SetClear, SET_CLEAR_INDEX, ecma_roots_builtins)                                    \
2224514f5e3Sopenharmony_ci    V(JSTaggedValue, SetAdd, SET_ADD_INDEX, ecma_roots_builtins)                                        \
2234514f5e3Sopenharmony_ci    V(JSTaggedValue, LocaleCompareFunction, LOCALE_COMPARE_FUNCTION_INDEX, ecma_roots_builtins)         \
2244514f5e3Sopenharmony_ci    V(JSTaggedValue, ArraySortFunction, ARRAY_SORT_FUNCTION_INDEX, ecma_roots_builtins)                 \
2254514f5e3Sopenharmony_ci    V(JSTaggedValue, JsonStringifyFunction, JSON_STRINGIFY_FUNCTION_INDEX, ecma_roots_builtins)         \
2264514f5e3Sopenharmony_ci    V(JSTaggedValue, MapIteratorProtoNext, MAP_ITERATOR_PROTO_NEXT_INDEX, ecma_roots_builtins)          \
2274514f5e3Sopenharmony_ci    V(JSTaggedValue, SetIteratorProtoNext, SET_ITERATOR_PROTO_NEXT_INDEX, ecma_roots_builtins)          \
2284514f5e3Sopenharmony_ci    V(JSTaggedValue, StringIteratorProtoNext, STRING_ITERATOR_PROTO_NEXT_INDEX, ecma_roots_builtins)    \
2294514f5e3Sopenharmony_ci    V(JSTaggedValue, ArrayIteratorProtoNext, ARRAY_ITERATOR_PROTO_NEXT_INDEX, ecma_roots_builtins)      \
2304514f5e3Sopenharmony_ci    V(JSTaggedValue, IteratorProtoReturn, ITERATOR_PROTO_RETURN_INDEX, ecma_roots_builtins)             \
2314514f5e3Sopenharmony_ci    V(JSTaggedValue, StringFromCharCode, STRING_FROM_CHAR_CODE_INDEX, ecma_roots_builtins)              \
2324514f5e3Sopenharmony_ci    V(JSTaggedValue, StringCharCodeAt, STRING_CHAR_CODE_AT_INDEX, ecma_roots_builtins)                  \
2334514f5e3Sopenharmony_ci    V(JSTaggedValue, StringSubstring, STRING_SUB_STRING_INDEX, ecma_roots_special)                      \
2344514f5e3Sopenharmony_ci    V(JSTaggedValue, StringSubStr, STRING_SUB_STR_INDEX, ecma_roots_special)                            \
2354514f5e3Sopenharmony_ci    V(JSTaggedValue, StringSlice, STRING_SLICE_INDEX, ecma_roots_special)                               \
2364514f5e3Sopenharmony_ci    V(JSTaggedValue, TypedArrayEntries, TYPED_ARRAY_ENTRIES_INDEX, ecma_roots_special)                  \
2374514f5e3Sopenharmony_ci    V(JSTaggedValue, TypedArrayKeys, TYPED_ARRAY_KEYS_INDEX, ecma_roots_special)                        \
2384514f5e3Sopenharmony_ci    V(JSTaggedValue, TypedArrayValues, TYPED_ARRAY_VALUES_INDEX, ecma_roots_special)                    \
2394514f5e3Sopenharmony_ci    V(JSTaggedValue, ArrayBufferIsView, ARRAY_BUFFER_IS_VIEW_INDEX, ecma_roots_builtins)                \
2404514f5e3Sopenharmony_ci    V(JSTaggedValue, DataViewGetFloat32, DATA_VIEW_GET_FLOAT32_INDEX, ecma_roots_builtins)              \
2414514f5e3Sopenharmony_ci    V(JSTaggedValue, DataViewGetFloat64, DATA_VIEW_GET_FLOAT64_INDEX, ecma_roots_builtins)              \
2424514f5e3Sopenharmony_ci    V(JSTaggedValue, DataViewGetInt8, DATA_VIEW_GET_INT8_INDEX, ecma_roots_builtins)                    \
2434514f5e3Sopenharmony_ci    V(JSTaggedValue, DataViewGetInt16, DATA_VIEW_GET_INT16_INDEX, ecma_roots_builtins)                  \
2444514f5e3Sopenharmony_ci    V(JSTaggedValue, DataViewGetInt32, DATA_VIEW_GET_INT32_INDEX, ecma_roots_builtins)                  \
2454514f5e3Sopenharmony_ci    V(JSTaggedValue, DataViewGetUint16, DATA_VIEW_GET_UINT16_INDEX, ecma_roots_builtins)                \
2464514f5e3Sopenharmony_ci    V(JSTaggedValue, DataViewGetUint32, DATA_VIEW_GET_UINT32_INDEX, ecma_roots_builtins)                \
2474514f5e3Sopenharmony_ci    V(JSTaggedValue, DataViewGetUint8, DATA_VIEW_GET_UINT8_INDEX, ecma_roots_builtins)                  \
2484514f5e3Sopenharmony_ci    V(JSTaggedValue, DataViewSetFloat32, DATA_VIEW_SET_FLOAT32_INDEX, ecma_roots_builtins)              \
2494514f5e3Sopenharmony_ci    V(JSTaggedValue, DataViewSetFloat64, DATA_VIEW_SET_FLOAT64_INDEX, ecma_roots_builtins)              \
2504514f5e3Sopenharmony_ci    V(JSTaggedValue, DataViewSetInt8, DATA_VIEW_SET_INT8_INDEX, ecma_roots_builtins)                    \
2514514f5e3Sopenharmony_ci    V(JSTaggedValue, DataViewSetInt16, DATA_VIEW_SET_INT16_INDEX, ecma_roots_builtins)                  \
2524514f5e3Sopenharmony_ci    V(JSTaggedValue, DataViewSetInt32, DATA_VIEW_SET_INT32_INDEX, ecma_roots_builtins)                  \
2534514f5e3Sopenharmony_ci    V(JSTaggedValue, DataViewSetUint8, DATA_VIEW_SET_UINT8_INDEX, ecma_roots_builtins)                  \
2544514f5e3Sopenharmony_ci    V(JSTaggedValue, DataViewSetUint16, DATA_VIEW_SET_UINT16_INDEX, ecma_roots_builtins)                \
2554514f5e3Sopenharmony_ci    V(JSTaggedValue, DataViewSetUint32, DATA_VIEW_SET_UINT32_INDEX, ecma_roots_builtins)                \
2564514f5e3Sopenharmony_ci    V(JSTaggedValue, DateGetTime, DATE_GET_TIME_INDEX, ecma_roots_special)                              \
2574514f5e3Sopenharmony_ci    V(JSTaggedValue, DateNow, DATE_NOW_INDEX, ecma_roots_special)                                       \
2584514f5e3Sopenharmony_ci    V(JSTaggedValue, NumberIsNaN, NUMBER_IS_NAN_INDEX, ecma_roots_builtins)                             \
2594514f5e3Sopenharmony_ci    V(JSTaggedValue, NumberIsFinite, NUMBER_IS_FINITE_INDEX, ecma_roots_builtins)                       \
2604514f5e3Sopenharmony_ci    V(JSTaggedValue, NumberIsInteger, NUMBER_IS_INTEGER_INDEX, ecma_roots_builtins)                     \
2614514f5e3Sopenharmony_ci    V(JSTaggedValue, NumberIsSafeInteger, NUMBER_IS_SAFEINTEGER_INDEX, ecma_roots_builtins)             \
2624514f5e3Sopenharmony_ci    V(JSTaggedValue, NumberParseFloat, NUMBER_PARSE_FLOAT_INDEX, ecma_roots_builtins)                   \
2634514f5e3Sopenharmony_ci    V(JSTaggedValue, NumberParseInt, NUMBER_PARSE_INT_INDEX, ecma_roots_builtins)                       \
2644514f5e3Sopenharmony_ci    V(JSTaggedValue, ObjectIs, OBJECT_IS_INDEX, ecma_roots_special)                                     \
2654514f5e3Sopenharmony_ci    V(JSTaggedValue, ObjectGetPrototypeOf, OBJECT_GET_PROTOTYPE_OF_INDEX, ecma_roots_special)           \
2664514f5e3Sopenharmony_ci    V(JSTaggedValue, ObjectGetPrototo, OBJECT_GET_PROTO_INDEX, ecma_roots_special)                      \
2674514f5e3Sopenharmony_ci    V(JSTaggedValue, ObjectCreate, OBJECT_CREATE_INDEX, ecma_roots_special)                             \
2684514f5e3Sopenharmony_ci    V(JSTaggedValue, ObjectIsPrototypeOf, OBJECT_IS_PROTOTYPE_OF_INDEX, ecma_roots_special)             \
2694514f5e3Sopenharmony_ci    V(JSTaggedValue, ObjectHasOwnProperty, OBJECT_HAS_OWN_PROPERTY_INDEX, ecma_roots_special)           \
2704514f5e3Sopenharmony_ci    V(JSTaggedValue, ReflectGetPrototypeOf, REFLECT_GET_PROTOTYPE_OF_INDEX, ecma_roots_special)         \
2714514f5e3Sopenharmony_ci    V(JSTaggedValue, ReflectGet, REFLECT_GET_INDEX, ecma_roots_special)                                 \
2724514f5e3Sopenharmony_ci    V(JSTaggedValue, ReflectHas, REFLECT_HAS_INDEX, ecma_roots_special)                                 \
2734514f5e3Sopenharmony_ci    V(JSTaggedValue, ReflectConstruct, REFLECT_CONSTRUCT_INDEX, ecma_roots_special)                     \
2744514f5e3Sopenharmony_ci    V(JSTaggedValue, ReflectApply, REFLECT_APPLY_INDEX, ecma_roots_special)                             \
2754514f5e3Sopenharmony_ci    V(JSTaggedValue, FunctionApply, FUNCTION_PROTOTYPE_APPLY_INDEX, ecma_roots_special)                 \
2764514f5e3Sopenharmony_ci    V(JSTaggedValue, FunctionBind, FUNCTION_PROTOTYPE_BIND_INDEX, ecma_roots_special)                   \
2774514f5e3Sopenharmony_ci    V(JSTaggedValue, FunctionCall, FUNCTION_PROTOTYPE_CALL_INDEX, ecma_roots_special)                   \
2784514f5e3Sopenharmony_ci    V(JSTaggedValue, FunctionHasInstance, FUNCTION_PROTOTYPE_HAS_INSTANCE_INDEX, ecma_roots_special)    \
2794514f5e3Sopenharmony_ci    V(JSTaggedValue, ArrayIndexOf, ARRAY_INDEXOF_INDEX, ecma_roots_builtins)                            \
2804514f5e3Sopenharmony_ci    V(JSTaggedValue, ArrayIncludes, ARRAY_INCLUDES_INDEX, ecma_roots_builtins)                          \
2814514f5e3Sopenharmony_ci    V(JSTaggedValue, ArrayKeys, ARRAY_KEYS_INDEX, ecma_roots_builtins)                                  \
2824514f5e3Sopenharmony_ci    V(JSTaggedValue, ArrayEntries, ARRAY_ENTRIES_INDEX, ecma_roots_builtins)                            \
2834514f5e3Sopenharmony_ci    V(JSTaggedValue, ArrayValues, ARRAY_VALUES_INDEX, ecma_roots_builtins)                              \
2844514f5e3Sopenharmony_ci    V(JSTaggedValue, ArrayForEach, ARRAY_FOREACH_INDEX, ecma_roots_builtins)                            \
2854514f5e3Sopenharmony_ci    V(JSTaggedValue, ArrayFind, ARRAY_FIND_INDEX, ecma_roots_builtins)                                  \
2864514f5e3Sopenharmony_ci    V(JSTaggedValue, ArrayFindIndex, ARRAY_FINDINDEX_INDEX, ecma_roots_builtins)                        \
2874514f5e3Sopenharmony_ci    V(JSTaggedValue, ArrayFilter, ARRAY_FILTER_INDEX, ecma_roots_builtins)                              \
2884514f5e3Sopenharmony_ci    V(JSTaggedValue, ArrayMap, ARRAY_MAP_INDEX, ecma_roots_builtins)                                    \
2894514f5e3Sopenharmony_ci    V(JSTaggedValue, ArraySome, ARRAY_SOME_INDEX, ecma_roots_builtins)                                  \
2904514f5e3Sopenharmony_ci    V(JSTaggedValue, ArrayEvery, ARRAY_EVERY_INDEX, ecma_roots_builtins)                                \
2914514f5e3Sopenharmony_ci    V(JSTaggedValue, ArrayPop, ARRAY_POP_INDEX, ecma_roots_builtins)                                    \
2924514f5e3Sopenharmony_ci    V(JSTaggedValue, ArraySlice, ARRAY_SLICE_INDEX, ecma_roots_builtins)                                \
2934514f5e3Sopenharmony_ci    V(JSTaggedValue, GloablDecodeURIComponent, GLOBAL_DECODE_URI_COMPONENT, ecma_roots_builtins)
2944514f5e3Sopenharmony_ci
2954514f5e3Sopenharmony_ci// All of type JSTaggedValue
2964514f5e3Sopenharmony_ci#define SHARED_GLOBAL_ENV_CONSTANT_STRING(V)                                                                \
2974514f5e3Sopenharmony_ci    V(ConstructorString,              CONSTRUCTOR_STRING_INDEX,              "constructor")                 \
2984514f5e3Sopenharmony_ci    V(PrototypeString,                PROTOTYPE_STRING_INDEX,                "prototype")                   \
2994514f5e3Sopenharmony_ci    V(SizeString,                     SIZE_STRING_INDEX,                     "size")                        \
3004514f5e3Sopenharmony_ci    V(LengthString,                   LENGTH_STRING_INDEX,                   "length")                      \
3014514f5e3Sopenharmony_ci    V(ValueString,                    VALUE_STRING_INDEX,                    "value")                       \
3024514f5e3Sopenharmony_ci    V(SetString,                      SET_STRING_INDEX,                      "set")                         \
3034514f5e3Sopenharmony_ci    V(GetString,                      GET_STRING_INDEX,                      "get")                         \
3044514f5e3Sopenharmony_ci    V(SetWithSpaceString,             SET_SPACE_STRING_INDEX,                "set ")                         \
3054514f5e3Sopenharmony_ci    V(GetWithSpaceString,             GET_SPACE_STRING_INDEX,                "get ")                         \
3064514f5e3Sopenharmony_ci    V(WritableString,                 WRITABLE_STRING_INDEX,                 "writable")                    \
3074514f5e3Sopenharmony_ci    V(EnumerableString,               ENUMERABLE_STRING_INDEX,               "enumerable")                  \
3084514f5e3Sopenharmony_ci    V(ConfigurableString,             CONFIGURABLE_STRING_INDEX,             "configurable")                \
3094514f5e3Sopenharmony_ci    V(NameString,                     NAME_STRING_INDEX,                     "name")                        \
3104514f5e3Sopenharmony_ci    /* SymbolTable * RegisterSymbols */                                                                     \
3114514f5e3Sopenharmony_ci    V(GetPrototypeOfString,           GETPROTOTYPEOF_STRING_INDEX,           "getPrototypeOf")              \
3124514f5e3Sopenharmony_ci    V(SetPrototypeOfString,           SETPROTOTYPEOF_STRING_INDEX,           "setPrototypeOf")              \
3134514f5e3Sopenharmony_ci    V(IsExtensibleString,             ISEXTENSIBLE_STRING_INDEX,             "isExtensible")                \
3144514f5e3Sopenharmony_ci    V(PreventExtensionsString,        PREVENTEXTENSIONS_STRING_INDEX,        "preventExtensions")           \
3154514f5e3Sopenharmony_ci    V(GetOwnPropertyDescriptorString, GETOWNPROPERTYDESCRIPTOR_STRING_INDEX, "getOwnPropertyDescriptor")    \
3164514f5e3Sopenharmony_ci    V(DefinePropertyString,           DEFINEPROPERTY_STRING_INDEX,           "defineProperty")              \
3174514f5e3Sopenharmony_ci    V(HasString,                      HAS_STRING_INDEX,                      "has")                         \
3184514f5e3Sopenharmony_ci    V(DeletePropertyString,           DELETEPROPERTY_STRING_INDEX,           "deleteProperty")              \
3194514f5e3Sopenharmony_ci    V(EnumerateString,                ENUMERATE_STRING_INDEX,                "enumerate")                   \
3204514f5e3Sopenharmony_ci    V(OwnKeysString,                  OWNKEYS_STRING_INDEX,                  "ownKeys")                     \
3214514f5e3Sopenharmony_ci    V(ApplyString,                    APPLY_STRING_INDEX,                    "apply")                       \
3224514f5e3Sopenharmony_ci    V(NegativeZeroString,             NEGATIVE_ZERO_STRING_INDEX,            "-0")                          \
3234514f5e3Sopenharmony_ci    V(DoneString,                     DONE_STRING_INDEX,                     "done")                        \
3244514f5e3Sopenharmony_ci    V(ProxyString,                    PROXY_STRING_INDEX,                    "proxy")                       \
3254514f5e3Sopenharmony_ci    V(RevokeString,                   REVOKE_STRING_INDEX,                   "revoke")                      \
3264514f5e3Sopenharmony_ci    V(NextString,                     NEXT_STRING_INDEX,                     "next")                        \
3274514f5e3Sopenharmony_ci    V(ToStringString,                 TO_STRING_STRING_INDEX,                "toString")                    \
3284514f5e3Sopenharmony_ci    V(ToLocaleStringString,           TO_LOCALE_STRING_STRING_INDEX,         "toLocaleString")              \
3294514f5e3Sopenharmony_ci    V(ValueOfString,                  VALUE_OF_STRING_INDEX,                 "valueOf")                     \
3304514f5e3Sopenharmony_ci    V(UndefinedString,                UNDEFINED_STRING_INDEX,                "undefined")                   \
3314514f5e3Sopenharmony_ci    V(NullString,                     NULL_STRING_INDEX,                     "null")                        \
3324514f5e3Sopenharmony_ci    V(BooleanString,                  BOOLEAN_STRING_INDEX,                  "boolean")                     \
3334514f5e3Sopenharmony_ci    V(NumberString,                   NUMBER_STRING_INDEX,                   "number")                      \
3344514f5e3Sopenharmony_ci    V(BigIntString,                   BIGINT_STRING_INDEX,                   "bigint")                      \
3354514f5e3Sopenharmony_ci    V(FunctionString,                 FUNCTION_STRING_INDEX,                 "function")                    \
3364514f5e3Sopenharmony_ci    V(StringString,                   STRING_STRING_INDEX,                   "string")                      \
3374514f5e3Sopenharmony_ci    V(SymbolString,                   SYMBOL_STRING_INDEX,                   "symbol")                      \
3384514f5e3Sopenharmony_ci    V(NativeModuleFailureInfoString,  NATIVE_MODULE_FAILURE_INFO_STRING_INDEX, "NativeModuleFailureInfo")   \
3394514f5e3Sopenharmony_ci    V(ObjectString,                   OBJECT_STRING_INDEX,                   "object")                      \
3404514f5e3Sopenharmony_ci    V(TrueString,                     TRUE_STRING_INDEX,                     "true")                        \
3414514f5e3Sopenharmony_ci    V(FalseString,                    FALSE_STRING_INDEX,                    "false")                       \
3424514f5e3Sopenharmony_ci    V(ReturnString,                   RETURN_STRING_INDEX,                   "return")                      \
3434514f5e3Sopenharmony_ci    V(ProxyConstructString,           PROXY_CONSTRUCT_STRING_INDEX,          "construct")                   \
3444514f5e3Sopenharmony_ci    V(ProxyCallString,                PROXY_CALL_STRING_INDEX,               "call")                        \
3454514f5e3Sopenharmony_ci    V(PromiseThenString,              PROMISE_THEN_STRING_INDEX,             "then")                        \
3464514f5e3Sopenharmony_ci    V(PromiseCatchString,             PROMISE_CATCH_STRING_INDEX,            "catch")                       \
3474514f5e3Sopenharmony_ci    V(PromiseFinallyString,           PROMISE_FINALLY_STRING_INDEX,          "finally")                     \
3484514f5e3Sopenharmony_ci    V(PromiseStatusString,            PROMISE_STATUS_STRING_INDEX,           "status")                      \
3494514f5e3Sopenharmony_ci    V(PromiseFulfilledString,         PROMISE_FULFILLED_STRING_INDEX,        "fulfilled")                   \
3504514f5e3Sopenharmony_ci    V(PromiseRejectedString,          PROMISE_REJECTED_STRING_INDEX,         "rejected")                    \
3514514f5e3Sopenharmony_ci    V(PromiseReasonString,            PROMISE_REASON_STRING_INDEX,           "reason")                      \
3524514f5e3Sopenharmony_ci    V(ScriptJobString,                SCRIPT_JOB_STRING_INDEX,               "ScriptJobs")                  \
3534514f5e3Sopenharmony_ci    V(PromiseString,                  PROMISE_STRING_INDEX,                  "PrimiseJobs")                 \
3544514f5e3Sopenharmony_ci    V(ThrowerString,                  THROWER_STRING_INDEX,                  "Thrower")                     \
3554514f5e3Sopenharmony_ci    V(IdentityString,                 IDENTITY_STRING_INDEX,                 "Identity")                    \
3564514f5e3Sopenharmony_ci    V(CallerString,                   CALLER_STRING_INDEX,                   "caller")                      \
3574514f5e3Sopenharmony_ci    V(CalleeString,                   CALLEE_STRING_INDEX,                   "callee")                      \
3584514f5e3Sopenharmony_ci    V(Int8ArrayString,                INT8_ARRAY_STRING_INDEX,               "Int8Array")                   \
3594514f5e3Sopenharmony_ci    V(Uint8ArrayString,               UINT8_ARRAY_STRING_INDEX,              "Uint8Array")                  \
3604514f5e3Sopenharmony_ci    V(Uint8ClampedArrayString,        UINT8_CLAMPED_ARRAY_STRING_INDEX,      "Uint8ClampedArray")           \
3614514f5e3Sopenharmony_ci    V(Int16ArrayString,               INT16_ARRAY_STRING_INDEX,              "Int16Array")                  \
3624514f5e3Sopenharmony_ci    V(Uint16ArrayString,              UINT16_ARRAY_STRING_INDEX,             "Uint16Array")                 \
3634514f5e3Sopenharmony_ci    V(Int32ArrayString,               INT32_ARRAY_STRING_INDEX,              "Int32Array")                  \
3644514f5e3Sopenharmony_ci    V(Uint32ArrayString,              UINT32_ARRAY_STRING_INDEX,             "Uint32Array")                 \
3654514f5e3Sopenharmony_ci    V(Float32ArrayString,             FLOAT32_ARRAY_STRING_INDEX,            "Float32Array")                \
3664514f5e3Sopenharmony_ci    V(Float64ArrayString,             FLOAT64_ARRAY_STRING_INDEX,            "Float64Array")                \
3674514f5e3Sopenharmony_ci    V(BigInt64ArrayString,            BIGINT64_ARRAY_STRING_INDEX,           "BigInt64Array")               \
3684514f5e3Sopenharmony_ci    V(BigUint64ArrayString,           BIGUINT64_ARRAY_STRING_INDEX,          "BigUint64Array")              \
3694514f5e3Sopenharmony_ci    V(SharedInt8ArrayString,          SHARED_INT8_ARRAY_STRING_INDEX,        "SharedInt8Array")             \
3704514f5e3Sopenharmony_ci    V(SharedUint8ArrayString,         SHARED_UINT8_ARRAY_STRING_INDEX,       "SharedUint8Array")            \
3714514f5e3Sopenharmony_ci    V(SharedUint8ClampedArrayString,  SHARED_UINT8_CLAMPED_ARRAY_STRING_INDEX, "SharedUint8ClampedArray")   \
3724514f5e3Sopenharmony_ci    V(SharedInt16ArrayString,         SHARED_INT16_ARRAY_STRING_INDEX,       "SharedInt16Array")            \
3734514f5e3Sopenharmony_ci    V(SharedUint16ArrayString,        SHARED_UINT16_ARRAY_STRING_INDEX,      "SharedUint16Array")           \
3744514f5e3Sopenharmony_ci    V(SharedInt32ArrayString,         SHARED_INT32_ARRAY_STRING_INDEX,       "SharedInt32Array")            \
3754514f5e3Sopenharmony_ci    V(SharedUint32ArrayString,        SHARED_UINT32_ARRAY_STRING_INDEX,      "SharedUint32Array")           \
3764514f5e3Sopenharmony_ci    V(SharedFloat32ArrayString,       SHARED_FLOAT32_ARRAY_STRING_INDEX,     "SharedFloat32Array")          \
3774514f5e3Sopenharmony_ci    V(SharedFloat64ArrayString,       SHARED_FLOAT64_ARRAY_STRING_INDEX,     "SharedFloat64Array")          \
3784514f5e3Sopenharmony_ci    V(SharedBigInt64ArrayString,      SHARED_BIGINT64_ARRAY_STRING_INDEX,    "SharedBigInt64Array")         \
3794514f5e3Sopenharmony_ci    V(SharedBigUint64ArrayString,     SHARED_BIGUINT64_ARRAY_STRING_INDEX,   "SharedBigUint64Array")        \
3804514f5e3Sopenharmony_ci    V(AsyncFunctionString,            ASYNC_FUNCTION_STRING_INDEX,           "AsyncFunction")               \
3814514f5e3Sopenharmony_ci    V(PromiseResolveString,           PROMISE_RESOLVE_STRING_INDEX,          "resolve")                     \
3824514f5e3Sopenharmony_ci    V(IdString,                       ID_STRING_INDEX,                       "id")                          \
3834514f5e3Sopenharmony_ci    V(MethodString,                   METHOD_STRING_INDEX,                   "method")                      \
3844514f5e3Sopenharmony_ci    V(ParamsString,                   PARAMS_STRING_INDEX,                   "params")                      \
3854514f5e3Sopenharmony_ci    V(ResultString,                   RESULT_STRING_INDEX,                   "result")                      \
3864514f5e3Sopenharmony_ci    V(ToJsonString,                   TO_JSON_STRING_INDEX,                  "toJSON")                      \
3874514f5e3Sopenharmony_ci    V(GlobalString,                   GLOBAL_STRING_INDEX,                   "global")                      \
3884514f5e3Sopenharmony_ci    V(MessageString,                  MESSAGE_STRING_INDEX,                  "message")                     \
3894514f5e3Sopenharmony_ci    V(CauseString,                    CAUSE_STRING_INDEX,                    "cause")                       \
3904514f5e3Sopenharmony_ci    V(ErrorString,                    ERROR_STRING_INDEX,                    "Error")                       \
3914514f5e3Sopenharmony_ci    V(ErrorsString,                   ERRORS_STRING_INDEX,                   "errors")                      \
3924514f5e3Sopenharmony_ci    V(AggregateErrorString,           AGGREGATE_ERROR_STRING_INDEX,          "AggregateError")              \
3934514f5e3Sopenharmony_ci    V(RangeErrorString,               RANGE_ERROR_STRING_INDEX,              "RangeError")                  \
3944514f5e3Sopenharmony_ci    V(ReferenceErrorString,           REFERENCE_ERROR_STRING_INDEX,          "ReferenceError")              \
3954514f5e3Sopenharmony_ci    V(TypeErrorString,                TYPE_ERROR_STRING_INDEX,               "TypeError")                   \
3964514f5e3Sopenharmony_ci    V(URIErrorString,                 URI_ERROR_STRING_INDEX,                "URIError")                    \
3974514f5e3Sopenharmony_ci    V(SyntaxErrorString,              SYNTAX_ERROR_STRING_INDEX,             "SyntaxError")                 \
3984514f5e3Sopenharmony_ci    V(EvalErrorString,                EVAL_ERROR_STRING_INDEX,               "EvalError")                   \
3994514f5e3Sopenharmony_ci    V(OOMErrorString,                 OOM_ERROR_STRING_INDEX,                "OutOfMemoryError")            \
4004514f5e3Sopenharmony_ci    V(TerminationErrorString,         TERMINATION_ERROR_STRING_INDEX,        "TerminationError")            \
4014514f5e3Sopenharmony_ci    V(ErrorFuncString,                ERROR_FUNC_STRING_INDEX,               "errorfunc")                   \
4024514f5e3Sopenharmony_ci    V(StackString,                    STACK_STRING_INDEX,                    "stack")                       \
4034514f5e3Sopenharmony_ci    V(TopStackString,                 TOP_STACK_STRING_INDEX,                "topstack")                    \
4044514f5e3Sopenharmony_ci    V(StackEmptyString,               STACK_EMPTY_STRING_INDEX,              "stackisempty")                \
4054514f5e3Sopenharmony_ci    V(ObjNotCoercibleString,          OBJ_NOT_COERCIBLE_STRING_INDEX,        "objectnotcoercible")          \
4064514f5e3Sopenharmony_ci    /* for Intl. */                                                                                         \
4074514f5e3Sopenharmony_ci    V(LanguageString,                 LANGUAGE_STRING_CLASS_INDEX,           "language")                    \
4084514f5e3Sopenharmony_ci    V(ScriptString,                   SCRIPT_STRING_CLASS_INDEX,             "script")                      \
4094514f5e3Sopenharmony_ci    V(RegionString,                   REGION_STRING_CLASS_INDEX,             "region")                      \
4104514f5e3Sopenharmony_ci    V(BaseNameString,                 BASE_NAME_STRING_CLASS_INDEX,          "baseName")                    \
4114514f5e3Sopenharmony_ci    V(CalendarString,                 CALENDAR_STRING_CLASS_INDEX,           "calendar")                    \
4124514f5e3Sopenharmony_ci    V(CollationString,                COLLATION_STRING_CLASS_INDEX,          "collation")                   \
4134514f5e3Sopenharmony_ci    V(HourCycleString,                HOUR_CYCLE_STRING_CLASS_INDEX,         "hourCycle")                   \
4144514f5e3Sopenharmony_ci    V(CaseFirstString,                CASE_FIRST_STRING_CLASS_INDEX,         "caseFirst")                   \
4154514f5e3Sopenharmony_ci    V(NumericString,                  NUMERIC_STRING_CLASS_INDEX,            "numeric")                     \
4164514f5e3Sopenharmony_ci    V(NumberingSystemString,          NUMBERING_SYSTEM_STRING_CLASS_INDEX,   "numberingSystem")             \
4174514f5e3Sopenharmony_ci    V(TypeString,                     TYPE_STRING_INDEX,                     "type")                        \
4184514f5e3Sopenharmony_ci    V(GranularityString,              GRANULARITY_STRING_INDEX,              "granularity")                 \
4194514f5e3Sopenharmony_ci    V(GraphemeString,                 GRAPHEME_STRING_INDEX,                 "grapheme")                    \
4204514f5e3Sopenharmony_ci    V(WordString,                     WORD_STRING_INDEX,                     "word")                        \
4214514f5e3Sopenharmony_ci    V(SentenceString,                 SENTENCE_STRING_INDEX,                 "sentence")                    \
4224514f5e3Sopenharmony_ci    V(SegmentString,                  SEGMENT_STRING_INDEX,                  "segment")                     \
4234514f5e3Sopenharmony_ci    V(IsWordLikeString,               ISWORDLIKE_STRING_INDEX,               "isWordLike")                  \
4244514f5e3Sopenharmony_ci    V(LocaleMatcherString,            LOCALE_MATCHER_STRING_INDEX,           "localeMatcher")               \
4254514f5e3Sopenharmony_ci    V(LanguageDisplayString,          LAUGUAGE_DISPLAY_STRING_INDEX,         "languageDisplay")             \
4264514f5e3Sopenharmony_ci    V(FormatMatcherString,            FORMAT_MATCHER_STRING_INDEX,           "formatMatcher")               \
4274514f5e3Sopenharmony_ci    V(Hour12String,                   HOUR12_STRING_INDEX,                   "hour12")                      \
4284514f5e3Sopenharmony_ci    V(H11String,                      H11_STRING_INDEX,                      "h11")                         \
4294514f5e3Sopenharmony_ci    V(H12String,                      H12_STRING_INDEX,                      "h12")                         \
4304514f5e3Sopenharmony_ci    V(H23String,                      H23_STRING_INDEX,                      "h23")                         \
4314514f5e3Sopenharmony_ci    V(H24String,                      H24_STRING_INDEX,                      "h24")                         \
4324514f5e3Sopenharmony_ci    V(WeekdayString,                  WEEK_DAY_STRING_INDEX,                 "weekday")                     \
4334514f5e3Sopenharmony_ci    V(EraString,                      ERA_STRING_INDEX,                      "era")                         \
4344514f5e3Sopenharmony_ci    V(YearString,                     YEAR_STRING_INDEX,                     "year")                        \
4354514f5e3Sopenharmony_ci    V(QuarterString,                  QUARTER_STRING_INDEX,                  "quarter")                     \
4364514f5e3Sopenharmony_ci    V(MonthString,                    MONTH_STRING_INDEX,                    "month")                       \
4374514f5e3Sopenharmony_ci    V(DayString,                      DAY_STRING_INDEX,                      "day")                         \
4384514f5e3Sopenharmony_ci    V(HourString,                     HOUR_STRING_INDEX,                     "hour")                        \
4394514f5e3Sopenharmony_ci    V(MinuteString,                   MINUTE_STRING_INDEX,                   "minute")                      \
4404514f5e3Sopenharmony_ci    V(SecondString,                   SECOND_STRING_INDEX,                   "second")                      \
4414514f5e3Sopenharmony_ci    V(YearsString,                    YEARS_STRING_INDEX,                    "years")                       \
4424514f5e3Sopenharmony_ci    V(QuartersString,                 QUARTERS_STRING_INDEX,                 "quarters")                    \
4434514f5e3Sopenharmony_ci    V(MonthsString,                   MONTHS_STRING_INDEX,                   "months")                      \
4444514f5e3Sopenharmony_ci    V(DaysString,                     DAYS_STRING_INDEX,                     "days")                        \
4454514f5e3Sopenharmony_ci    V(HoursString,                    HOURS_STRING_INDEX,                    "hours")                       \
4464514f5e3Sopenharmony_ci    V(MinutesString,                  MINUTES_STRING_INDEX,                  "minutes")                     \
4474514f5e3Sopenharmony_ci    V(SecondsString,                  SECONDS_STRING_INDEX,                  "seconds")                     \
4484514f5e3Sopenharmony_ci    V(TimeZoneNameString,             TIME_ZONE_NAME_STRING_INDEX,           "timeZoneName")                \
4494514f5e3Sopenharmony_ci    V(LocaleString,                   LOCALE_STRING_INDEX,                   "locale")                      \
4504514f5e3Sopenharmony_ci    V(TimeZoneString,                 TIME_ZONE_STRING_INDEX,                "timeZone")                    \
4514514f5e3Sopenharmony_ci    V(LiteralString,                  LITERAL_STRING_INDEX,                  "literal")                     \
4524514f5e3Sopenharmony_ci    V(YearNameString,                 YEAR_NAME_STRING_INDEX,                "yearName")                    \
4534514f5e3Sopenharmony_ci    V(DayPeriodString,                DAY_PERIOD_STRING_INDEX,               "dayPeriod")                   \
4544514f5e3Sopenharmony_ci    V(FractionalSecondDigitsString,   FRACTIONAL_SECOND_DIGITS_STRING_INDEX, "fractionalSecondDigits")      \
4554514f5e3Sopenharmony_ci    V(FractionalSecondString,         FRACTIONAL_SECOND_STRING_INDEX,        "fractionalSecond")            \
4564514f5e3Sopenharmony_ci    V(RelatedYearString,              RELATED_YEAR_STRING_INDEX,             "relatedYear")                 \
4574514f5e3Sopenharmony_ci    V(LookUpString,                   LOOK_UP_STRING_INDEX,                  "lookup")                      \
4584514f5e3Sopenharmony_ci    V(BestFitString,                  BEST_FIT_STRING_INDEX,                 "bestfit")                     \
4594514f5e3Sopenharmony_ci    V(DateStyleString,                DATE_STYLE_STRING_INDEX,               "dateStyle")                   \
4604514f5e3Sopenharmony_ci    V(TimeStyleString,                TIME_STYLE_STRING_INDEX,               "timeStyle")                   \
4614514f5e3Sopenharmony_ci    V(UTCString,                      UTC_STRING_INDEX,                      "UTC")                         \
4624514f5e3Sopenharmony_ci    V(WeekString,                     WEEK_STRING_INDEX,                     "week")                        \
4634514f5e3Sopenharmony_ci    V(WeeksString,                    WEEKS_STRING_INDEX,                    "weeks")                       \
4644514f5e3Sopenharmony_ci    V(SourceString,                   SOURCE_STRING_INDEX,                   "source")                      \
4654514f5e3Sopenharmony_ci    V(FormatString,                   FORMAT_STRING_INDEX,                   "format")                      \
4664514f5e3Sopenharmony_ci    V(EnUsString,                     EN_US_STRING_INDEX,                    "en-US")                       \
4674514f5e3Sopenharmony_ci    V(UndString,                      UND_STRING_INDEX,                      "und")                         \
4684514f5e3Sopenharmony_ci    V(LatnString,                     LATN_STRING_INDEX,                     "latn")                        \
4694514f5e3Sopenharmony_ci    V(StyleString,                    STYLE_STRING_INDEX,                    "style")                       \
4704514f5e3Sopenharmony_ci    V(UnitString,                     UNIT_STRING_INDEX,                     "unit")                        \
4714514f5e3Sopenharmony_ci    V(IntegerString,                  INTEGER_STRING_INDEX,                  "integer")                     \
4724514f5e3Sopenharmony_ci    V(NanString,                      NAN_STRING_INDEX,                      "nan")                         \
4734514f5e3Sopenharmony_ci    V(InfinityString,                 INFINITY_STRING_INDEX,                 "infinity")                    \
4744514f5e3Sopenharmony_ci    V(InfinityCapitalString,          INFINITY_CAP_STRING_INDEX,             "Infinity")                    \
4754514f5e3Sopenharmony_ci    V(MinusInfinityCapitalString,     MINUS_INFINITY_CAP_STRING_INDEX,       "-Infinity")                   \
4764514f5e3Sopenharmony_ci    V(FractionString,                 FRACTION_STRING_INDEX,                 "fraction")                    \
4774514f5e3Sopenharmony_ci    V(DecimalString,                  DECIMAL_STRING_INDEX,                  "decimal")                     \
4784514f5e3Sopenharmony_ci    V(GroupString,                    GROUP_STRING_INDEX,                    "group")                       \
4794514f5e3Sopenharmony_ci    V(GroupsString,                   GROUPS_STRING_INDEX,                   "groups")                      \
4804514f5e3Sopenharmony_ci    V(CurrencyString,                 CURRENCY_STRING_INDEX,                 "currency")                    \
4814514f5e3Sopenharmony_ci    V(CurrencySignString,             CURRENCY_SIGN_STRING_INDEX,            "currencySign")                \
4824514f5e3Sopenharmony_ci    V(CurrencyDisplayString,          CURRENCY_DISPLAY_STRING_INDEX,         "currencyDisplay")             \
4834514f5e3Sopenharmony_ci    V(PercentSignString,              PERCENT_SIGN_STRING_INDEX,             "percentSign")                 \
4844514f5e3Sopenharmony_ci    V(PercentString,                  PERCENT_STRING_INDEX,                  "percent")                     \
4854514f5e3Sopenharmony_ci    V(MinusSignString,                MINUS_SIGN_STRING_INDEX,               "minusSign")                   \
4864514f5e3Sopenharmony_ci    V(PlusSignString,                 PLUS_SIGN_STRING_INDEX,                "plusSign")                    \
4874514f5e3Sopenharmony_ci    V(ExponentSeparatorString,        EXPONENT_SEPARATOR_STRING_INDEX,       "exponentSeparator")           \
4884514f5e3Sopenharmony_ci    V(ExponentMinusSignString,        EXPONENT_MINUS_SIGN_INDEX,             "exponentMinusSign")           \
4894514f5e3Sopenharmony_ci    V(ExponentIntegerString,          EXPONENT_INTEGER_STRING_INDEX,         "exponentInteger")             \
4904514f5e3Sopenharmony_ci    V(LongString,                     LONG_STRING_INDEX,                     "long")                        \
4914514f5e3Sopenharmony_ci    V(ShortString,                    SHORT_STRING_INDEX,                    "short")                       \
4924514f5e3Sopenharmony_ci    V(FullString,                     FULL_STRING_INDEX,                     "full")                        \
4934514f5e3Sopenharmony_ci    V(MediumString,                   MEDIUM_STRING_INDEX,                   "medium")                      \
4944514f5e3Sopenharmony_ci    V(NarrowString,                   NARROW_STRING_INDEX,                   "narrow")                      \
4954514f5e3Sopenharmony_ci    V(AlwaysString,                   ALWAYS_STRING_INDEX,                   "always")                      \
4964514f5e3Sopenharmony_ci    V(AutoString,                     AUTO_STRING_INDEX,                     "auto")                        \
4974514f5e3Sopenharmony_ci    V(ThrowString,                    THROW_STRING_INDEX,                    "throw")                       \
4984514f5e3Sopenharmony_ci    V(UnitDisplayString,              UNIT_DISPLAY_INDEX,                    "unitDisplay")                 \
4994514f5e3Sopenharmony_ci    V(NotationString,                 NOTATION_INDEX,                        "notation")                    \
5004514f5e3Sopenharmony_ci    V(CompactDisplayString,           COMPACT_DISPALY_INDEX,                 "compactDisplay")              \
5014514f5e3Sopenharmony_ci    V(UserGroupingString,             USER_GROUPING_INDEX,                   "useGrouping")                 \
5024514f5e3Sopenharmony_ci    V(SignDisplayString,              SIGN_DISPLAY_INDEX,                    "signDisplay")                 \
5034514f5e3Sopenharmony_ci    V(CodeString,                     CODE_INDEX,                            "code")                        \
5044514f5e3Sopenharmony_ci    V(NarrowSymbolString,             NARROW_SYMBOL_INDEX,                   "narrowSymbol")                \
5054514f5e3Sopenharmony_ci    V(StandardString,                 STANDARD_INDEX,                        "standard")                    \
5064514f5e3Sopenharmony_ci    V(DialectString,                  DIALECT_INDEX,                         "dialect")                     \
5074514f5e3Sopenharmony_ci    V(AccountingString,               ACCOUNTING_INDEX,                      "accounting")                  \
5084514f5e3Sopenharmony_ci    V(ScientificString,               SCIENTIFIC_INDEX,                      "scientific")                  \
5094514f5e3Sopenharmony_ci    V(EngineeringString,              ENGINEERING_INDEX,                     "engineering")                 \
5104514f5e3Sopenharmony_ci    V(CompactString,                  COMPACT_STRING_INDEX,                  "compact")                     \
5114514f5e3Sopenharmony_ci    V(NeverString,                    NEVER_INDEX,                           "never")                       \
5124514f5e3Sopenharmony_ci    V(ExceptZeroString,               EXPECT_ZERO_INDEX,                     "exceptZero")                  \
5134514f5e3Sopenharmony_ci    V(MinimumIntegerDigitsString,     MINIMUM_INTEGER_DIGITS_INDEX,          "minimumIntegerDigits")        \
5144514f5e3Sopenharmony_ci    V(MinimumFractionDigitsString,    MINIMUM_FRACTIONDIGITS_INDEX,          "minimumFractionDigits")       \
5154514f5e3Sopenharmony_ci    V(MaximumFractionDigitsString,    MAXIMUM_FRACTIONDIGITS_INDEX,          "maximumFractionDigits")       \
5164514f5e3Sopenharmony_ci    V(MinimumSignificantDigitsString, MINIMUM_SIGNIFICANTDIGITS_INDEX,       "minimumSignificantDigits")    \
5174514f5e3Sopenharmony_ci    V(MaximumSignificantDigitsString, MAXIMUM_SIGNIFICANTDIGITS_INDEX,       "maximumSignificantDigits")    \
5184514f5e3Sopenharmony_ci    V(InvalidDateString,              INVALID_DATE_INDEX,                    "Invalid Date")                \
5194514f5e3Sopenharmony_ci    V(UsageString,                    USAGE_INDEX,                           "usage")                       \
5204514f5e3Sopenharmony_ci    V(CompareString,                  COMPARE_INDEX,                         "compare")                     \
5214514f5e3Sopenharmony_ci    V(SensitivityString,              SENSITIVITY_INDEX,                     "sensitivity")                 \
5224514f5e3Sopenharmony_ci    V(IgnorePunctuationString,        IGNORE_PUNCTUATION_INDEX,              "ignorePunctuation")           \
5234514f5e3Sopenharmony_ci    V(CardinalString,                 CARDINAL_INDEX,                        "cardinal")                    \
5244514f5e3Sopenharmony_ci    V(OrdinalString,                  ORDINAL_INDEX,                         "ordinal")                     \
5254514f5e3Sopenharmony_ci    V(ExecString,                     EXEC_INDEX,                            "exec")                        \
5264514f5e3Sopenharmony_ci    V(LastIndexString,                LAST_INDEX_INDEX,                      "lastIndex")                   \
5274514f5e3Sopenharmony_ci    V(PluralCategoriesString,         PLURAL_CATEGORIES_INDEX,               "pluralCategories")            \
5284514f5e3Sopenharmony_ci    V(SortString,                     SORT_INDEX,                            "sort")                        \
5294514f5e3Sopenharmony_ci    V(SearchString,                   SEARCH_INDEX,                          "search")                      \
5304514f5e3Sopenharmony_ci    V(BaseString,                     BASE_INDEX,                            "base")                        \
5314514f5e3Sopenharmony_ci    V(AccentString,                   ACCENT_INDEX,                          "accent")                      \
5324514f5e3Sopenharmony_ci    V(CaseString,                     CASE_INDEX,                            "case")                        \
5334514f5e3Sopenharmony_ci    V(VariantString,                  VARIANT_INDEX,                         "variant")                     \
5344514f5e3Sopenharmony_ci    V(EnUsPosixString,                EN_US_POSIX_STRING_INDEX,              "en-US-POSIX")                 \
5354514f5e3Sopenharmony_ci    V(UpperString,                    UPPER_INDEX,                           "upper")                       \
5364514f5e3Sopenharmony_ci    V(LowerString,                    LOWER_INDEX,                           "lower")                       \
5374514f5e3Sopenharmony_ci    V(DefaultString,                  DEFAULT_INDEX,                         "default")                     \
5384514f5e3Sopenharmony_ci    V(SharedString,                   SHARED_INDEX,                          "shared")                      \
5394514f5e3Sopenharmony_ci    V(StartRangeString,               START_RANGE_INDEX,                     "startRange")                  \
5404514f5e3Sopenharmony_ci    V(EndRangeString,                 END_RANGE_INDEX,                       "endRange")                    \
5414514f5e3Sopenharmony_ci    V(Iso8601String,                  ISO8601_INDEX,                         "iso8601")                     \
5424514f5e3Sopenharmony_ci    V(GregoryString,                  GREGORY_INDEX,                         "gregory")                     \
5434514f5e3Sopenharmony_ci    V(EthioaaString,                  ETHIOAA_INDEX,                         "ethioaa")                     \
5444514f5e3Sopenharmony_ci    V(StickyString,                   STICKY_INDEX,                          "sticky")                      \
5454514f5e3Sopenharmony_ci    V(HasIndicesString,               HAS_INDICES_INDEX,                     "hasIndices")                  \
5464514f5e3Sopenharmony_ci    V(DotAllString,                   DOT_ALL_INDEX,                         "dotAll")                      \
5474514f5e3Sopenharmony_ci    V(MultilineString,                MULTILINE_INDEX,                       "multiline")                   \
5484514f5e3Sopenharmony_ci    V(IgnoreCaseString,               IGNORE_CASE_INDEX,                     "ignoreCase")                  \
5494514f5e3Sopenharmony_ci    V(IndicesString,                  INDICES_INDEX,                         "indices")                     \
5504514f5e3Sopenharmony_ci    V(UString,                        U_INDEX,                               "u")                           \
5514514f5e3Sopenharmony_ci    V(IndexString,                    INDEX_INDEX,                           "index")                       \
5524514f5e3Sopenharmony_ci    V(InputString,                    INPUT_INDEX,                           "input")                       \
5534514f5e3Sopenharmony_ci    V(UnicodeString,                  UNICODE_INDEX,                         "unicode")                     \
5544514f5e3Sopenharmony_ci    V(ZeroString,                     ZERO_INDEX,                            "0")                           \
5554514f5e3Sopenharmony_ci    V(ValuesString,                   VALUES_INDEX,                          "values")                      \
5564514f5e3Sopenharmony_ci    V(AddString,                      ADD_INDEX,                             "add")                         \
5574514f5e3Sopenharmony_ci    V(AmbiguousString,                AMBIGUOUS_INDEX,                       "ambiguous")                   \
5584514f5e3Sopenharmony_ci    V(ModuleString,                   MODULE_INDEX,                          "Module")                      \
5594514f5e3Sopenharmony_ci    V(StarString,                     STAR_INDEX,                            "*")                           \
5604514f5e3Sopenharmony_ci    V(DateTimeFieldString,            DATETIMEFIELD_INDEX,                   "dateTimeField")               \
5614514f5e3Sopenharmony_ci    V(ConjunctionString,              CONJUNCTION_INDEX,                     "conjunction")                 \
5624514f5e3Sopenharmony_ci    V(NoneString,                     NONE_INDEX,                            "none")                        \
5634514f5e3Sopenharmony_ci    V(FallbackString,                 FALLBACK_INDEX,                        "fallback")                    \
5644514f5e3Sopenharmony_ci    V(DisjunctionString,              DISJUNCTION_INDEX,                     "disjunction")                 \
5654514f5e3Sopenharmony_ci    V(ElementString,                  ELEMENT_INDEX,                         "element")                     \
5664514f5e3Sopenharmony_ci    V(FlagsString,                    FLAGS_INDEX,                           "flags")                       \
5674514f5e3Sopenharmony_ci    V(GString,                        G_INDEX,                               "g")                           \
5684514f5e3Sopenharmony_ci    V(NfcString,                      NFC_INDEX,                             "NFC")                         \
5694514f5e3Sopenharmony_ci    V(NfdString,                      NFD_INDEX,                             "NFD")                         \
5704514f5e3Sopenharmony_ci    V(NfkcString,                     NFKC_INDEX,                            "NFKC")                        \
5714514f5e3Sopenharmony_ci    V(NfkdString,                     NFKD_INDEX,                            "NFKD")                        \
5724514f5e3Sopenharmony_ci    V(EntriesString,                  ENTRIES_INDEX,                         "entries")                     \
5734514f5e3Sopenharmony_ci    V(LeftSquareBracketString,        LEFT_SQUARE_BRACKET_INDEX,             "[")                           \
5744514f5e3Sopenharmony_ci    V(RightSquareBracketString,       RIGHT_SQUARE_BRACKET_INDEX,            "]")                           \
5754514f5e3Sopenharmony_ci    V(YString,                        Y_INDEX,                               "y")                           \
5764514f5e3Sopenharmony_ci    V(DollarString,                   DOLLAR_INDEX,                          "$")                           \
5774514f5e3Sopenharmony_ci    V(CommaString,                    COMMA_INDEX,                           ",")                           \
5784514f5e3Sopenharmony_ci    V(JoinString,                     JOIN_INDEX,                            "join")                        \
5794514f5e3Sopenharmony_ci    V(CopyWithinString,               COPY_WITHIN_INDEX,                     "copyWithin")                  \
5804514f5e3Sopenharmony_ci    V(FillString,                     FILL_INDEX,                            "fill")                        \
5814514f5e3Sopenharmony_ci    V(FindString,                     FIND_INDEX,                            "find")                        \
5824514f5e3Sopenharmony_ci    V(FindIndexString,                FIND_INDEX_INDEX,                      "findIndex")                   \
5834514f5e3Sopenharmony_ci    V(FlatString,                     FLAT_INDEX,                            "flat")                        \
5844514f5e3Sopenharmony_ci    V(FlatMapString,                  FLATMAP_INDEX,                         "flatMap")                     \
5854514f5e3Sopenharmony_ci    V(IncludesString,                 INCLUDES_INDEX,                        "includes")                    \
5864514f5e3Sopenharmony_ci    V(KeysString,                     KEYS_INDEX,                            "keys")                        \
5874514f5e3Sopenharmony_ci    V(BoundString,                    BOUND_INDEX,                           "bound")                       \
5884514f5e3Sopenharmony_ci    V(TrimLeftString,                 TRIMLEFT_INDEX,                        "trimLeft")                    \
5894514f5e3Sopenharmony_ci    V(TrimStartString,                TRIMSTART_INDEX,                       "trimStart")                   \
5904514f5e3Sopenharmony_ci    V(TrimRightString,                TRIMRIGHT_INDEX,                       "trimRight")                   \
5914514f5e3Sopenharmony_ci    V(TrimEndString,                  TRIMEND_INDEX,                         "trimEnd")                     \
5924514f5e3Sopenharmony_ci    V(BackslashString,                BACKSLASH_INDEX,                       "/")                           \
5934514f5e3Sopenharmony_ci    V(SpaceString,                    SPACE_INDEX,                           " ")                           \
5944514f5e3Sopenharmony_ci    V(NanCapitalString,               NAN_INDEX,                             "NaN")                         \
5954514f5e3Sopenharmony_ci    V(NotEqualString,                 NOT_EQUAL_INDEX,                       "not-equal")                   \
5964514f5e3Sopenharmony_ci    V(OkString,                       OK_INDEX,                              "ok")                          \
5974514f5e3Sopenharmony_ci    V(TimeoutString,                  TIMEOUT_INDEX,                         "timed-out")                   \
5984514f5e3Sopenharmony_ci    V(CjsExportsString,               CJS_EXPORTS_INDEX,                     "exports")                     \
5994514f5e3Sopenharmony_ci    V(CjsCacheString,                 CJS_CACHE_INDEX,                       "_cache")                      \
6004514f5e3Sopenharmony_ci    V(NapiWrapperString,              NAPI_WRAPPER_INDEX,                    "_napiwrapper")                \
6014514f5e3Sopenharmony_ci    /* for require native module */                                                                         \
6024514f5e3Sopenharmony_ci    V(RequireNativeModuleString,      REQUIRE_NATIVE_MOUDULE_FUNC_INDEX,     "requireNativeModule")         \
6034514f5e3Sopenharmony_ci    V(RequireNapiString,              REQUIRE_NAPI_FUNC_INDEX,               "requireNapi")                 \
6044514f5e3Sopenharmony_ci    V(DollarStringOne,                DOLLAR_STRING_ONE_INDEX,               "$1")                          \
6054514f5e3Sopenharmony_ci    V(DollarStringTwo,                DOLLAR_STRING_TWO_INDEX,               "$2")                          \
6064514f5e3Sopenharmony_ci    V(DollarStringThree,              DOLLAR_STRING_THREE_INDEX,             "$3")                          \
6074514f5e3Sopenharmony_ci    V(DollarStringFour,               DOLLAR_STRING_FOUR_INDEX,              "$4")                          \
6084514f5e3Sopenharmony_ci    V(DollarStringFive,               DOLLAR_STRING_FIVE_INDEX,              "$5")                          \
6094514f5e3Sopenharmony_ci    V(DollarStringSix,                DOLLAR_STRING_SIX_INDEX,               "$6")                          \
6104514f5e3Sopenharmony_ci    V(DollarStringSeven,              DOLLAR_STRING_SEVEN_INDEX,             "$7")                          \
6114514f5e3Sopenharmony_ci    V(DollarStringEight,              DOLLAR_STRING_EIGHT_INDEX,             "$8")                          \
6124514f5e3Sopenharmony_ci    V(DollarStringNine,               DOLLAR_STRING_NINE_INDEX,              "$9")                          \
6134514f5e3Sopenharmony_ci    /* for object to string */                                                                              \
6144514f5e3Sopenharmony_ci    V(UndefinedToString,              UNDEFINED_TO_STRING_INDEX,             "[object Undefined]")          \
6154514f5e3Sopenharmony_ci    V(NullToString,                   NULL_TO_STRING_INDEX,                  "[object Null]")               \
6164514f5e3Sopenharmony_ci    V(ObjectToString,                 OBJECT_TO_STRING_INDEX,                "[object Object]")             \
6174514f5e3Sopenharmony_ci    V(ArrayToString,                  ARRAY_TO_STRING_INDEX,                 "[object Array]")              \
6184514f5e3Sopenharmony_ci    V(StringToString,                 STRING_TO_STRING_INDEX,                "[object String]")             \
6194514f5e3Sopenharmony_ci    V(BooleanToString,                BOOLEAN_TO_STRING_INDEX,               "[object Boolean]")            \
6204514f5e3Sopenharmony_ci    V(NumberToString,                 NUMBER_TO_STRING_INDEX,                "[object Number]")             \
6214514f5e3Sopenharmony_ci    V(ArgumentsToString,              ARGUMENTS_TO_STRING_INDEX,             "[object Arguments]")          \
6224514f5e3Sopenharmony_ci    V(FunctionToString,               FUNCTION_TO_STRING_INDEX,              "[object Function]")           \
6234514f5e3Sopenharmony_ci    V(DateToString,                   DATE_TO_STRING_INDEX,                  "[object Date]")               \
6244514f5e3Sopenharmony_ci    V(ErrorToString,                  ERROR_TO_STRING_INDEX,                 "[object Error]")              \
6254514f5e3Sopenharmony_ci    V(RegExpToString,                 REGEXP_TO_STRING_INDEX,                "[object RegExp]")             \
6264514f5e3Sopenharmony_ci    V(EdenGcCause,                    EDEN_GC_CAUSE,                         "eden")                        \
6274514f5e3Sopenharmony_ci    V(YoungGcCause,                   YOUNG_GC_CAUSE,                        "young")                       \
6284514f5e3Sopenharmony_ci    V(OldGcCause,                     OLD_GC_CAUSE,                          "old")                         \
6294514f5e3Sopenharmony_ci    V(FullGcCause,                    FULL_GC_CAUSE,                         "full")                        \
6304514f5e3Sopenharmony_ci    V(AppSpawnFullGcCause,            APP_SPAWN_FULL_GC_CAUSE,               "app_spawn_full")              \
6314514f5e3Sopenharmony_ci    V(SharedGcCause,                    SHARED_GC_CAUSE,                       "shared")                      \
6324514f5e3Sopenharmony_ci    V(SharedFullGcCause,                SHARED_FULL_GC_CAUSE,                  "shared_full")                 \
6334514f5e3Sopenharmony_ci    V(AppSpawnSharedFullGcCause,      APP_SPAWN_SHARED_FULL_GC_CAUSE,        "app_spawn_shared_full")       \
6344514f5e3Sopenharmony_ci    V(SymbolLeftParentheses,          SYMBOL_LEFT_PARENTHESES,               "Symbol(")
6354514f5e3Sopenharmony_ci
6364514f5e3Sopenharmony_ci/* GlobalConstant */
6374514f5e3Sopenharmony_ci// NOLINTNEXTLINE(cppcoreguidelines-macro-usage)
6384514f5e3Sopenharmony_ci#define GLOBAL_ENV_CONSTANT_CONSTANT(V)                                                                     \
6394514f5e3Sopenharmony_ci    /* non ECMA standard jsapi containers iterators */                                                      \
6404514f5e3Sopenharmony_ci    V(JSTaggedValue, ArrayListFunction, ARRAYLIST_FUNCTION_INDEX, ArrayListFunction)                        \
6414514f5e3Sopenharmony_ci    V(JSTaggedValue, ArrayListIteratorPrototype, ARRAYLIST_ITERATOR_PROTOTYPE_INDEX, ArrayListIterator)     \
6424514f5e3Sopenharmony_ci    V(JSTaggedValue, HashMapIteratorPrototype, HASHMAP_ITERATOR_PROTOTYPE_INDEX, HashMapIterator)           \
6434514f5e3Sopenharmony_ci    V(JSTaggedValue, HashSetIteratorPrototype, HASHSET_ITERATOR_PROTOTYPE_INDEX, HashSetIterator)           \
6444514f5e3Sopenharmony_ci    V(JSTaggedValue, LightWeightMapIteratorPrototype,                                                       \
6454514f5e3Sopenharmony_ci        LIGHTWEIGHTMAP_ITERATOR_PROTOTYPE_INDEX, LightWeightMapIterator)                                    \
6464514f5e3Sopenharmony_ci    V(JSTaggedValue, LightWeightSetIteratorPrototype,                                                       \
6474514f5e3Sopenharmony_ci        LIGHTWEIGHTSET_ITERATOR_PROTOTYPE_INDEX, LightWeightSetIterator)                                    \
6484514f5e3Sopenharmony_ci    V(JSTaggedValue, TreeMapIteratorPrototype, TREEMAP_ITERATOR_PROTOTYPE_INDEX, TreeMapIterator)           \
6494514f5e3Sopenharmony_ci    V(JSTaggedValue, TreeSetIteratorPrototype, TREESET_ITERATOR_PROTOTYPE_INDEX, TreeSetIterator)           \
6504514f5e3Sopenharmony_ci    V(JSTaggedValue, VectorFunction, VECTOR_FUNCTION_INDEX, VectorFunction)                                 \
6514514f5e3Sopenharmony_ci    V(JSTaggedValue, VectorIteratorPrototype, VECTOR_ITERATOR_PROTOTYPE_INDEX, VectorIterator)              \
6524514f5e3Sopenharmony_ci    V(JSTaggedValue, BitVectorFunction, BITVECTOR_FUNCTION_INDEX, BitVectorFunction)                        \
6534514f5e3Sopenharmony_ci    V(JSTaggedValue, BitVectorIteratorPrototype, BITVECTOR_ITERATOR_PROTOTYPE_INDEX, BitVectorIterator)     \
6544514f5e3Sopenharmony_ci    V(JSTaggedValue, QueueIteratorPrototype, QUEUE_ITERATOR_PROTOTYPE_INDEX, QueueIterator)                 \
6554514f5e3Sopenharmony_ci    V(JSTaggedValue, PlainArrayIteratorPrototype, PLAIN_ARRAY_ITERATOR_PROTOTYPE_INDEX, PlainArrayIterator) \
6564514f5e3Sopenharmony_ci    V(JSTaggedValue, PlainArrayFunction, PLAIN_ARRAY_FUNCTION_INDEX, PlainArrayFunction)                    \
6574514f5e3Sopenharmony_ci    V(JSTaggedValue, DequeIteratorPrototype, DEQUE_ITERATOR_PROTOTYPE_INDEX, DequeIterator)                 \
6584514f5e3Sopenharmony_ci    V(JSTaggedValue, StackIteratorPrototype, STACK_ITERATOR_PROTOTYPE_INDEX, StackIterator)                 \
6594514f5e3Sopenharmony_ci    V(JSTaggedValue, ListFunction, LIST_FUNCTION_INDEX, ListFunction)                                       \
6604514f5e3Sopenharmony_ci    V(JSTaggedValue, LinkedListFunction, LINKED_LIST_FUNCTION_INDEX, LinkedListFunction)                    \
6614514f5e3Sopenharmony_ci    V(JSTaggedValue, ListIteratorPrototype, LIST_ITERATOR_PROTOTYPE_INDEX, ListIterator)                    \
6624514f5e3Sopenharmony_ci    V(JSTaggedValue, UndefinedIterResult, UNDEFINED_INTERATOR_RESULT_INDEX, UndefinedIterResult)            \
6634514f5e3Sopenharmony_ci    V(JSTaggedValue, LinkedListIteratorPrototype, LINKED_LIST_ITERATOR_PROTOTYPE_INDEX, LinkedListIterator)
6644514f5e3Sopenharmony_ci
6654514f5e3Sopenharmony_ci// NOLINTNEXTLINE(cppcoreguidelines-macro-usage)
6664514f5e3Sopenharmony_ci#define SHARED_GLOBAL_ENV_CONSTANT_ACCESSOR(V)                                                    \
6674514f5e3Sopenharmony_ci    V(JSTaggedValue, FunctionPrototypeAccessor, FUNCTION_PROTOTYPE_ACCESSOR, ecma_roots_accessor) \
6684514f5e3Sopenharmony_ci    V(JSTaggedValue, FunctionNameAccessor, FUNCTION_NAME_ACCESSOR, ecma_roots_accessor)           \
6694514f5e3Sopenharmony_ci    V(JSTaggedValue, FunctionLengthAccessor, FUNCTION_LENGTH_ACCESSOR, ecma_roots_accessor)       \
6704514f5e3Sopenharmony_ci    V(JSTaggedValue, ArrayLengthAccessor, ARRAY_LENGTH_ACCESSOR, ecma_roots_accessor)             \
6714514f5e3Sopenharmony_ci    V(JSTaggedValue, SharedArrayLengthAccessor, SHARED_ARRAY_LENGTH_ACCESSOR, ecma_roots_accessor)
6724514f5e3Sopenharmony_ci
6734514f5e3Sopenharmony_ci// NOLINTNEXTLINE(cppcoreguidelines-macro-usage)
6744514f5e3Sopenharmony_ci#define SHARED_GLOBAL_ENV_CONSTANT_SPECIAL(V)                                                     \
6754514f5e3Sopenharmony_ci    V(JSTaggedValue, Undefined, UNDEFINED_INDEX, ecma_roots_special)                              \
6764514f5e3Sopenharmony_ci    V(JSTaggedValue, Null, NULL_INDEX, ecma_roots_special)                                        \
6774514f5e3Sopenharmony_ci    V(JSTaggedValue, Hole, HOLE_INDEX, ecma_roots_special)                                        \
6784514f5e3Sopenharmony_ci    V(JSTaggedValue, True, TRUE_INDEX, ecma_roots_special)                                        \
6794514f5e3Sopenharmony_ci    V(JSTaggedValue, False, FALSE_INDEX, ecma_roots_special)                                      \
6804514f5e3Sopenharmony_ci    V(JSTaggedValue, EmptyString, EMPTY_STRING_OBJECT_INDEX, ecma_roots_special)                  \
6814514f5e3Sopenharmony_ci    V(JSTaggedValue, SingleCharTable, SINGLE_CHAR_TABLE_INDEX, ecma_roots_special)                \
6824514f5e3Sopenharmony_ci    V(JSTaggedValue, EmptySLayoutInfo, EMPTY_SLAYOUT_INFO_OBJECT_INDEX, ecma_roots_special)       \
6834514f5e3Sopenharmony_ci    V(JSTaggedValue, EmptyArray, EMPTY_ARRAY_OBJECT_INDEX, ecma_roots_special)                    \
6844514f5e3Sopenharmony_ci    V(JSTaggedValue, EmptyMutantArray, EMPTY_MUTANT_ARRAY_OBJECT_INDEX, ecma_roots_special)       \
6854514f5e3Sopenharmony_ci    V(JSTaggedValue, ProxyMethod, PROXY_METHOD_INDEX, ecma_roots_special)                         \
6864514f5e3Sopenharmony_ci    V(JSTaggedValue, Uint64MaxBigInt, UINT64_MAX_BIGINT_INDEX, ecma_roots_special)                \
6874514f5e3Sopenharmony_ci    V(JSTaggedValue, Int64MaxBigInt, INT64_MAX_BIGINT_INDEX, ecma_roots_special)                  \
6884514f5e3Sopenharmony_ci    V(JSTaggedValue, EmptyProfileTypeInfoCell, EMPTY_PROFILE_TYPE_INFO_CELL_INDEX, ecma_roots_special) \
6894514f5e3Sopenharmony_ci    V(JSTaggedValue, BoundFunctionMethod, BOUND_FUNCTION_METHOD_INDEX, ecma_roots_special)
6904514f5e3Sopenharmony_ci
6914514f5e3Sopenharmony_ci#define GLOBAL_ENV_CACHES(V)                \
6924514f5e3Sopenharmony_ci    V(JSTaggedValue, CachedJSCollatorLocales, CACHED_JSCOLLATOR_LOCALES_INDEX, cachedCollatorLocales)
6934514f5e3Sopenharmony_ci
6944514f5e3Sopenharmony_ci// ConstantIndex used for explicit visit each constant.
6954514f5e3Sopenharmony_cienum class ConstantIndex : size_t {
6964514f5e3Sopenharmony_ci// NOLINTNEXTLINE(cppcoreguidelines-macro-usage)
6974514f5e3Sopenharmony_ci#define INDEX_FILTER_COMMON(Index) Index,
6984514f5e3Sopenharmony_ci#define INDEX_FILTER_WITH_TYPE(Type, Name, Index, Desc) INDEX_FILTER_COMMON(Index)
6994514f5e3Sopenharmony_ci#define INDEX_FILTER_STRING(Name, Index, Token) INDEX_FILTER_COMMON(Index)
7004514f5e3Sopenharmony_ci    // Caveats: make sure shareds starts from 0 and placed before non-shareds.
7014514f5e3Sopenharmony_ci    SHARED_GLOBAL_ENV_CONSTANT_CLASS(INDEX_FILTER_WITH_TYPE)
7024514f5e3Sopenharmony_ci    SHARED_GLOBAL_ENV_CONSTANT_STRING(INDEX_FILTER_STRING)
7034514f5e3Sopenharmony_ci    SHARED_GLOBAL_ENV_CONSTANT_ACCESSOR(INDEX_FILTER_WITH_TYPE)
7044514f5e3Sopenharmony_ci    SHARED_GLOBAL_ENV_CONSTANT_SPECIAL(INDEX_FILTER_WITH_TYPE)
7054514f5e3Sopenharmony_ci    GLOBAL_ENV_CONSTANT_CLASS(INDEX_FILTER_WITH_TYPE)
7064514f5e3Sopenharmony_ci    GLOBAL_ENV_CONSTANT_SPECIAL(INDEX_FILTER_WITH_TYPE)
7074514f5e3Sopenharmony_ci    GLOBAL_ENV_INLINED_BUILTINS(INDEX_FILTER_WITH_TYPE)
7084514f5e3Sopenharmony_ci    GLOBAL_ENV_CONSTANT_CONSTANT(INDEX_FILTER_WITH_TYPE)
7094514f5e3Sopenharmony_ci    GLOBAL_ENV_CACHES(INDEX_FILTER_WITH_TYPE)
7104514f5e3Sopenharmony_ci#undef INDEX_FILTER_STRING
7114514f5e3Sopenharmony_ci#undef INDEX_FILTER_WITH_TYPE
7124514f5e3Sopenharmony_ci#undef INDEX_FILTER_COMMON
7134514f5e3Sopenharmony_ci
7144514f5e3Sopenharmony_ci    CONSTANT_COUNT,
7154514f5e3Sopenharmony_ci
7164514f5e3Sopenharmony_ci    CONSTANT_BEGIN = 0,
7174514f5e3Sopenharmony_ci    CONSTANT_END = CONSTANT_COUNT,
7184514f5e3Sopenharmony_ci
7194514f5e3Sopenharmony_ci    SHARED_BEGIN = HCLASS_CLASS_INDEX,
7204514f5e3Sopenharmony_ci    SHARED_END = BOUND_FUNCTION_METHOD_INDEX,
7214514f5e3Sopenharmony_ci
7224514f5e3Sopenharmony_ci    SHARED_HCLASS_BEGIN = HCLASS_CLASS_INDEX,
7234514f5e3Sopenharmony_ci    SHARED_HCLASS_END = VTABLE_CLASS_INDEX,
7244514f5e3Sopenharmony_ci    NON_SHARED_HCLASS_BEGIN = JS_PROXY_CALLABLE_CLASS_INDEX,
7254514f5e3Sopenharmony_ci    NON_SHARED_HCLASS_END = ELEMENT_HOLE_TAGGED_HCLASS_INDEX,
7264514f5e3Sopenharmony_ci    READ_ONLY_CONSTANT_BEGIN = CONSTANT_BEGIN,
7274514f5e3Sopenharmony_ci    READ_ONLY_CONSTANT_END = CONSTANT_END,
7284514f5e3Sopenharmony_ci    JSAPI_CONTAINERS_BEGIN = ARRAYLIST_FUNCTION_INDEX,
7294514f5e3Sopenharmony_ci    JSAPI_CONTAINERS_END = LINKED_LIST_ITERATOR_PROTOTYPE_INDEX,
7304514f5e3Sopenharmony_ci
7314514f5e3Sopenharmony_ci    INVALID = -1,
7324514f5e3Sopenharmony_ci    // ...
7334514f5e3Sopenharmony_ci};
7344514f5e3Sopenharmony_ci// clang-format on
7354514f5e3Sopenharmony_ci
7364514f5e3Sopenharmony_ciclass GlobalEnvConstants {
7374514f5e3Sopenharmony_cipublic:
7384514f5e3Sopenharmony_ci    GlobalEnvConstants() = default;
7394514f5e3Sopenharmony_ci    ~GlobalEnvConstants() = default;
7404514f5e3Sopenharmony_ci
7414514f5e3Sopenharmony_ci    DEFAULT_MOVE_SEMANTIC(GlobalEnvConstants);
7424514f5e3Sopenharmony_ci    DEFAULT_COPY_SEMANTIC(GlobalEnvConstants);
7434514f5e3Sopenharmony_ci
7444514f5e3Sopenharmony_ci    const JSTaggedValue *BeginSlot() const;
7454514f5e3Sopenharmony_ci
7464514f5e3Sopenharmony_ci    const JSTaggedValue *EndSlot() const;
7474514f5e3Sopenharmony_ci
7484514f5e3Sopenharmony_ci    void Init(JSThread *thread);
7494514f5e3Sopenharmony_ci
7504514f5e3Sopenharmony_ci    void CopySharedConstantsFrom(const GlobalEnvConstants *src);
7514514f5e3Sopenharmony_ci
7524514f5e3Sopenharmony_ci    void InitSpecialForSnapshot();
7534514f5e3Sopenharmony_ci
7544514f5e3Sopenharmony_ci    void InitElementKindHClass(const JSThread *thread, JSHandle<JSHClass> originHClass);
7554514f5e3Sopenharmony_ci
7564514f5e3Sopenharmony_ci    void SetCachedLocales(JSTaggedValue value);
7574514f5e3Sopenharmony_ci
7584514f5e3Sopenharmony_ci    void SetConstant(ConstantIndex index, JSTaggedValue value);
7594514f5e3Sopenharmony_ci
7604514f5e3Sopenharmony_ci    template<typename T>
7614514f5e3Sopenharmony_ci    void SetConstant(ConstantIndex index, JSHandle<T> value);
7624514f5e3Sopenharmony_ci
7634514f5e3Sopenharmony_ci    uintptr_t GetGlobalConstantAddr(ConstantIndex index) const;
7644514f5e3Sopenharmony_ci
7654514f5e3Sopenharmony_ci// NOLINTNEXTLINE(cppcoreguidelines-macro-usage)
7664514f5e3Sopenharmony_ci#define DECL_GET_COMMON(Type, Name)                 \
7674514f5e3Sopenharmony_ci    const Type Get##Name() const;                   \
7684514f5e3Sopenharmony_ci    const JSHandle<Type> GetHandled##Name() const;  \
7694514f5e3Sopenharmony_ci    static size_t GetOffsetOf##Name();
7704514f5e3Sopenharmony_ci#define DECL_GET_WITH_TYPE(Type, Name, Index, Desc) DECL_GET_COMMON(Type, Name)
7714514f5e3Sopenharmony_ci#define DECL_GET_STRING(Name, Index, Token) DECL_GET_COMMON(JSTaggedValue, Name)
7724514f5e3Sopenharmony_ci    SHARED_GLOBAL_ENV_CONSTANT_CLASS(DECL_GET_WITH_TYPE)
7734514f5e3Sopenharmony_ci    SHARED_GLOBAL_ENV_CONSTANT_STRING(DECL_GET_STRING)
7744514f5e3Sopenharmony_ci    SHARED_GLOBAL_ENV_CONSTANT_ACCESSOR(DECL_GET_WITH_TYPE)
7754514f5e3Sopenharmony_ci    SHARED_GLOBAL_ENV_CONSTANT_SPECIAL(DECL_GET_WITH_TYPE)
7764514f5e3Sopenharmony_ci    GLOBAL_ENV_CONSTANT_CLASS(DECL_GET_WITH_TYPE)
7774514f5e3Sopenharmony_ci    GLOBAL_ENV_CONSTANT_SPECIAL(DECL_GET_WITH_TYPE)
7784514f5e3Sopenharmony_ci    GLOBAL_ENV_INLINED_BUILTINS(DECL_GET_WITH_TYPE)
7794514f5e3Sopenharmony_ci    GLOBAL_ENV_CONSTANT_CONSTANT(DECL_GET_WITH_TYPE)
7804514f5e3Sopenharmony_ci    GLOBAL_ENV_CACHES(DECL_GET_WITH_TYPE)
7814514f5e3Sopenharmony_ci#undef DECL_GET_STRING
7824514f5e3Sopenharmony_ci#undef DECL_GET_WITH_TYPE
7834514f5e3Sopenharmony_ci#undef DECL_GET_COMMON
7844514f5e3Sopenharmony_ci
7854514f5e3Sopenharmony_ci    void VisitRangeSlot(const RootRangeVisitor &visitor)
7864514f5e3Sopenharmony_ci    {
7874514f5e3Sopenharmony_ci        visitor(ecmascript::Root::ROOT_VM, ObjectSlot(ToUintPtr(BeginSlot())), ObjectSlot(ToUintPtr(EndSlot())));
7884514f5e3Sopenharmony_ci    }
7894514f5e3Sopenharmony_ci
7904514f5e3Sopenharmony_ci    JSTaggedValue GetGlobalConstantObject(size_t index) const
7914514f5e3Sopenharmony_ci    {
7924514f5e3Sopenharmony_ci        ASSERT(static_cast<ConstantIndex>(index) < ConstantIndex::CONSTANT_COUNT);
7934514f5e3Sopenharmony_ci        return constants_[index];
7944514f5e3Sopenharmony_ci    }
7954514f5e3Sopenharmony_ci
7964514f5e3Sopenharmony_ci    size_t GetConstantCount() const
7974514f5e3Sopenharmony_ci    {
7984514f5e3Sopenharmony_ci        return static_cast<size_t>(ConstantIndex::CONSTANT_COUNT);
7994514f5e3Sopenharmony_ci    }
8004514f5e3Sopenharmony_ci
8014514f5e3Sopenharmony_ci    size_t GetEmptyArrayIndex() const
8024514f5e3Sopenharmony_ci    {
8034514f5e3Sopenharmony_ci        return static_cast<size_t>(ConstantIndex::EMPTY_ARRAY_OBJECT_INDEX);
8044514f5e3Sopenharmony_ci    }
8054514f5e3Sopenharmony_ci
8064514f5e3Sopenharmony_ci    size_t GetEmptyMutantArrayIndex() const
8074514f5e3Sopenharmony_ci    {
8084514f5e3Sopenharmony_ci        return static_cast<size_t>(ConstantIndex::EMPTY_MUTANT_ARRAY_OBJECT_INDEX);
8094514f5e3Sopenharmony_ci    }
8104514f5e3Sopenharmony_ci
8114514f5e3Sopenharmony_ci    size_t GetJSAPIContainersBegin() const
8124514f5e3Sopenharmony_ci    {
8134514f5e3Sopenharmony_ci        return static_cast<size_t>(ConstantIndex::JSAPI_CONTAINERS_BEGIN);
8144514f5e3Sopenharmony_ci    }
8154514f5e3Sopenharmony_ci
8164514f5e3Sopenharmony_ci    size_t GetJSAPIContainersEnd() const
8174514f5e3Sopenharmony_ci    {
8184514f5e3Sopenharmony_ci        return static_cast<size_t>(ConstantIndex::JSAPI_CONTAINERS_END);
8194514f5e3Sopenharmony_ci    }
8204514f5e3Sopenharmony_ci
8214514f5e3Sopenharmony_ci    size_t GetLineStringClassIndex() const
8224514f5e3Sopenharmony_ci    {
8234514f5e3Sopenharmony_ci        return static_cast<size_t>(ConstantIndex::LINE_STRING_CLASS_INDEX);
8244514f5e3Sopenharmony_ci    }
8254514f5e3Sopenharmony_ci
8264514f5e3Sopenharmony_ci    size_t GetConstStringClassIndex() const
8274514f5e3Sopenharmony_ci    {
8284514f5e3Sopenharmony_ci        return static_cast<size_t>(ConstantIndex::CONSTANT_STRING_CLASS_INDEX);
8294514f5e3Sopenharmony_ci    }
8304514f5e3Sopenharmony_ci
8314514f5e3Sopenharmony_ci    bool IsSpecialOrUndefined(size_t index) const
8324514f5e3Sopenharmony_ci    {
8334514f5e3Sopenharmony_ci        size_t specialBegin = static_cast<size_t>(ConstantIndex::UNDEFINED_INDEX);
8344514f5e3Sopenharmony_ci        size_t specialEnd = static_cast<size_t>(ConstantIndex::NULL_INDEX);
8354514f5e3Sopenharmony_ci        size_t undefinedBegin = GetJSAPIContainersBegin();
8364514f5e3Sopenharmony_ci        size_t undefinedEnd = GetJSAPIContainersEnd();
8374514f5e3Sopenharmony_ci        return (index >= specialBegin && index <= specialEnd) || (index >= undefinedBegin && index <= undefinedEnd);
8384514f5e3Sopenharmony_ci    }
8394514f5e3Sopenharmony_ci
8404514f5e3Sopenharmony_ci    static constexpr size_t SizeArch32 =
8414514f5e3Sopenharmony_ci        JSTaggedValue::TaggedTypeSize() * static_cast<size_t>(ConstantIndex::CONSTANT_COUNT);
8424514f5e3Sopenharmony_ci    static constexpr size_t SizeArch64 =
8434514f5e3Sopenharmony_ci        JSTaggedValue::TaggedTypeSize() * static_cast<size_t>(ConstantIndex::CONSTANT_COUNT);
8444514f5e3Sopenharmony_ci
8454514f5e3Sopenharmony_ciprivate:
8464514f5e3Sopenharmony_ci    void InitSharedStrings(ObjectFactory *factory);
8474514f5e3Sopenharmony_ci    void InitSharedRootsClasses(ObjectFactory *factory);
8484514f5e3Sopenharmony_ci    void InitSharedMiscellanious(JSThread *thread, ObjectFactory *factory);
8494514f5e3Sopenharmony_ci    void InitRootsClasses(ObjectFactory *factory);
8504514f5e3Sopenharmony_ci    void InitRootsClassesPartOne(JSHClass *hClass, ObjectFactory *factory);
8514514f5e3Sopenharmony_ci    void InitRootsClassesPartTwo(JSHClass *hClass, ObjectFactory *factory);
8524514f5e3Sopenharmony_ci    void InitMiscellanious(JSThread *thread, ObjectFactory *factory);
8534514f5e3Sopenharmony_ci    void InitGlobalCaches();
8544514f5e3Sopenharmony_ci    void InitJSAPIContainers();
8554514f5e3Sopenharmony_ci
8564514f5e3Sopenharmony_ci    JSTaggedValue constants_[static_cast<int>(ConstantIndex::CONSTANT_COUNT)];  // NOLINT(modernize-avoid-c-arrays)
8574514f5e3Sopenharmony_ci};
8584514f5e3Sopenharmony_ciSTATIC_ASSERT_EQ_ARCH(sizeof(GlobalEnvConstants), GlobalEnvConstants::SizeArch32, GlobalEnvConstants::SizeArch64);
8594514f5e3Sopenharmony_ci}  // namespace panda::ecmascript
8604514f5e3Sopenharmony_ci#endif  // ECMASCRIPT_GLOBAL_ENV_CONSTANTS_H
861