• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2024 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 #include "ecmascript/byte_array.h"
16 #include "ecmascript/dfx/native_module_failure_info.h"
17 #include "ecmascript/ic/ic_handler.h"
18 #include "ecmascript/ic/profile_type_info.h"
19 #include "ecmascript/ic/proto_change_details.h"
20 #include "ecmascript/jobs/micro_job_queue.h"
21 #include "ecmascript/jobs/pending_job.h"
22 #include "ecmascript/js_native_pointer.h"
23 #include "ecmascript/js_object.h"
24 #include "ecmascript/js_tagged_value.h"
25 #include "ecmascript/js_arraybuffer.h"
26 #include "ecmascript/js_array_iterator.h"
27 #include "ecmascript/js_async_function.h"
28 #include "ecmascript/js_async_from_sync_iterator.h"
29 #include "ecmascript/js_async_generator_object.h"
30 #include "ecmascript/js_iterator.h"
31 #include "ecmascript/js_finalization_registry.h"
32 #include "ecmascript/js_api/js_api_arraylist_iterator.h"
33 #include "ecmascript/js_api/js_api_arraylist.h"
34 #include "ecmascript/js_api/js_api_bitvector.h"
35 #include "ecmascript/js_api/js_api_bitvector_iterator.h"
36 #include "ecmascript/js_api/js_api_deque.h"
37 #include "ecmascript/js_api/js_api_deque_iterator.h"
38 #include "ecmascript/js_api/js_api_hashmap.h"
39 #include "ecmascript/js_api/js_api_hashmap_iterator.h"
40 #include "ecmascript/js_api/js_api_hashset.h"
41 #include "ecmascript/js_api/js_api_hashset_iterator.h"
42 #include "ecmascript/js_api/js_api_lightweightmap.h"
43 #include "ecmascript/js_api/js_api_lightweightmap_iterator.h"
44 #include "ecmascript/js_api/js_api_lightweightset.h"
45 #include "ecmascript/js_api/js_api_lightweightset_iterator.h"
46 #include "ecmascript/js_api/js_api_linked_list.h"
47 #include "ecmascript/js_api/js_api_linked_list_iterator.h"
48 #include "ecmascript/js_api/js_api_list.h"
49 #include "ecmascript/js_api/js_api_list_iterator.h"
50 #include "ecmascript/js_api/js_api_plain_array.h"
51 #include "ecmascript/js_api/js_api_plain_array_iterator.h"
52 #include "ecmascript/js_api/js_api_queue.h"
53 #include "ecmascript/js_api/js_api_queue_iterator.h"
54 #include "ecmascript/js_api/js_api_stack.h"
55 #include "ecmascript/js_api/js_api_stack_iterator.h"
56 #include "ecmascript/js_api/js_api_tree_map.h"
57 #include "ecmascript/js_api/js_api_tree_map_iterator.h"
58 #include "ecmascript/js_api/js_api_tree_set.h"
59 #include "ecmascript/js_api/js_api_tree_set_iterator.h"
60 #include "ecmascript/js_api/js_api_vector.h"
61 #include "ecmascript/js_api/js_api_vector_iterator.h"
62 #include "ecmascript/js_arguments.h"
63 #include "ecmascript/js_array.h"
64 #include "ecmascript/js_array_iterator.h"
65 #include "ecmascript/js_arraybuffer.h"
66 #include "ecmascript/js_async_function.h"
67 #include "ecmascript/js_async_generator_object.h"
68 #include "ecmascript/js_collator.h"
69 #include "ecmascript/js_dataview.h"
70 #include "ecmascript/js_date.h"
71 #include "ecmascript/js_date_time_format.h"
72 #include "ecmascript/js_for_in_iterator.h"
73 #include "ecmascript/js_finalization_registry.h"
74 #include "ecmascript/js_function.h"
75 #include "ecmascript/js_generator_object.h"
76 #include "ecmascript/js_hclass.h"
77 #include "ecmascript/js_intl.h"
78 #include "ecmascript/js_locale.h"
79 #include "ecmascript/js_map.h"
80 #include "ecmascript/js_map_iterator.h"
81 #include "ecmascript/js_number_format.h"
82 #include "ecmascript/js_object-inl.h"
83 #include "ecmascript/js_plural_rules.h"
84 #include "ecmascript/js_primitive_ref.h"
85 #include "ecmascript/js_promise.h"
86 #include "ecmascript/js_realm.h"
87 #include "ecmascript/js_regexp.h"
88 #include "ecmascript/js_regexp_iterator.h"
89 #include "ecmascript/js_relative_time_format.h"
90 #include "ecmascript/js_segmenter.h"
91 #include "ecmascript/js_segments.h"
92 #include "ecmascript/js_segment_iterator.h"
93 #include "ecmascript/js_set.h"
94 #include "ecmascript/js_displaynames.h"
95 #include "ecmascript/js_list_format.h"
96 #include "ecmascript/js_set_iterator.h"
97 #include "ecmascript/js_string_iterator.h"
98 #include "ecmascript/js_typed_array.h"
99 #include "ecmascript/js_weak_container.h"
100 #include "ecmascript/js_weak_ref.h"
101 #include "ecmascript/marker_cell.h"
102 #include "ecmascript/js_typed_array.h"
103 #include "ecmascript/jspandafile/class_info_extractor.h"
104 #include "ecmascript/jspandafile/class_literal.h"
105 #include "ecmascript/jspandafile/program_object.h"
106 #include "ecmascript/module/js_module_record.h"
107 #include "ecmascript/napi/include/jsnapi.h"
108 #include "ecmascript/object_factory.h"
109 #include "ecmascript/tests/test_helper.h"
110 #include "ecmascript/dfx/hprof/heap_profiler.h"
111 #include "ecmascript/global_env.h"
112 #include "ecmascript/require/js_cjs_module.h"
113 #include "ecmascript/require/js_cjs_require.h"
114 #include "ecmascript/require/js_cjs_exports.h"
115 #include "ecmascript/module/js_module_source_text.h"
116 #include "ecmascript/module/js_shared_module.h"
117 #include "ecmascript/shared_objects/js_shared_array.h"
118 #include "ecmascript/shared_objects/js_sendable_arraybuffer.h"
119 #include "ecmascript/shared_objects/js_shared_array_iterator.h"
120 #include "ecmascript/shared_objects/js_shared_map.h"
121 #include "ecmascript/shared_objects/js_shared_map_iterator.h"
122 #include "ecmascript/shared_objects/js_shared_set.h"
123 #include "ecmascript/shared_objects/js_shared_set_iterator.h"
124 #include "ecmascript/shared_objects/js_shared_typed_array.h"
125 #include "ecmascript/tagged_hash_table.h"
126 #include "gtest/gtest.h"
127 #include <cstddef>
128 #include <fstream>
129 #include <string>
130 #include <unordered_map>
131 #include <utility>
132 #include "cJSON.h"
133 
134 
135 namespace panda::test {
136 using namespace panda::ecmascript;
137 using ArrayVisitor = const std::function<bool(const cJSON *, int)>;
138 class JSMetadataTest : public testing::Test {
139 public:
SetUp()140     void SetUp() override
141     {
142         GTEST_LOG_(INFO) << "JSMetadataTest Setup";
143     }
144 
TearDown()145     void TearDown() override
146     {
147         GTEST_LOG_(INFO) << "JSMetadataTest TearDown";
148     }
149 };
150 
151 class JSMetadataTestHelper {
152 public:
JSMetadataTestHelper()153     explicit JSMetadataTestHelper()
154     {
155         // { typeName: [all fields' name of this type in the same order as declared in .h files + typeName] }
156         // typeName: Type name in JSType Enum
157         fieldNameTable_ = {
158             {JSType::HCLASS, {
159                 "Proto", "Layout", "Transitions", "Parent", "ProtoChangeMarker",
160                 "ProtoChangeDetails", "EnumCache", "ProfilerType", "BitField", "BitField1", "HCLASS"}},
161             {JSType::ACCESSOR_DATA, {"Getter", "Setter", "ACCESSOR_DATA"}},
162             {JSType::AOT_LITERAL_INFO, {"AOT_LITERAL_INFO"}},
163             {JSType::ASYNC_GENERATOR_REQUEST, {"Completion", "Capability", "ASYNC_GENERATOR_REQUEST"}},
164             {JSType::ASYNC_ITERATOR_RECORD, {"Iterator", "NextMethod", "ASYNC_ITERATOR_RECORD"}},
165             {JSType::BIGINT, {"BIGINT"}},
166             {JSType::BYTE_ARRAY, {"BYTE_ARRAY"}},
167             {JSType::CELL_RECORD, {"WeakRefTarget", "HeldValue", "CELL_RECORD"}},
168             {JSType::CLASS_INFO_EXTRACTOR, {
169                 "NonStaticKeys", "NonStaticProperties", "NonStaticElements", "StaticKeys",
170                 "StaticProperties", "StaticElements",
171                 "ConstructorMethod", "CLASS_INFO_EXTRACTOR"}},
172             {JSType::CLASS_LITERAL, {"Array", "CLASS_LITERAL"}},
173             {JSType::COMPLETION_RECORD, {"Value", "COMPLETION_RECORD"}},
174             {JSType::CONSTANT_POOL, {"CONSTANT_POOL"}},
175             {JSType::CONSTANT_STRING, {"RelocatedData", "CONSTANT_STRING"}},
176             {JSType::COW_MUTANT_TAGGED_ARRAY, {"COW_MUTANT_TAGGED_ARRAY"}},
177             {JSType::COW_TAGGED_ARRAY, {"COW_TAGGED_ARRAY"}},
178             {JSType::EXTRA_PROFILE_TYPE_INFO, {"ReceiverObject", "HolderObject", "EXTRA_PROFILE_TYPE_INFO"}},
179             {JSType::FUNCTION_TEMPLATE, {"Method", "Module", "RawProfileTypeInfo", "FUNCTION_TEMPLATE"}},
180             {JSType::GLOBAL_ENV, {"GLOBAL_ENV"}},
181             {JSType::IMPORTENTRY_RECORD, {"ImportName", "LocalName", "ModuleRequestIndex", "IMPORTENTRY_RECORD"}},
182             {JSType::INDIRECT_EXPORTENTRY_RECORD, {"ExportName", "ImportName",
183                                                    "ModuleRequestIndex", "INDIRECT_EXPORTENTRY_RECORD"}},
184             {JSType::INTERNAL_ACCESSOR, {"Getter", "Setter", "INTERNAL_ACCESSOR"}},
185             {JSType::JS_AGGREGATE_ERROR, {"Properties", "Elements", "JS_AGGREGATE_ERROR"}},
186             {JSType::JS_API_ARRAYLIST_ITERATOR, {"IteratedArrayList", "JS_API_ARRAYLIST_ITERATOR"}},
187             {JSType::JS_API_ARRAY_LIST, {"Length", "JS_API_ARRAY_LIST"}},
188             {JSType::JS_API_BITVECTOR, {"NativePointer", "JS_API_BITVECTOR"}},
189             {JSType::JS_API_BITVECTOR_ITERATOR, {"IteratedBitVector", "JS_API_BITVECTOR_ITERATOR"}},
190             {JSType::JS_API_DEQUE, {"JS_API_DEQUE"}},
191             {JSType::JS_API_DEQUE_ITERATOR, {"IteratedDeque", "JS_API_DEQUE_ITERATOR"}},
192             {JSType::JS_API_HASHMAP_ITERATOR, {"IteratedHashMap", "TaggedQueue",
193                                                "CurrentNodeResult", "JS_API_HASHMAP_ITERATOR"}},
194             {JSType::JS_API_HASHSET_ITERATOR, {"IteratedHashSet", "TaggedQueue",
195                                                "CurrentNodeResult", "JS_API_HASHSET_ITERATOR"}},
196             {JSType::JS_API_HASH_MAP, {"Table", "JS_API_HASH_MAP"}},
197             {JSType::JS_API_HASH_SET, {"Table", "JS_API_HASH_SET"}},
198             {JSType::JS_API_LIGHT_WEIGHT_MAP, {"Hashes", "Keys", "Values", "JS_API_LIGHT_WEIGHT_MAP"}},
199             {JSType::JS_API_LIGHT_WEIGHT_MAP_ITERATOR, {"IteratedLightWeightMap", "JS_API_LIGHT_WEIGHT_MAP_ITERATOR"}},
200             {JSType::JS_API_LIGHT_WEIGHT_SET, {"Hashes", "Values", "JS_API_LIGHT_WEIGHT_SET"}},
201             {JSType::JS_API_LIGHT_WEIGHT_SET_ITERATOR, {"IteratedLightWeightSet", "JS_API_LIGHT_WEIGHT_SET_ITERATOR"}},
202             {JSType::JS_API_LINKED_LIST, {"DoubleList", "JS_API_LINKED_LIST"}},
203             {JSType::JS_API_LINKED_LIST_ITERATOR, {"IteratedLinkedList", "JS_API_LINKED_LIST_ITERATOR"}},
204             {JSType::JS_API_LIST, {"SingleList", "JS_API_LIST"}},
205             {JSType::JS_API_LIST_ITERATOR, {"IteratedList", "JS_API_LIST_ITERATOR"}},
206             {JSType::JS_API_PLAIN_ARRAY, {"Keys", "Values", "JS_API_PLAIN_ARRAY"}},
207             {JSType::JS_API_PLAIN_ARRAY_ITERATOR, {"IteratedPlainArray", "JS_API_PLAIN_ARRAY_ITERATOR"}},
208             {JSType::JS_API_QUEUE, {"Length", "JS_API_QUEUE"}},
209             {JSType::JS_API_QUEUE_ITERATOR, {"IteratedQueue", "JS_API_QUEUE_ITERATOR"}},
210             {JSType::JS_API_STACK, {"JS_API_STACK"}},
211             {JSType::JS_API_STACK_ITERATOR, {"IteratedStack", "JS_API_STACK_ITERATOR"}},
212             {JSType::JS_API_TREEMAP_ITERATOR, {"IteratedMap", "Entries", "JS_API_TREEMAP_ITERATOR"}},
213             {JSType::JS_API_TREESET_ITERATOR, {"IteratedSet", "Entries", "JS_API_TREESET_ITERATOR"}},
214             {JSType::JS_API_TREE_MAP, {"TreeMap", "JS_API_TREE_MAP"}},
215             {JSType::JS_API_TREE_SET, {"TreeSet", "JS_API_TREE_SET"}},
216             {JSType::JS_API_VECTOR, {"JS_API_VECTOR"}},
217             {JSType::JS_API_VECTOR_ITERATOR, {"IteratedVector", "JS_API_VECTOR_ITERATOR"}},
218             {JSType::JS_ARGUMENTS, {"JS_ARGUMENTS"}},
219             {JSType::JS_ARRAY, {"Length", "TrackInfo", "JS_ARRAY"}},
220             {JSType::JS_ARRAY_BUFFER, {"ArrayBufferData", "JS_ARRAY_BUFFER"}},
221             {JSType::JS_ARRAY_ITERATOR, {"IteratedArray", "JS_ARRAY_ITERATOR"}},
222             {JSType::JS_ASYNCITERATOR, {"Properties", "Elements", "JS_ASYNCITERATOR"}},
223             {JSType::JS_ASYNC_AWAIT_STATUS_FUNCTION, {"AsyncContext", "JS_ASYNC_AWAIT_STATUS_FUNCTION"}},
224             {JSType::JS_ASYNC_FROM_SYNC_ITERATOR, {"SyncIteratorRecord", "JS_ASYNC_FROM_SYNC_ITERATOR"}},
225             {JSType::JS_ASYNC_FROM_SYNC_ITER_UNWARP_FUNCTION, {"Done", "JS_ASYNC_FROM_SYNC_ITER_UNWARP_FUNCTION"}},
226             {JSType::JS_ASYNC_FUNCTION, {"JS_ASYNC_FUNCTION"}},
227             {JSType::JS_ASYNC_FUNC_OBJECT, {"Promise", "JS_ASYNC_FUNC_OBJECT"}},
228             {JSType::JS_ASYNC_GENERATOR_FUNCTION, {"JS_ASYNC_GENERATOR_FUNCTION"}},
229             {JSType::JS_ASYNC_GENERATOR_OBJECT, {"GeneratorContext", "AsyncGeneratorQueue", "GeneratorBrand",
230                                                  "ResumeResult", "JS_ASYNC_GENERATOR_OBJECT"}},
231             {JSType::JS_ASYNC_GENERATOR_RESUME_NEXT_RETURN_PROCESSOR_RST_FTN, {
232                 "AsyncGeneratorObject", "JS_ASYNC_GENERATOR_RESUME_NEXT_RETURN_PROCESSOR_RST_FTN"}},
233             {JSType::JS_ASYNC_MODULE_FULFILLED_FUNCTION, {"JS_ASYNC_MODULE_FULFILLED_FUNCTION"}},
234             {JSType::JS_ASYNC_MODULE_REJECTED_FUNCTION, {"JS_ASYNC_MODULE_REJECTED_FUNCTION"}},
235             {JSType::JS_BIGINT64_ARRAY, {"ViewedArrayBufferOrByteArray", "TypedArrayName", "JS_BIGINT64_ARRAY"}},
236             {JSType::JS_BIGUINT64_ARRAY, {"ViewedArrayBufferOrByteArray", "TypedArrayName", "JS_BIGUINT64_ARRAY"}},
237             {JSType::JS_BOUND_FUNCTION, {"BoundTarget", "BoundThis", "BoundArguments", "JS_BOUND_FUNCTION"}},
238             {JSType::JS_CJS_EXPORTS, {"Exports", "JS_CJS_EXPORTS"}},
239             {JSType::JS_CJS_MODULE, {"Id", "Path", "Exports", "Filename", "JS_CJS_MODULE"}},
240             {JSType::JS_CJS_REQUIRE, {"Cache", "Parent", "JS_CJS_REQUIRE"}},
241             {JSType::JS_COLLATOR, {"IcuFiled", "Locale", "Collation", "BoundCompare", "JS_COLLATOR"}},
242             {JSType::JS_DATA_VIEW, {"DataView", "ViewedArrayBuffer", "JS_DATA_VIEW"}},
243             {JSType::JS_DATE, {"TimeValue", "LocalOffset", "JS_DATE"}},
244             {JSType::JS_DATE_TIME_FORMAT, {"Locale", "Calendar", "NumberingSystem", "TimeZone", "LocaleIcu",
245                                            "SimpleDateTimeFormatIcu", "Iso8601",
246                                            "BoundFormat", "JS_DATE_TIME_FORMAT"}},
247             {JSType::JS_DISPLAYNAMES, {"Locale", "IcuLDN", "JS_DISPLAYNAMES"}},
248             {JSType::JS_ERROR, {"Properties", "Elements", "JS_ERROR"}},
249             {JSType::JS_EVAL_ERROR, {"Properties", "Elements", "JS_EVAL_ERROR"}},
250             {JSType::JS_FINALIZATION_REGISTRY, {"CleanupCallback", "NoUnregister",
251                                                 "MaybeUnregister", "Next", "Prev", "JS_FINALIZATION_REGISTRY"}},
252             {JSType::JS_FLOAT32_ARRAY, {"ViewedArrayBufferOrByteArray", "TypedArrayName", "JS_FLOAT32_ARRAY"}},
253             {JSType::JS_FLOAT64_ARRAY, {"ViewedArrayBufferOrByteArray", "TypedArrayName", "JS_FLOAT64_ARRAY"}},
254             {JSType::JS_FORIN_ITERATOR, {"Object", "CachedHclass", "Keys", "JS_FORIN_ITERATOR"}},
255             {JSType::JS_FUNCTION, {"ProtoOrHClass", "LexicalEnv", "MachineCode", "BaselineCode", "RawProfileTypeInfo",
256                                    "HomeObject", "Module", "JS_FUNCTION"}},
257             {JSType::JS_FUNCTION_BASE, {"Method", "JS_FUNCTION_BASE"}},
258             {JSType::JS_GENERATOR_CONTEXT, {"RegsArray", "Method", "This", "Acc",
259                                             "GeneratorObject", "LexicalEnv", "JS_GENERATOR_CONTEXT"}},
260             {JSType::JS_GENERATOR_FUNCTION, {"JS_GENERATOR_FUNCTION"}},
261             {JSType::JS_GENERATOR_OBJECT, {"GeneratorContext", "ResumeResult", "JS_GENERATOR_OBJECT"}},
262             {JSType::JS_GLOBAL_OBJECT, {"JS_GLOBAL_OBJECT"}},
263             {JSType::JS_INT16_ARRAY, {"ViewedArrayBufferOrByteArray", "TypedArrayName", "JS_INT16_ARRAY"}},
264             {JSType::JS_INT32_ARRAY, {"ViewedArrayBufferOrByteArray", "TypedArrayName", "JS_INT32_ARRAY"}},
265             {JSType::JS_INT8_ARRAY, {"ViewedArrayBufferOrByteArray", "TypedArrayName", "JS_INT8_ARRAY"}},
266             {JSType::JS_INTL, {"FallbackSymbol", "JS_INTL"}},
267             {JSType::JS_INTL_BOUND_FUNCTION, {"NumberFormat", "DateTimeFormat",
268                                               "Collator", "JS_INTL_BOUND_FUNCTION"}},
269             {JSType::JS_ITERATOR, {"Properties", "Elements", "JS_ITERATOR"}},
270             {JSType::JS_LIST_FORMAT, {"Locale", "IcuLF", "JS_LIST_FORMAT"}},
271             {JSType::JS_LOCALE, {"IcuField", "JS_LOCALE"}},
272             {JSType::JS_MAP, {"LinkedMap", "JS_MAP"}},
273             {JSType::JS_MAP_ITERATOR, {"IteratorMap", "JS_MAP_ITERATOR"}},
274             {JSType::JS_MODULE_NAMESPACE, {"Module", "Exports", "DeregisterProcession", "JS_MODULE_NAMESPACE"}},
275             {JSType::JS_NATIVE_POINTER, {"BindingSize", "JS_NATIVE_POINTER"}},
276             {JSType::JS_NUMBER_FORMAT, {"Locale", "NumberingSystem", "Currency", "Unit", "MinimumIntegerDigits",
277                                               "MinimumFractionDigits", "MaximumFractionDigits",
278                                               "MinimumSignificantDigits", "MaximumSignificantDigits",
279                                               "UseGrouping", "BoundFormat", "IcuField", "JS_NUMBER_FORMAT"}},
280             {JSType::JS_OBJECT, {"Properties", "Elements", "JS_OBJECT"}},
281             {JSType::JS_OOM_ERROR, {"Properties", "Elements", "JS_OOM_ERROR"}},
282             {JSType::JS_PLURAL_RULES, {"Locale", "MinimumIntegerDigits",
283                                        "MinimumFractionDigits", "MaximumFractionDigits",
284                                        "MinimumSignificantDigits", "MaximumSignificantDigits",
285                                        "IcuPR", "IcuNF", "JS_PLURAL_RULES"}},
286             {JSType::JS_PRIMITIVE_REF, {"Value", "JS_PRIMITIVE_REF"}},
287             {JSType::JS_PROMISE, {"PromiseResult", "PromiseFulfillReactions", "PromiseRejectReactions", "JS_PROMISE"}},
288             {JSType::JS_PROMISE_ALL_RESOLVE_ELEMENT_FUNCTION, {"Index", "Values", "Capabilities", "RemainingElements",
289                                                                "AlreadyCalled",
290                                                                "JS_PROMISE_ALL_RESOLVE_ELEMENT_FUNCTION"}},
291             {JSType::JS_PROMISE_ALL_SETTLED_ELEMENT_FUNCTION, {"AlreadyCalled", "Values", "Capability",
292                                                                "RemainingElements",
293                                                                "JS_PROMISE_ALL_SETTLED_ELEMENT_FUNCTION"}},
294             {JSType::JS_PROMISE_ANY_REJECT_ELEMENT_FUNCTION, {"Errors", "Capability", "RemainingElements",
295                                                               "AlreadyCalled",
296                                                               "JS_PROMISE_ANY_REJECT_ELEMENT_FUNCTION"}},
297             {JSType::JS_PROMISE_EXECUTOR_FUNCTION, {"Capability", "JS_PROMISE_EXECUTOR_FUNCTION"}},
298             {JSType::JS_PROMISE_FINALLY_FUNCTION, {"Constructor", "OnFinally", "JS_PROMISE_FINALLY_FUNCTION"}},
299             {JSType::JS_PROMISE_REACTIONS_FUNCTION, {"Promise", "AlreadyResolved", "JS_PROMISE_REACTIONS_FUNCTION"}},
300             {JSType::JS_PROMISE_VALUE_THUNK_OR_THROWER_FUNCTION, {"Result",
301                                                                   "JS_PROMISE_VALUE_THUNK_OR_THROWER_FUNCTION"}},
302             {JSType::JS_PROXY, {"Target", "Handler", "Method", "PrivateField", "JS_PROXY"}},
303             {JSType::JS_PROXY_REVOC_FUNCTION, {"RevocableProxy", "JS_PROXY_REVOC_FUNCTION"}},
304             {JSType::JS_RANGE_ERROR, {"Properties", "Elements", "JS_RANGE_ERROR"}},
305             {JSType::JS_REALM, {"Value", "GlobalEnv", "JS_REALM"}},
306             {JSType::JS_REFERENCE_ERROR, {"Properties", "Elements", "JS_REFERENCE_ERROR"}},
307             {JSType::JS_REG_EXP, {"ByteCodeBuffer", "OriginalSource", "OriginalFlags", "GroupName", "JS_REG_EXP"}},
308             {JSType::JS_REG_EXP_ITERATOR, {"IteratingRegExp", "IteratedString", "JS_REG_EXP_ITERATOR"}},
309             {JSType::JS_RELATIVE_TIME_FORMAT, {"Locale", "NumberingSystem", "IcuField", "JS_RELATIVE_TIME_FORMAT"}},
310             {JSType::JS_SEGMENTER, {"Locale", "IcuField", "JS_SEGMENTER"}},
311             {JSType::JS_SEGMENTS, {"IcuField", "SegmentsString", "UnicodeString", "JS_SEGMENTS"}},
312             {JSType::JS_SEGMENT_ITERATOR, {"IcuField", "IteratedString", "UnicodeString", "JS_SEGMENT_ITERATOR"}},
313             {JSType::JS_SENDABLE_ARRAY_BUFFER, {"ArrayBufferData", "JS_SENDABLE_ARRAY_BUFFER"}},
314             {JSType::JS_SET, {"LinkedSet", "JS_SET"}},
315             {JSType::JS_SET_ITERATOR, {"IteratorSet", "JS_SET_ITERATOR"}},
316             {JSType::JS_SHARED_ARRAY, {"TrackInfo", "JS_SHARED_ARRAY"}},
317             {JSType::JS_SHARED_ARRAY_BUFFER, {"ArrayBufferData", "JS_SHARED_ARRAY_BUFFER"}},
318             {JSType::JS_SHARED_ARRAY_ITERATOR, {"IteratedArray", "JS_SHARED_ARRAY_ITERATOR"}},
319             {JSType::JS_SHARED_ASYNC_FUNCTION, {"JS_SHARED_ASYNC_FUNCTION"}},
320             {JSType::JS_SHARED_BIGINT64_ARRAY, {"JS_SHARED_BIGINT64_ARRAY"}},
321             {JSType::JS_SHARED_BIGUINT64_ARRAY, {"JS_SHARED_BIGUINT64_ARRAY"}},
322             {JSType::JS_SHARED_FLOAT32_ARRAY, {"JS_SHARED_FLOAT32_ARRAY"}},
323             {JSType::JS_SHARED_FLOAT64_ARRAY, {"JS_SHARED_FLOAT64_ARRAY"}},
324             {JSType::JS_SHARED_FUNCTION, {"JS_SHARED_FUNCTION"}},
325             {JSType::JS_SHARED_INT16_ARRAY, {"JS_SHARED_INT16_ARRAY"}},
326             {JSType::JS_SHARED_INT32_ARRAY, {"JS_SHARED_INT32_ARRAY"}},
327             {JSType::JS_SHARED_INT8_ARRAY, {"JS_SHARED_INT8_ARRAY"}},
328             {JSType::JS_SHARED_MAP, {"LinkedMap", "JS_SHARED_MAP"}},
329             {JSType::JS_SHARED_MAP_ITERATOR, {"IteratorMap", "JS_SHARED_MAP_ITERATOR"}},
330             {JSType::JS_SHARED_OBJECT, {"JS_SHARED_OBJECT"}},
331             {JSType::JS_SHARED_SET, {"LinkedSet", "JS_SHARED_SET"}},
332             {JSType::JS_SHARED_SET_ITERATOR, {"IteratorSet", "JS_SHARED_SET_ITERATOR"}},
333             {JSType::JS_SHARED_TYPED_ARRAY, {"JS_SHARED_TYPED_ARRAY"}},
334             {JSType::JS_SHARED_UINT16_ARRAY, {"JS_SHARED_UINT16_ARRAY"}},
335             {JSType::JS_SHARED_UINT32_ARRAY, {"JS_SHARED_UINT32_ARRAY"}},
336             {JSType::JS_SHARED_UINT8_ARRAY, {"JS_SHARED_UINT8_ARRAY"}},
337             {JSType::JS_SHARED_UINT8_CLAMPED_ARRAY, {"JS_SHARED_UINT8_CLAMPED_ARRAY"}},
338             {JSType::JS_STRING_ITERATOR, {"IteratedString", "JS_STRING_ITERATOR"}},
339             {JSType::JS_SYNTAX_ERROR, {"Properties", "Elements", "JS_SYNTAX_ERROR"}},
340             {JSType::JS_TERMINATION_ERROR, {"Properties", "Elements", "JS_TERMINATION_ERROR"}},
341             {JSType::JS_TYPED_ARRAY, {"ViewedArrayBufferOrByteArray", "TypedArrayName", "JS_TYPED_ARRAY"}},
342             {JSType::JS_TYPE_ERROR, {"Properties", "Elements", "JS_TYPE_ERROR"}},
343             {JSType::JS_UINT16_ARRAY, {"ViewedArrayBufferOrByteArray", "TypedArrayName", "JS_UINT16_ARRAY"}},
344             {JSType::JS_UINT32_ARRAY, {"ViewedArrayBufferOrByteArray", "TypedArrayName", "JS_UINT32_ARRAY"}},
345             {JSType::JS_UINT8_ARRAY, {"ViewedArrayBufferOrByteArray", "TypedArrayName", "JS_UINT8_ARRAY"}},
346             {JSType::JS_UINT8_CLAMPED_ARRAY, {"ViewedArrayBufferOrByteArray",
347                                               "TypedArrayName", "JS_UINT8_CLAMPED_ARRAY"}},
348             {JSType::JS_URI_ERROR, {"Properties", "Elements", "JS_URI_ERROR"}},
349             {JSType::JS_WEAK_MAP, {"LinkedMap", "JS_WEAK_MAP"}},
350             {JSType::JS_WEAK_REF, {"WeakObject", "JS_WEAK_REF"}},
351             {JSType::JS_WEAK_SET, {"LinkedSet", "JS_WEAK_SET"}},
352             {JSType::LEXICAL_ENV, {"LEXICAL_ENV"}},
353             {JSType::LINE_STRING, {"LINE_STRING"}},
354             {JSType::LINKED_NODE, {"Next", "LINKED_NODE"}},
355             {JSType::LOCAL_EXPORTENTRY_RECORD, {"ExportName", "LocalName", "LOCAL_EXPORTENTRY_RECORD"}},
356             {JSType::MACHINE_CODE_OBJECT, {"MACHINE_CODE_OBJECT"}},
357             {JSType::MARKER_CELL, {"MARKER_CELL"}},
358             {JSType::METHOD, {"ConstantPool", "METHOD"}},
359             {JSType::MICRO_JOB_QUEUE, {"PromiseJobQueue", "ScriptJobQueue", "MICRO_JOB_QUEUE"}},
360             {JSType::MODULE_RECORD, {"MODULE_RECORD"}},
361             {JSType::MUTANT_TAGGED_ARRAY, {"MUTANT_TAGGED_ARRAY"}},
362             {JSType::NATIVE_MODULE_FAILURE_INFO, {"ArkNativeModuleFailureInfo", "NATIVE_MODULE_FAILURE_INFO"}},
363             {JSType::PENDING_JOB, {"Job", "Arguments", "PENDING_JOB"}},
364             {JSType::PROFILE_TYPE_INFO, {"PROFILE_TYPE_INFO"}},
365             {JSType::PROFILE_TYPE_INFO_CELL_0, {"Value", "MachineCode", "BaselineCode", "Handle",
366                                                 "PROFILE_TYPE_INFO_CELL_0"}},
367             {JSType::PROFILE_TYPE_INFO_CELL_1, {"Value", "MachineCode", "BaselineCode", "Handle",
368                                                 "PROFILE_TYPE_INFO_CELL_1"}},
369             {JSType::PROFILE_TYPE_INFO_CELL_N, {"Value", "MachineCode", "BaselineCode", "Handle",
370                                                 "PROFILE_TYPE_INFO_CELL_N"}},
371             {JSType::PROGRAM, {"MainFunction", "PROGRAM"}},
372             {JSType::PROMISE_CAPABILITY, {"Promise", "Resolve", "Reject", "PROMISE_CAPABILITY"}},
373             {JSType::PROMISE_ITERATOR_RECORD, {"Iterator", "PROMISE_ITERATOR_RECORD"}},
374             {JSType::PROMISE_REACTIONS, {"PromiseCapability", "Handler", "PROMISE_REACTIONS"}},
375             {JSType::PROMISE_RECORD, {"Value", "PROMISE_RECORD"}},
376             {JSType::PROPERTY_BOX, {"Value", "PROPERTY_BOX"}},
377             {JSType::PROTOTYPE_HANDLER, {"HandlerInfo", "ProtoCell", "Holder",
378                                          "AccessorJSFunction", "PROTOTYPE_HANDLER"}},
379             {JSType::PROTOTYPE_INFO, {"ChangeListener", "PROTOTYPE_INFO"}},
380             {JSType::PROTO_CHANGE_MARKER, {"PROTO_CHANGE_MARKER"}},
381             {JSType::RB_TREENODE, {"Left", "Right", "IsRed", "RB_TREENODE"}},
382             {JSType::RESOLVEDBINDING_RECORD, {"Module", "BindingName", "RESOLVEDBINDING_RECORD"}},
383             {JSType::RESOLVEDINDEXBINDING_RECORD, {"Module", "Index", "RESOLVEDINDEXBINDING_RECORD"}},
384             {JSType::RESOLVEDRECORDBINDING_RECORD, {"ModuleRecord", "BindingName", "RESOLVEDRECORDBINDING_RECORD"}},
385             {JSType::RESOLVEDRECORDINDEXBINDING_RECORD, {"ModuleRecord",
386                                                          "AbcFileName", "RESOLVEDRECORDINDEXBINDING_RECORD"}},
387             {JSType::RESOLVING_FUNCTIONS_RECORD, {"ResolveFunction", "RejectFunction", "RESOLVING_FUNCTIONS_RECORD"}},
388             {JSType::SENDABLE_ENV, {"SENDABLE_ENV"}},
389             {JSType::SLICED_STRING, {"Parent", "SLICED_STRING"}},
390             {JSType::SOURCE_TEXT_MODULE_RECORD, {"Environment", "Namespace", "ModuleRequests", "RequestedModules",
391                                                  "ImportEntries", "LocalExportEntries",
392                                                  "IndirectExportEntries", "StarExportEntries",
393                                                  "NameDictionary", "CycleRoot", "TopLevelCapability",
394                                                  "AsyncParentModules", "SendableEnv", "Exception",
395                                                  "SOURCE_TEXT_MODULE_RECORD"}},
396             {JSType::STAR_EXPORTENTRY_RECORD, {"ModuleRequest", "STAR_EXPORTENTRY_RECORD"}},
397             {JSType::STORE_TS_HANDLER, {"HandlerInfo", "ProtoCell", "Holder", "STORE_TS_HANDLER"}},
398             {JSType::SYMBOL, {"Description", "SYMBOL"}},
399             {JSType::TAGGED_ARRAY, {"Length", "Data", "TAGGED_ARRAY"}},
400             {JSType::TAGGED_DICTIONARY, {"TAGGED_DICTIONARY"}},
401             {JSType::TEMPLATE_MAP, {"TEMPLATE_MAP"}},
402             {JSType::TRACK_INFO, {"CachedHClass", "CachedFunc", "TRACK_INFO"}},
403             {JSType::TRANSITION_HANDLER, {"HandlerInfo", "TransitionHClass", "TRANSITION_HANDLER"}},
404             {JSType::TRANS_WITH_PROTO_HANDLER, {"HandlerInfo", "TransitionHClass",
405                                                 "ProtoCell", "TRANS_WITH_PROTO_HANDLER"}},
406             {JSType::TREE_STRING, {"First", "Second", "TREE_STRING"}},
407             {JSType::VTABLE, {"VTABLE"}}
408         };
409         // { typeName: [all fields' start offset of this type in the same order as declared in .h files + endOffset] }
410         // endOffset: LAST_OFFSET - (start offset of the first field of this type)
411         fieldOffsetTable_ = {
412             {JSType::HCLASS, {
413                 JSHClass::PROTOTYPE_OFFSET, JSHClass::LAYOUT_OFFSET, JSHClass::TRANSTIONS_OFFSET,
414                 JSHClass::PARENT_OFFSET, JSHClass::PROTO_CHANGE_MARKER_OFFSET,
415                 JSHClass::PROTO_CHANGE_DETAILS_OFFSET,
416                 JSHClass::ENUM_CACHE_OFFSET, JSHClass::PROFILE_TYPE,
417                 JSHClass::BIT_FIELD_OFFSET, JSHClass::BIT_FIELD1_OFFSET,
418                 JSHClass::LAST_OFFSET - JSHClass::PROTOTYPE_OFFSET}},
419             {JSType::ACCESSOR_DATA, {AccessorData::GETTER_OFFSET, AccessorData::SETTER_OFFSET,
420                                      AccessorData::SIZE - AccessorData::GETTER_OFFSET}},
421             {JSType::AOT_LITERAL_INFO, {TaggedArray::LAST_OFFSET - TaggedArray::LENGTH_OFFSET}},
422             {JSType::ASYNC_GENERATOR_REQUEST, {
423                 AsyncGeneratorRequest::COMPLETION_OFFSET,
424                 AsyncGeneratorRequest::CAPABILITY_OFFSET,
425                 AsyncGeneratorRequest::SIZE - AsyncGeneratorRequest::COMPLETION_OFFSET}},
426             {JSType::ASYNC_ITERATOR_RECORD, {AsyncIteratorRecord::ITERATOR_OFFSET,
427                                              AsyncIteratorRecord::NEXTMETHOD_OFFSET,
428                                              AsyncIteratorRecord::SIZE - AsyncIteratorRecord::ITERATOR_OFFSET}},
429             {JSType::BIGINT, {BigInt::LAST_OFFSET - BigInt::LENGTH_OFFSET}},
430             {JSType::BYTE_ARRAY, {ByteArray::LAST_OFFSET - ByteArray::ARRAY_LENGTH_OFFSET}},
431             {JSType::CELL_RECORD, {CellRecord::WEAKREF_TARGET_OFFSET,
432                                    CellRecord::HELD_VALUE_OFFSET,
433                                    CellRecord::SIZE - CellRecord::WEAKREF_TARGET_OFFSET}},
434             {JSType::CLASS_INFO_EXTRACTOR, {
435                 ClassInfoExtractor::PROTOTYPE_HCLASS_OFFSET,
436                 ClassInfoExtractor::NON_STATIC_PROPERTIES_OFFSET,
437                 ClassInfoExtractor::NON_STATIC_ELEMENTS_OFFSET,
438                 ClassInfoExtractor::CONSTRUCTOR_HCLASS_OFFSET,
439                 ClassInfoExtractor::STATIC_PROPERTIES_OFFSET,
440                 ClassInfoExtractor::STATIC_ELEMENTS_OFFSET,
441                 ClassInfoExtractor::CONSTRUCTOR_METHOD_OFFSET,
442                 ClassInfoExtractor::SIZE - ClassInfoExtractor::PROTOTYPE_HCLASS_OFFSET}},
443             {JSType::CLASS_LITERAL, {ClassLiteral::ARRAY_OFFSET,
444                                      ClassLiteral::SIZE - ClassLiteral::ARRAY_OFFSET}},
445             {JSType::COMPLETION_RECORD, {CompletionRecord::VALUE_OFFSET,
446                                          CompletionRecord::SIZE - CompletionRecord::VALUE_OFFSET}},
447             {JSType::CONSTANT_POOL, {0}},
448             {JSType::CONSTANT_STRING, {ConstantString::RELOCTAED_DATA_OFFSET,
449                                        ConstantString::LAST_OFFSET - ConstantString::RELOCTAED_DATA_OFFSET}},
450             {JSType::COW_MUTANT_TAGGED_ARRAY, {0}},
451             {JSType::COW_TAGGED_ARRAY, {0}},
452             {JSType::EXTRA_PROFILE_TYPE_INFO, {
453                 ExtraProfileTypeInfo::RECEIVER_OBJECT_OFFSET,
454                 ExtraProfileTypeInfo::HOLDER_OBJECT_OFFSET,
455                 ExtraProfileTypeInfo::LAST_OFFSET - ExtraProfileTypeInfo::RECEIVER_OBJECT_OFFSET}},
456             {JSType::FUNCTION_TEMPLATE, {FunctionTemplate::METHOD_OFFSET,
457                                          FunctionTemplate::MODULE_OFFSET,
458                                          FunctionTemplate::RAW_PROFILE_TYPE_INFO_OFFSET,
459                                          FunctionTemplate::SIZE - FunctionTemplate::METHOD_OFFSET}},
460             {JSType::GLOBAL_ENV, {GlobalEnv::SIZE - GlobalEnv::HEADER_SIZE}},
461             {JSType::IMPORTENTRY_RECORD, {ImportEntry::IMPORT_ENTRY_OFFSET,
462                                           ImportEntry::LOCAL_NAME_OFFSET,
463                                           ImportEntry::MODULE_REQUEST_INDEX_OFFSET,
464                                           ImportEntry::SIZE - ImportEntry::IMPORT_ENTRY_OFFSET}},
465             {JSType::INDIRECT_EXPORTENTRY_RECORD, {
466                 IndirectExportEntry::INDIRECT_EXPORT_ENTRY_OFFSET,
467                 IndirectExportEntry::IMPORT_NAME_OFFSET,
468                 IndirectExportEntry::MODULE_REQUEST_INDEX_OFFSET,
469                 IndirectExportEntry::SIZE - IndirectExportEntry::INDIRECT_EXPORT_ENTRY_OFFSET}},
470             {JSType::INTERNAL_ACCESSOR, {InternalAccessor::GETTER_OFFSET,
471                                          InternalAccessor::SETTER_OFFSET,
472                                          InternalAccessor::SIZE - InternalAccessor::GETTER_OFFSET}},
473             {JSType::JS_AGGREGATE_ERROR, {JSObject::PROPERTIES_OFFSET,
474                                           JSObject::ELEMENTS_OFFSET,
475                                           JSObject::SIZE - JSObject::PROPERTIES_OFFSET}},
476             {JSType::JS_API_ARRAYLIST_ITERATOR, {
477                 JSAPIArrayListIterator::ITERATED_ARRAYLIST_OFFSET,
478                 JSAPIArrayListIterator::SIZE - JSAPIArrayListIterator::ITERATED_ARRAYLIST_OFFSET}},
479             {JSType::JS_API_ARRAY_LIST, {JSAPIArrayList::LENGTH_OFFSET,
480                                          JSAPIArrayList::SIZE - JSAPIArrayList::LENGTH_OFFSET}},
481             {JSType::JS_API_BITVECTOR, {JSAPIBitVector::NATIVE_POINTER_OFFSET,
482                                         JSAPIBitVector::LAST_OFFSET - JSAPIBitVector::NATIVE_POINTER_OFFSET}},
483             {JSType::JS_API_BITVECTOR_ITERATOR, {
484                 JSAPIBitVectorIterator::ITERATED_BITVECTOR_OFFSET,
485                 JSAPIBitVectorIterator::SIZE - JSAPIBitVectorIterator::ITERATED_BITVECTOR_OFFSET}},
486             {JSType::JS_API_DEQUE, {JSAPIDeque::ENDL_OFFSET - JSAPIDeque::FIRST_OFFSET}},
487             {JSType::JS_API_DEQUE_ITERATOR, {JSAPIDequeIterator::ITERATED_DEQUE_OFFSET,
488                                              JSAPIDequeIterator::SIZE - JSAPIDequeIterator::ITERATED_DEQUE_OFFSET}},
489             {JSType::JS_API_HASHMAP_ITERATOR, {
490                 JSAPIHashMapIterator::ITERATED_HASHMAP_OFFSET,
491                 JSAPIHashMapIterator::TAGGED_QUEUE_OFFSET,
492                 JSAPIHashMapIterator::CURRENT_NODE_RESULT,
493                 JSAPIHashMapIterator::LAST_OFFSET - JSAPIHashMapIterator::ITERATED_HASHMAP_OFFSET}},
494             {JSType::JS_API_HASHSET_ITERATOR, {
495                 JSAPIHashSetIterator::ITERATED_HASHSET_OFFSET,
496                 JSAPIHashSetIterator::TAGGED_QUEUE_OFFSET,
497                 JSAPIHashSetIterator::CURRENT_NODE_RESULT,
498                 JSAPIHashSetIterator::SIZE - JSAPIHashSetIterator::ITERATED_HASHSET_OFFSET}},
499             {JSType::JS_API_HASH_MAP, {JSAPIHashMap::HASHMAP_TABLE_INDEX,
500                                        JSAPIHashMap::SIZE - JSAPIHashMap::HASHMAP_TABLE_INDEX}},
501             {JSType::JS_API_HASH_SET, {JSAPIHashSet::HASHSET_TABLE_INDEX,
502                                        JSAPIHashSet::SIZE - JSAPIHashSet::HASHSET_TABLE_INDEX}},
503             {JSType::JS_API_LIGHT_WEIGHT_MAP, {
504                 JSAPILightWeightMap::LWP_HASHES_OFFSET,
505                 JSAPILightWeightMap::LWP_KEYS_OFFSET,
506                 JSAPILightWeightMap::LWP_VALUES_OFFSET,
507                 JSAPILightWeightMap::SIZE - JSAPILightWeightMap::LWP_HASHES_OFFSET}},
508             {JSType::JS_API_LIGHT_WEIGHT_MAP_ITERATOR, {
509                 JSAPILightWeightMapIterator::ITERATED_LIGHT_WEIGHT_MAP_OFFSET,
510                 JSAPILightWeightMapIterator::LAST_OFFSET - JSAPILightWeightMapIterator::ITERATED_LIGHT_WEIGHT_MAP_OFFSET}},
511             {JSType::JS_API_LIGHT_WEIGHT_SET, {
512                 JSAPILightWeightSet::HASHES_OFFSET,
513                 JSAPILightWeightSet::VALUES_OFFSET,
514                 JSAPILightWeightSet::SIZE - JSAPILightWeightSet::HASHES_OFFSET}},
515             {JSType::JS_API_LIGHT_WEIGHT_SET_ITERATOR, {
516                 JSAPILightWeightSetIterator::ITERATED_LIGHT_WEIGHT_SET_OFFSET,
517                 JSAPILightWeightSetIterator::LAST_OFFSET - JSAPILightWeightSetIterator::ITERATED_LIGHT_WEIGHT_SET_OFFSET}},
518             {JSType::JS_API_LINKED_LIST, {JSAPILinkedList::DOUBLE_LIST_OFFSET,
519                                           JSAPILinkedList::SIZE - JSAPILinkedList::DOUBLE_LIST_OFFSET}},
520             {JSType::JS_API_LINKED_LIST_ITERATOR, {
521                 JSAPILinkedListIterator::ITERATED_LINKED_LIST_OFFSET,
522                 JSAPILinkedListIterator::LAST_OFFSET - JSAPILinkedListIterator::ITERATED_LINKED_LIST_OFFSET}},
523             {JSType::JS_API_LIST, {JSAPIList::SINGLY_LIST_OFFSET,
524                                    JSAPIList::SIZE - JSAPIList::SINGLY_LIST_OFFSET}},
525             {JSType::JS_API_LIST_ITERATOR, {
526                 JSAPIListIterator::ITERATED_LIST_OFFSET,
527                 JSAPIListIterator::LAST_OFFSET - JSAPIListIterator::ITERATED_LIST_OFFSET}},
528             {JSType::JS_API_PLAIN_ARRAY, {JSAPIPlainArray::KEYS_OFFSET,
529                                           JSAPIPlainArray::VALUES_OFFSET,
530                                           JSAPIPlainArray::SIZE - JSAPIPlainArray::KEYS_OFFSET}},
531             {JSType::JS_API_PLAIN_ARRAY_ITERATOR, {
532                 JSAPIPlainArrayIterator::ITERATED_PLAIN_ARRAY_OFFSET,
533                 JSAPIPlainArrayIterator::LAST_OFFSET - JSAPIPlainArrayIterator::ITERATED_PLAIN_ARRAY_OFFSET}},
534             {JSType::JS_API_QUEUE, {JSAPIQueue::LENGTH_OFFSET,
535                                     JSAPIQueue::LAST_OFFSET - JSAPIQueue::LENGTH_OFFSET}},
536             {JSType::JS_API_QUEUE_ITERATOR, {
537                 JSAPIQueueIterator::ITERATED_QUEUE_OFFSET,
538                 JSAPIQueueIterator::SIZE - JSAPIQueueIterator::ITERATED_QUEUE_OFFSET}},
539             {JSType::JS_API_STACK, {JSAPIStack::SIZE - JSAPIStack::TOP_OFFSET}},
540             {JSType::JS_API_STACK_ITERATOR, {
541                 JSAPIStackIterator::ITERATED_STACK_OFFSET,
542                 JSAPIStackIterator::SIZE - JSAPIStackIterator::ITERATED_STACK_OFFSET}},
543             {JSType::JS_API_TREEMAP_ITERATOR, {
544                 JSAPITreeMapIterator::ITERATED_MAP_OFFSET,
545                 JSAPITreeMapIterator::ITERATED_ENTRIES_OFFSET,
546                 JSAPITreeMapIterator::LAST_OFFSET - JSAPITreeMapIterator::ITERATED_MAP_OFFSET}},
547             {JSType::JS_API_TREESET_ITERATOR, {
548                 JSAPITreeSetIterator::ITERATED_SET_OFFSET,
549                 JSAPITreeSetIterator::ITERATED_ENTRIES_OFFSET,
550                 JSAPITreeSetIterator::LAST_OFFSET - JSAPITreeSetIterator::ITERATED_SET_OFFSET}},
551             {JSType::JS_API_TREE_MAP, {JSAPITreeMap::TREE_MAP_OFFSET,
552                                        JSAPITreeMap::SIZE - JSAPITreeMap::TREE_MAP_OFFSET}},
553             {JSType::JS_API_TREE_SET, {JSAPITreeSet::TREE_SET_OFFSET,
554                                        JSAPITreeSet::SIZE - JSAPITreeSet::TREE_SET_OFFSET}},
555             {JSType::JS_API_VECTOR, {JSAPIVector::SIZE - JSAPIVector::ELEMENT_COUNT_OFFSET}},
556             {JSType::JS_API_VECTOR_ITERATOR, {
557                 JSAPIVectorIterator::ITERATED_VECTOR_OFFSET,
558                 JSAPIVectorIterator::SIZE - JSAPIVectorIterator::ITERATED_VECTOR_OFFSET}},
559             {JSType::JS_ARGUMENTS, {0}},
560             {JSType::JS_ARRAY, {JSArray::LENGTH_OFFSET,
561                                 JSArray::TRACK_INFO_OFFSET,
562                                 JSArray::SIZE - JSArray::LENGTH_OFFSET}},
563             {JSType::JS_ARRAY_BUFFER, {JSArrayBuffer::DATA_OFFSET,
564                                        JSArrayBuffer::LAST_OFFSET - JSArrayBuffer::DATA_OFFSET}},
565             {JSType::JS_ARRAY_ITERATOR, {JSArrayIterator::ITERATED_ARRAY_OFFSET,
566                                          JSArrayIterator::LAST_OFFSET - JSArrayIterator::ITERATED_ARRAY_OFFSET}},
567             {JSType::JS_ASYNCITERATOR, {JSObject::PROPERTIES_OFFSET,
568                                         JSObject::ELEMENTS_OFFSET,
569                                         JSObject::SIZE - JSObject::PROPERTIES_OFFSET}},
570             {JSType::JS_ASYNC_AWAIT_STATUS_FUNCTION, {
571                 JSAsyncAwaitStatusFunction::ASYNC_CONTEXT_OFFSET,
572                 JSAsyncAwaitStatusFunction::SIZE - JSAsyncAwaitStatusFunction::ASYNC_CONTEXT_OFFSET}},
573             {JSType::JS_ASYNC_FROM_SYNC_ITERATOR, {
574                 JSAsyncFromSyncIterator::SYNC_ITERATOR_RECORD,
575                 JSAsyncFromSyncIterator::SIZE - JSAsyncFromSyncIterator::SYNC_ITERATOR_RECORD}},
576             {JSType::JS_ASYNC_FROM_SYNC_ITER_UNWARP_FUNCTION, {
577                 JSAsyncFromSyncIterUnwarpFunction::DONE_OFFSET,
578                 JSAsyncFromSyncIterUnwarpFunction::SIZE - JSAsyncFromSyncIterUnwarpFunction::DONE_OFFSET}},
579             {JSType::JS_ASYNC_FUNCTION, {JSAsyncFunction::SIZE - JSAsyncFunction::SIZE}},
580             {JSType::JS_ASYNC_FUNC_OBJECT, {JSAsyncFuncObject::GENERATOR_PROMISE_OFFSET,
581                                             JSAsyncFuncObject::SIZE - JSAsyncFuncObject::GENERATOR_PROMISE_OFFSET}},
582             {JSType::JS_ASYNC_GENERATOR_FUNCTION, {JSAsyncGeneratorFunction::SIZE - JSAsyncGeneratorFunction::SIZE}},
583             {JSType::JS_ASYNC_GENERATOR_OBJECT, {
584                 JSAsyncGeneratorObject::GENERATOR_CONTEXT_OFFSET,
585                 JSAsyncGeneratorObject::ASYNC_GENERATOR_QUEUE_OFFSET,
586                 JSAsyncGeneratorObject::GENERATOR_OFFSET,
587                 JSAsyncGeneratorObject::GENERATOR_RESUME_RESULT_OFFSET,
588                 JSAsyncGeneratorObject::SIZE - JSAsyncGeneratorObject::GENERATOR_CONTEXT_OFFSET}},
589             {JSType::JS_ASYNC_GENERATOR_RESUME_NEXT_RETURN_PROCESSOR_RST_FTN, {
590                 JSAsyncGeneratorResNextRetProRstFtn::ASYNC_GENERATOR_OBJECT_OFFSET,
591                 JSAsyncGeneratorResNextRetProRstFtn::SIZE - JSAsyncGeneratorResNextRetProRstFtn::ASYNC_GENERATOR_OBJECT_OFFSET}},
592             {JSType::JS_ASYNC_MODULE_FULFILLED_FUNCTION, {
593                 JSAsyncModuleFulfilledFunction::SIZE - JSAsyncModuleFulfilledFunction::SIZE}},
594             {JSType::JS_ASYNC_MODULE_REJECTED_FUNCTION, {
595                 JSAsyncModuleRejectedFunction::SIZE - JSAsyncModuleRejectedFunction::SIZE}},
596             {JSType::JS_BIGINT64_ARRAY, {JSTypedArray::VIEWED_ARRAY_BUFFER_OFFSET,
597                                          JSTypedArray::TYPED_ARRAY_NAME_OFFSET,
598                                          JSTypedArray::SIZE - JSTypedArray::VIEWED_ARRAY_BUFFER_OFFSET}},
599             {JSType::JS_BIGUINT64_ARRAY, {JSTypedArray::VIEWED_ARRAY_BUFFER_OFFSET,
600                                           JSTypedArray::TYPED_ARRAY_NAME_OFFSET,
601                                           JSTypedArray::SIZE - JSTypedArray::VIEWED_ARRAY_BUFFER_OFFSET}},
602             {JSType::JS_BOUND_FUNCTION, {JSBoundFunction::BOUND_TARGET_OFFSET,
603                                          JSBoundFunction::BOUND_THIS_OFFSET,
604                                          JSBoundFunction::BOUND_ARGUMENTS_OFFSET,
605                                          JSBoundFunction::SIZE - JSBoundFunction::BOUND_TARGET_OFFSET}},
606             {JSType::JS_CJS_EXPORTS, {CjsExports::JS_CJS_EXPORTS_OFFSET,
607                                       CjsExports::SIZE - CjsExports::JS_CJS_EXPORTS_OFFSET}},
608             {JSType::JS_CJS_MODULE, {CjsModule::JS_CJS_MODULE_OFFSET,
609                                      CjsModule::ID_OFFSET,
610                                      CjsModule::PATH_OFFSET,
611                                      CjsModule::EXPORTS_OFFSET,
612                                      CjsModule::SIZE - CjsModule::JS_CJS_MODULE_OFFSET}},
613             {JSType::JS_CJS_REQUIRE, {CjsRequire::JS_CJS_REQUIRE_OFFSET,
614                                       CjsRequire::CACHE_OFFSET,
615                                       CjsRequire::SIZE - CjsRequire::JS_CJS_REQUIRE_OFFSET}},
616             {JSType::JS_COLLATOR, {JSCollator::ICU_FIELD_OFFSET,
617                                    JSCollator::LOCALE_OFFSET,
618                                    JSCollator::COLLATION_OFFSET,
619                                    JSCollator::BOUND_COMPARE_OFFSET,
620                                    JSCollator::SIZE - JSCollator::ICU_FIELD_OFFSET}},
621             {JSType::JS_DATA_VIEW, {JSDataView::DATA_VIEW_OFFSET,
622                                     JSDataView::VIEW_ARRAY_BUFFER_OFFSET,
623                                     JSDataView::LAST_OFFSET - JSDataView::DATA_VIEW_OFFSET}},
624             {JSType::JS_DATE, {JSDate::TIME_VALUE_OFFSET,
625                                JSDate::LOCAL_TIME_OFFSET,
626                                JSDate::SIZE - JSDate::TIME_VALUE_OFFSET}},
627             {JSType::JS_DATE_TIME_FORMAT, {JSDateTimeFormat::LOCALE_OFFSET,
628                                            JSDateTimeFormat::CALENDAR_OFFSET,
629                                            JSDateTimeFormat::NUMBER_STRING_SYSTEM_OFFSET,
630                                            JSDateTimeFormat::TIME_ZONE_OFFSET,
631                                            JSDateTimeFormat::LOCALE_ICU_OFFSET,
632                                            JSDateTimeFormat::SIMPLE_DATE_TIME_FORMAT_ICU_OFFSET,
633                                            JSDateTimeFormat::ISO8601_OFFSET,
634                                            JSDateTimeFormat::BOUND_FORMAT_OFFSET,
635                                            JSDateTimeFormat::SIZE - JSDateTimeFormat::LOCALE_OFFSET}},
636             {JSType::JS_DISPLAYNAMES, {JSDisplayNames::LOCALE_OFFSET,
637                                        JSDisplayNames::ICU_LOCALE_DISPPLAY_NAMES,
638                                        JSDisplayNames::SIZE - JSDisplayNames::LOCALE_OFFSET}},
639             {JSType::JS_ERROR, {JSObject::PROPERTIES_OFFSET,
640                                 JSObject::ELEMENTS_OFFSET,
641                                 JSObject::SIZE - JSObject::PROPERTIES_OFFSET}},
642             {JSType::JS_EVAL_ERROR, {JSObject::PROPERTIES_OFFSET,
643                                      JSObject::ELEMENTS_OFFSET,
644                                      JSObject::SIZE - JSObject::PROPERTIES_OFFSET}},
645             {JSType::JS_FINALIZATION_REGISTRY, {
646                 JSFinalizationRegistry::CLEANUP_CALLBACK_OFFSET,
647                 JSFinalizationRegistry::NO_UNREGISTER_OFFSET,
648                 JSFinalizationRegistry::MAYBE_UNREGISTER_OFFSET,
649                 JSFinalizationRegistry::NEXT_OFFSET,
650                 JSFinalizationRegistry::PREV_OFFSET,
651                 JSFinalizationRegistry::SIZE - JSFinalizationRegistry::CLEANUP_CALLBACK_OFFSET}},
652             {JSType::JS_FLOAT32_ARRAY, {JSTypedArray::VIEWED_ARRAY_BUFFER_OFFSET,
653                                         JSTypedArray::TYPED_ARRAY_NAME_OFFSET,
654                                         JSTypedArray::SIZE - JSTypedArray::VIEWED_ARRAY_BUFFER_OFFSET}},
655             {JSType::JS_FLOAT64_ARRAY, {JSTypedArray::VIEWED_ARRAY_BUFFER_OFFSET,
656                                         JSTypedArray::TYPED_ARRAY_NAME_OFFSET,
657                                         JSTypedArray::SIZE - JSTypedArray::VIEWED_ARRAY_BUFFER_OFFSET}},
658             {JSType::JS_FORIN_ITERATOR, {JSForInIterator::OBJECT_OFFSET,
659                                          JSForInIterator::CACHED_HCLASS_OFFSET,
660                                          JSForInIterator::KEYS_OFFSET,
661                                          JSForInIterator::LAST_OFFSET - JSForInIterator::OBJECT_OFFSET}},
662             {JSType::JS_FUNCTION, {JSFunction::PROTO_OR_DYNCLASS_OFFSET,
663                                    JSFunction::LEXICAL_ENV_OFFSET,
664                                    JSFunction::MACHINECODE_OFFSET,
665                                    JSFunction::BASELINECODE_OFFSET,
666                                    JSFunction::RAW_PROFILE_TYPE_INFO_OFFSET,
667                                    JSFunction::HOME_OBJECT_OFFSET,
668                                    JSFunction::ECMA_MODULE_OFFSET,
669                                    JSFunction::LAST_OFFSET - JSFunction::PROTO_OR_DYNCLASS_OFFSET}},
670             {JSType::JS_FUNCTION_BASE, {JSFunctionBase::METHOD_OFFSET,
671                                         JSFunctionBase::LAST_OFFSET - JSFunctionBase::METHOD_OFFSET}},
672             {JSType::JS_GENERATOR_CONTEXT, {
673                 GeneratorContext::GENERATOR_REGS_ARRAY_OFFSET,
674                 GeneratorContext::GENERATOR_METHOD_OFFSET,
675                 GeneratorContext::GENERATOR_THIS_OFFSET,
676                 GeneratorContext::GENERATOR_ACC_OFFSET,
677                 GeneratorContext::GENERATOR_GENERATOR_OBJECT_OFFSET,
678                 GeneratorContext::GENERATOR_LEXICALENV_OFFSET,
679                 GeneratorContext::LAST_OFFSET - GeneratorContext::GENERATOR_REGS_ARRAY_OFFSET}},
680             {JSType::JS_GENERATOR_FUNCTION, {JSGeneratorFunction::SIZE - JSGeneratorFunction::SIZE}},
681             {JSType::JS_GENERATOR_OBJECT, {
682                 JSGeneratorObject::GENERATOR_CONTEXT_OFFSET,
683                 JSGeneratorObject::GENERATOR_RESUME_RESULT_OFFSET,
684                 JSGeneratorObject::SIZE - JSGeneratorObject::GENERATOR_CONTEXT_OFFSET}},
685             {JSType::JS_GLOBAL_OBJECT, {JSGlobalObject::SIZE - JSGlobalObject::SIZE}},
686             {JSType::JS_INT16_ARRAY, {JSTypedArray::VIEWED_ARRAY_BUFFER_OFFSET,
687                                       JSTypedArray::TYPED_ARRAY_NAME_OFFSET,
688                                       JSTypedArray::SIZE - JSTypedArray::VIEWED_ARRAY_BUFFER_OFFSET}},
689             {JSType::JS_INT32_ARRAY, {JSTypedArray::VIEWED_ARRAY_BUFFER_OFFSET,
690                                       JSTypedArray::TYPED_ARRAY_NAME_OFFSET,
691                                       JSTypedArray::SIZE - JSTypedArray::VIEWED_ARRAY_BUFFER_OFFSET}},
692             {JSType::JS_INT8_ARRAY, {JSTypedArray::VIEWED_ARRAY_BUFFER_OFFSET,
693                                      JSTypedArray::TYPED_ARRAY_NAME_OFFSET,
694                                      JSTypedArray::SIZE - JSTypedArray::VIEWED_ARRAY_BUFFER_OFFSET}},
695             {JSType::JS_INTL, {JSIntl::FALLBACK_SYMBOL,
696                                JSIntl::SIZE - JSIntl::FALLBACK_SYMBOL}},
697             {JSType::JS_INTL_BOUND_FUNCTION, {JSIntlBoundFunction::NUMBER_FORMAT_OFFSET,
698                                               JSIntlBoundFunction::DATETIME_FORMAT_OFFSET,
699                                               JSIntlBoundFunction::COLLATOR_OFFSET,
700                                               JSIntlBoundFunction::SIZE - JSIntlBoundFunction::NUMBER_FORMAT_OFFSET}},
701             {JSType::JS_ITERATOR, {JSObject::PROPERTIES_OFFSET,
702                                    JSObject::ELEMENTS_OFFSET,
703                                    JSObject::SIZE - JSObject::PROPERTIES_OFFSET}},
704             {JSType::JS_LIST_FORMAT, {JSListFormat::LOCALE_OFFSET,
705                                       JSListFormat::ICU_LIST_FORMAT,
706                                       JSListFormat::SIZE - JSListFormat::LOCALE_OFFSET}},
707             {JSType::JS_LOCALE, {JSLocale::ICU_FIELD_OFFSET,
708                                  JSLocale::SIZE - JSLocale::ICU_FIELD_OFFSET}},
709             {JSType::JS_MAP, {JSMap::LINKED_MAP_OFFSET,
710                               JSMap::SIZE - JSMap::LINKED_MAP_OFFSET}},
711             {JSType::JS_MAP_ITERATOR, {JSMapIterator::ITERATED_MAP_OFFSET,
712                                        JSMapIterator::LAST_OFFSET - JSMapIterator::ITERATED_MAP_OFFSET}},
713             {JSType::JS_MODULE_NAMESPACE, {ModuleNamespace::MODULE_OFFSET,
714                                            ModuleNamespace::EXPORTS_OFFSET,
715                                            ModuleNamespace::DEREGISTER_PROCESSION_OFFSET,
716                                            ModuleNamespace::SIZE - ModuleNamespace::MODULE_OFFSET}},
717             {JSType::JS_NATIVE_POINTER, {JSNativePointer::DATA_SIZE_OFFSET,
718                                          JSNativePointer::LAST_OFFSET - JSNativePointer::POINTER_OFFSET}},
719             {JSType::JS_NUMBER_FORMAT, {JSNumberFormat::LOCALE_OFFSET,
720                                         JSNumberFormat::NUMBER_STRING_SYSTEM_OFFSET,
721                                         JSNumberFormat::CURRENCY_OFFSET,
722                                         JSNumberFormat::UNIT_OFFSET,
723                                         JSNumberFormat::MINIMUM_INTEGER_DIGITS_OFFSET,
724                                         JSNumberFormat::MINIMUM_FRACTION_DIGITS_OFFSET,
725                                         JSNumberFormat::MAXIMUM_FRACTION_DIGITS_OFFSET,
726                                         JSNumberFormat::MINIMUM_SIGNIFICANT_DIGITS_OFFSET,
727                                         JSNumberFormat::MAXIMUM_SIGNIFICANT_DIGITS_OFFSET,
728                                         JSNumberFormat::USER_GROUPING_OFFSET,
729                                         JSNumberFormat::BOUND_FORMAT_OFFSET,
730                                         JSNumberFormat::ICU_FIELD_OFFSET,
731                                         JSNumberFormat::SIZE - JSNumberFormat::LOCALE_OFFSET}},
732             {JSType::JS_OBJECT, {JSObject::PROPERTIES_OFFSET,
733                                  JSObject::ELEMENTS_OFFSET,
734                                  JSObject::SIZE - JSObject::PROPERTIES_OFFSET}},
735             {JSType::JS_OOM_ERROR, {JSObject::PROPERTIES_OFFSET,
736                                     JSObject::ELEMENTS_OFFSET,
737                                     JSObject::SIZE - JSObject::PROPERTIES_OFFSET}},
738             {JSType::JS_PLURAL_RULES, {JSPluralRules::LOCALE_OFFSET,
739                                        JSPluralRules::MINIMUM_INTEGER_DIGITS_OFFSET,
740                                        JSPluralRules::MINIMUM_FRACTION_DIGITS_OFFSET,
741                                        JSPluralRules::MAXIMUM_FRACTION_DIGITS_OFFSET,
742                                        JSPluralRules::MININUM_SIGNIFICANT_DIGITS_OFFSET,
743                                        JSPluralRules::MAXINUM_SIGNIFICANT_DIGITS_OFFSET,
744                                        JSPluralRules::ICU_PLURAL_RULES_OFFSET,
745                                        JSPluralRules::ICU_NUMBER_FORMAT_OFFSET,
746                                        JSPluralRules::SIZE - JSPluralRules::LOCALE_OFFSET}},
747             {JSType::JS_PRIMITIVE_REF, {JSPrimitiveRef::VALUE_OFFSET,
748                                         JSPrimitiveRef::SIZE - JSPrimitiveRef::VALUE_OFFSET}},
749             {JSType::JS_PROMISE, {JSPromise::PROMISE_RESULT_OFFSET,
750                                   JSPromise::PROMISE_FULFILL_REACTIONS_OFFSET,
751                                   JSPromise::PROMISE_REJECT_REACTIONS_OFFSET,
752                                   JSPromise::SIZE - JSPromise::PROMISE_RESULT_OFFSET}},
753             {JSType::JS_PROMISE_ALL_RESOLVE_ELEMENT_FUNCTION, {
754                 JSPromiseAllResolveElementFunction::INDEX_OFFSET,
755                 JSPromiseAllResolveElementFunction::VALUES_OFFSET,
756                 JSPromiseAllResolveElementFunction::CAPABILITIES_OFFSET,
757                 JSPromiseAllResolveElementFunction::REMAINING_ELEMENTS_OFFSET,
758                 JSPromiseAllResolveElementFunction::ALREADY_CALLED_OFFSET,
759                 JSPromiseAllResolveElementFunction::SIZE - JSPromiseAllResolveElementFunction::INDEX_OFFSET}},
760             {JSType::JS_PROMISE_ALL_SETTLED_ELEMENT_FUNCTION, {
761                 JSPromiseAllSettledElementFunction::ALREADY_CALLED_OFFSET,
762                 JSPromiseAllSettledElementFunction::VALUES_OFFSET,
763                 JSPromiseAllSettledElementFunction::CAPABILITY_OFFSET,
764                 JSPromiseAllSettledElementFunction::REMAINING_ELEMENTS_OFFSET,
765                 JSPromiseAllSettledElementFunction::SIZE - JSPromiseAllSettledElementFunction::ALREADY_CALLED_OFFSET}},
766             {JSType::JS_PROMISE_ANY_REJECT_ELEMENT_FUNCTION, {
767                 JSPromiseAnyRejectElementFunction::ERRORS_OFFSET,
768                 JSPromiseAnyRejectElementFunction::CAPABILITY_OFFSET,
769                 JSPromiseAnyRejectElementFunction::REMAINING_ELEMENTS_OFFSET,
770                 JSPromiseAnyRejectElementFunction::ALREADY_CALLED_OFFSET,
771                 JSPromiseAnyRejectElementFunction::SIZE - JSPromiseAnyRejectElementFunction::ERRORS_OFFSET}},
772             {JSType::JS_PROMISE_EXECUTOR_FUNCTION, {
773                 JSPromiseExecutorFunction::CAPABILITY_OFFSET,
774                 JSPromiseExecutorFunction::SIZE - JSPromiseExecutorFunction::CAPABILITY_OFFSET}},
775             {JSType::JS_PROMISE_FINALLY_FUNCTION, {
776                 JSPromiseFinallyFunction::CONSTRUCTOR_OFFSET,
777                 JSPromiseFinallyFunction::ONFINALLY_OFFSET,
778                 JSPromiseFinallyFunction::SIZE - JSPromiseFinallyFunction::CONSTRUCTOR_OFFSET}},
779             {JSType::JS_PROMISE_REACTIONS_FUNCTION, {
780                 JSPromiseReactionsFunction::PROMISE_OFFSET,
781                 JSPromiseReactionsFunction::ALREADY_RESOLVED_OFFSET,
782                 JSPromiseReactionsFunction::SIZE - JSPromiseReactionsFunction::PROMISE_OFFSET}},
783             {JSType::JS_PROMISE_VALUE_THUNK_OR_THROWER_FUNCTION, {
784                 JSPromiseValueThunkOrThrowerFunction::RESULT_OFFSET,
785                 JSPromiseValueThunkOrThrowerFunction::SIZE - JSPromiseValueThunkOrThrowerFunction::RESULT_OFFSET}},
786             {JSType::JS_PROXY, {JSProxy::TARGET_OFFSET, JSProxy::HANDLER_OFFSET, JSProxy::METHOD_OFFSET,
787                                 JSProxy::PRIVATE_FIELD_OFFSET, JSProxy::SIZE - JSProxy::TARGET_OFFSET}},
788             {JSType::JS_PROXY_REVOC_FUNCTION, {
789                 JSProxyRevocFunction::REVOCABLE_PROXY_OFFSET,
790                 JSProxyRevocFunction::SIZE - JSProxyRevocFunction::REVOCABLE_PROXY_OFFSET}},
791             {JSType::JS_RANGE_ERROR, {JSObject::PROPERTIES_OFFSET, JSObject::ELEMENTS_OFFSET,
792                                       JSObject::SIZE - JSObject::PROPERTIES_OFFSET}},
793             {JSType::JS_REALM, {JSRealm::VALUE_OFFSET, JSRealm::GLOBAL_ENV_OFFSET,
794                                 JSRealm::SIZE - JSRealm::VALUE_OFFSET}},
795             {JSType::JS_REFERENCE_ERROR, {JSObject::PROPERTIES_OFFSET, JSObject::ELEMENTS_OFFSET,
796                                           JSObject::SIZE - JSObject::PROPERTIES_OFFSET}},
797             {JSType::JS_REG_EXP, {JSRegExp::REGEXP_BYTE_CODE_OFFSET, JSRegExp::ORIGINAL_SOURCE_OFFSET,
798                                   JSRegExp::ORIGINAL_FLAGS_OFFSET, JSRegExp::GROUP_NAME_OFFSET,
799                                   JSRegExp::SIZE - JSRegExp::REGEXP_BYTE_CODE_OFFSET}},
800             {JSType::JS_REG_EXP_ITERATOR, {
801                 JSRegExpIterator::ITERATING_REGEXP_OFFSET,
802                 JSRegExpIterator::ITERATED_STRING_OFFSET,
803                 JSRegExpIterator::SIZE - JSRegExpIterator::ITERATING_REGEXP_OFFSET}},
804             {JSType::JS_RELATIVE_TIME_FORMAT, {
805                 JSRelativeTimeFormat::LOCALE_OFFSET,
806                 JSRelativeTimeFormat::NUMBERING_SYSTEM_OFFSET,
807                 JSRelativeTimeFormat::ICU_FIELD_OFFSET,
808                 JSRelativeTimeFormat::SIZE - JSRelativeTimeFormat::LOCALE_OFFSET}},
809             {JSType::JS_SEGMENTER, {JSSegmenter::LOCALE_OFFSET,
810                                     JSSegmenter::ICU_FIELD_OFFSET,
811                                     JSSegmenter::SIZE - JSSegmenter::LOCALE_OFFSET}},
812             {JSType::JS_SEGMENTS, {JSSegments::ICU_FIELD_OFFSET, JSSegments::SEGMENTS_STRING_OFFSET,
813                                    JSSegments::UNICODE_STRING_OFFSET,
814                                    JSSegments::SIZE - JSSegments::ICU_FIELD_OFFSET}},
815             {JSType::JS_SEGMENT_ITERATOR, {JSSegmentIterator::ICU_FIELD_OFFSET,
816                                            JSSegmentIterator::SEGMENTS_STRING_OFFSET,
817                                            JSSegmentIterator::UNICODE_STRING_OFFSET,
818                                            JSSegmentIterator::SIZE - JSSegmentIterator::ICU_FIELD_OFFSET}},
819             {JSType::JS_SENDABLE_ARRAY_BUFFER, {
820                 JSSendableArrayBuffer::DATA_OFFSET,
821                 JSSendableArrayBuffer::LAST_OFFSET - JSSendableArrayBuffer::DATA_OFFSET}},
822             {JSType::JS_SET, {JSSet::LINKED_SET_OFFSET, JSSet::SIZE - JSSet::LINKED_SET_OFFSET}},
823             {JSType::JS_SET_ITERATOR, {JSSetIterator::ITERATED_SET_OFFSET,
824                                        JSSetIterator::LAST_OFFSET - JSSetIterator::ITERATED_SET_OFFSET}},
825             {JSType::JS_SHARED_ARRAY, {JSSharedArray::TRACK_INFO_OFFSET,
826                                        JSSharedArray::SIZE - JSSharedArray::LENGTH_OFFSET}},
827             {JSType::JS_SHARED_ARRAY_BUFFER, {JSArrayBuffer::DATA_OFFSET,
828                                               JSArrayBuffer::LAST_OFFSET - JSArrayBuffer::DATA_OFFSET}},
829             {JSType::JS_SHARED_ARRAY_ITERATOR, {
830                 JSSharedArrayIterator::ITERATED_ARRAY_OFFSET,
831                 JSSharedArrayIterator::LAST_OFFSET - JSSharedArrayIterator::ITERATED_ARRAY_OFFSET}},
832             {JSType::JS_SHARED_ASYNC_FUNCTION, {JSAsyncFunction::SIZE - JSAsyncFunction::SIZE}},
833             {JSType::JS_SHARED_BIGINT64_ARRAY, {
834                 JSSharedTypedArray::SIZE - JSSharedTypedArray::MOD_RECORD_OFFSET}},
835             {JSType::JS_SHARED_BIGUINT64_ARRAY, {
836                 JSSharedTypedArray::SIZE - JSSharedTypedArray::MOD_RECORD_OFFSET}},
837             {JSType::JS_SHARED_FLOAT32_ARRAY, {
838                 JSSharedTypedArray::SIZE - JSSharedTypedArray::MOD_RECORD_OFFSET}},
839             {JSType::JS_SHARED_FLOAT64_ARRAY, {
840                 JSSharedTypedArray::SIZE - JSSharedTypedArray::MOD_RECORD_OFFSET}},
841             {JSType::JS_SHARED_FUNCTION, {JSSharedFunction::SIZE - JSSharedFunction::SIZE}},
842             {JSType::JS_SHARED_INT16_ARRAY, {
843                 JSSharedTypedArray::SIZE - JSSharedTypedArray::MOD_RECORD_OFFSET}},
844             {JSType::JS_SHARED_INT32_ARRAY, {
845                 JSSharedTypedArray::SIZE - JSSharedTypedArray::MOD_RECORD_OFFSET}},
846             {JSType::JS_SHARED_INT8_ARRAY, {
847                 JSSharedTypedArray::SIZE - JSSharedTypedArray::MOD_RECORD_OFFSET}},
848             {JSType::JS_SHARED_MAP, {JSSharedMap::LINKED_MAP_OFFSET,
849                                      JSSharedMap::SIZE - JSSharedMap::LINKED_MAP_OFFSET}},
850             {JSType::JS_SHARED_MAP_ITERATOR, {
851                 JSSharedMapIterator::ITERATED_MAP_OFFSET,
852                 JSSharedMapIterator::LAST_OFFSET - JSSharedMapIterator::ITERATED_MAP_OFFSET}},
853             {JSType::JS_SHARED_OBJECT, {JSSharedObject::SIZE - JSSharedObject::SIZE}},
854             {JSType::JS_SHARED_SET, {JSSharedSet::LINKED_SET_OFFSET,
855                                      JSSharedSet::SIZE - JSSharedSet::LINKED_SET_OFFSET}},
856             {JSType::JS_SHARED_SET_ITERATOR, {
857                 JSSharedSetIterator::ITERATED_SET_OFFSET,
858                 JSSharedSetIterator::LAST_OFFSET - JSSharedSetIterator::ITERATED_SET_OFFSET}},
859             {JSType::JS_SHARED_TYPED_ARRAY, {
860                 JSSharedTypedArray::SIZE - JSSharedTypedArray::MOD_RECORD_OFFSET}},
861             {JSType::JS_SHARED_UINT16_ARRAY, {
862                 JSSharedTypedArray::SIZE - JSSharedTypedArray::MOD_RECORD_OFFSET}},
863             {JSType::JS_SHARED_UINT32_ARRAY, {
864                 JSSharedTypedArray::SIZE - JSSharedTypedArray::MOD_RECORD_OFFSET}},
865             {JSType::JS_SHARED_UINT8_ARRAY, {
866                 JSSharedTypedArray::SIZE - JSSharedTypedArray::MOD_RECORD_OFFSET}},
867             {JSType::JS_SHARED_UINT8_CLAMPED_ARRAY, {
868                 JSSharedTypedArray::SIZE - JSSharedTypedArray::MOD_RECORD_OFFSET}},
869             {JSType::JS_STRING_ITERATOR, {
870                 JSStringIterator::ITERATED_STRING_OFFSET,
871                 JSStringIterator::SIZE - JSStringIterator::ITERATED_STRING_OFFSET}},
872             {JSType::JS_SYNTAX_ERROR, {JSObject::PROPERTIES_OFFSET, JSObject::ELEMENTS_OFFSET,
873                                        JSObject::SIZE - JSObject::PROPERTIES_OFFSET}},
874             {JSType::JS_TERMINATION_ERROR, {JSObject::PROPERTIES_OFFSET, JSObject::ELEMENTS_OFFSET,
875                                             JSObject::SIZE - JSObject::PROPERTIES_OFFSET}},
876             {JSType::JS_TYPED_ARRAY, {JSTypedArray::VIEWED_ARRAY_BUFFER_OFFSET, JSTypedArray::TYPED_ARRAY_NAME_OFFSET,
877                                       JSTypedArray::SIZE - JSTypedArray::VIEWED_ARRAY_BUFFER_OFFSET}},
878             {JSType::JS_TYPE_ERROR, {JSObject::PROPERTIES_OFFSET, JSObject::ELEMENTS_OFFSET,
879                                      JSObject::SIZE - JSObject::PROPERTIES_OFFSET}},
880             {JSType::JS_UINT16_ARRAY, {
881                 JSTypedArray::VIEWED_ARRAY_BUFFER_OFFSET, JSTypedArray::TYPED_ARRAY_NAME_OFFSET,
882                 JSTypedArray::SIZE - JSTypedArray::VIEWED_ARRAY_BUFFER_OFFSET}},
883             {JSType::JS_UINT32_ARRAY, {
884                 JSTypedArray::VIEWED_ARRAY_BUFFER_OFFSET, JSTypedArray::TYPED_ARRAY_NAME_OFFSET,
885                 JSTypedArray::SIZE - JSTypedArray::VIEWED_ARRAY_BUFFER_OFFSET}},
886             {JSType::JS_UINT8_ARRAY, {
887                 JSTypedArray::VIEWED_ARRAY_BUFFER_OFFSET, JSTypedArray::TYPED_ARRAY_NAME_OFFSET,
888                 JSTypedArray::SIZE - JSTypedArray::VIEWED_ARRAY_BUFFER_OFFSET}},
889             {JSType::JS_UINT8_CLAMPED_ARRAY, {
890                 JSTypedArray::VIEWED_ARRAY_BUFFER_OFFSET,
891                 JSTypedArray::TYPED_ARRAY_NAME_OFFSET,
892                 JSTypedArray::SIZE - JSTypedArray::VIEWED_ARRAY_BUFFER_OFFSET}},
893             {JSType::JS_URI_ERROR, {JSObject::PROPERTIES_OFFSET, JSObject::ELEMENTS_OFFSET,
894                                     JSObject::SIZE - JSObject::PROPERTIES_OFFSET}},
895             {JSType::JS_WEAK_MAP, {
896                 JSWeakMap::LINKED_MAP_OFFSET, JSWeakMap::SIZE - JSWeakMap::LINKED_MAP_OFFSET}},
897             {JSType::JS_WEAK_REF, {
898                 JSWeakRef::WEAK_OBJECT_OFFSET, JSWeakRef::SIZE - JSWeakRef::WEAK_OBJECT_OFFSET}},
899             {JSType::JS_WEAK_SET, {
900                 JSWeakSet::LINKED_SET_OFFSET, JSWeakSet::SIZE - JSWeakSet::LINKED_SET_OFFSET}},
901             {JSType::LEXICAL_ENV, {TaggedArray::SIZE - TaggedArray::SIZE}},
902             {JSType::LINE_STRING, {LineEcmaString::SIZE - LineEcmaString::SIZE}},
903             {JSType::LINKED_NODE, {LinkedNode::NEXT_OFFSET, LinkedNode::LAST_OFFSET - LinkedNode::NEXT_OFFSET}},
904             {JSType::LOCAL_EXPORTENTRY_RECORD, {
905                 LocalExportEntry::LOCAL_EXPORT_ENTRY_OFFSET,
906                 LocalExportEntry::LOCAL_NAME_OFFSET,
907                 LocalExportEntry::SIZE - LocalExportEntry::LOCAL_EXPORT_ENTRY_OFFSET}},
908             {JSType::MACHINE_CODE_OBJECT, {MachineCode::LAST_OFFSET - MachineCode::INS_SIZE_OFFSET}},
909             {JSType::MARKER_CELL, {MarkerCell::SIZE - MarkerCell::BIT_FIELD_OFFSET}},
910             {JSType::METHOD, {Method::CONSTANT_POOL_OFFSET, Method::LAST_OFFSET - Method::CONSTANT_POOL_OFFSET}},
911             {JSType::MICRO_JOB_QUEUE, {job::MicroJobQueue::PROMISE_JOB_QUEUE_OFFSET,
912                                        job::MicroJobQueue::SCRIPT_JOB_QUEUE_OFFSET,
913                                        job::MicroJobQueue::SIZE - job::MicroJobQueue::PROMISE_JOB_QUEUE_OFFSET}},
914             {JSType::MODULE_RECORD, {ModuleRecord::SIZE - ModuleRecord::SIZE}},
915             {JSType::MUTANT_TAGGED_ARRAY, {MutantTaggedArray::SIZE - MutantTaggedArray::SIZE}},
916             {JSType::NATIVE_MODULE_FAILURE_INFO, {
917                 NativeModuleFailureInfo::ARK_NATIVE_MODULE_FAILURE_INFO_OFFSET,
918                 NativeModuleFailureInfo::SIZE - NativeModuleFailureInfo::ARK_NATIVE_MODULE_FAILURE_INFO_OFFSET}},
919             {JSType::PENDING_JOB, {job::PendingJob::JOB_OFFSET,
920                                    job::PendingJob::ARGUMENT_OFFSET,
921                                    job::PendingJob::SIZE - job::PendingJob::ARGUMENT_OFFSET}},
922             {JSType::PROFILE_TYPE_INFO, {ProfileTypeInfo::SIZE - ProfileTypeInfo::SIZE}},
923             {JSType::PROFILE_TYPE_INFO_CELL_0, {
924                 ProfileTypeInfoCell::VALUE_OFFSET,
925                 ProfileTypeInfoCell::MACHINE_CODE_OFFSET,
926                 ProfileTypeInfoCell::BASELINE_CODE_OFFSET,
927                 ProfileTypeInfoCell::HANDLE_OFFSET,
928                 ProfileTypeInfoCell::LAST_OFFSET - ProfileTypeInfoCell::VALUE_OFFSET}},
929             {JSType::PROFILE_TYPE_INFO_CELL_1, {
930                 ProfileTypeInfoCell::VALUE_OFFSET,
931                 ProfileTypeInfoCell::MACHINE_CODE_OFFSET,
932                 ProfileTypeInfoCell::BASELINE_CODE_OFFSET,
933                 ProfileTypeInfoCell::HANDLE_OFFSET,
934                 ProfileTypeInfoCell::LAST_OFFSET - ProfileTypeInfoCell::VALUE_OFFSET}},
935             {JSType::PROFILE_TYPE_INFO_CELL_N, {
936                 ProfileTypeInfoCell::VALUE_OFFSET,
937                 ProfileTypeInfoCell::MACHINE_CODE_OFFSET,
938                 ProfileTypeInfoCell::BASELINE_CODE_OFFSET,
939                 ProfileTypeInfoCell::HANDLE_OFFSET,
940                 ProfileTypeInfoCell::LAST_OFFSET - ProfileTypeInfoCell::VALUE_OFFSET}},
941             {JSType::PROGRAM, {Program::MAIN_FUNCTION_OFFSET, Program::SIZE - Program::MAIN_FUNCTION_OFFSET}},
942             {JSType::PROMISE_CAPABILITY, {PromiseCapability::PROMISE_OFFSET, PromiseCapability::RESOLVE_OFFSET,
943                                           PromiseCapability::REJECT_OFFSET,
944                                           PromiseCapability::SIZE - PromiseCapability::PROMISE_OFFSET}},
945             {JSType::PROMISE_ITERATOR_RECORD, {PromiseIteratorRecord::ITERATOR_OFFSET,
946                                                PromiseIteratorRecord::SIZE - PromiseIteratorRecord::ITERATOR_OFFSET}},
947             {JSType::PROMISE_REACTIONS, {PromiseReaction::PROMISE_CAPABILITY_OFFSET,
948                                          PromiseReaction::HANDLER_OFFSET,
949                                          PromiseReaction::SIZE - PromiseReaction::PROMISE_CAPABILITY_OFFSET}},
950             {JSType::PROMISE_RECORD, {PromiseRecord::VALUE_OFFSET,
951                                       PromiseRecord::SIZE - PromiseRecord::VALUE_OFFSET}},
952             {JSType::PROPERTY_BOX, {PropertyBox::VALUE_OFFSET,
953                                     PropertyBox::SIZE - PropertyBox::VALUE_OFFSET}},
954             {JSType::PROTOTYPE_HANDLER, {PrototypeHandler::HANDLER_INFO_OFFSET,
955                                          PrototypeHandler::PROTO_CELL_OFFSET,
956                                          PrototypeHandler::HOLDER_OFFSET,
957                                          PrototypeHandler::ACCESSOR_JSFUNCTION_OFFSET,
958                                          PrototypeHandler::SIZE - PrototypeHandler::HANDLER_INFO_OFFSET}},
959             {JSType::PROTOTYPE_INFO, {ProtoChangeDetails::CHANGE_LISTENER_OFFSET,
960                                       ProtoChangeDetails::SIZE - ProtoChangeDetails::CHANGE_LISTENER_OFFSET}},
961             {JSType::PROTO_CHANGE_MARKER, {ProtoChangeMarker::SIZE - ProtoChangeMarker::BIT_FIELD_OFFSET}},
962             {JSType::RB_TREENODE, {RBTreeNode::LEFT_OFFSET, RBTreeNode::RIGHT_OFFSET, RBTreeNode::ISRED_OFFSET,
963                                    RBTreeNode::SIZE - RBTreeNode::LEFT_OFFSET}},
964             {JSType::RESOLVEDBINDING_RECORD, {ResolvedBinding::MODULE_OFFSET, ResolvedBinding::BINDING_NAME_OFFSET,
965                                               ResolvedBinding::SIZE - ResolvedBinding::MODULE_OFFSET}},
966             {JSType::RESOLVEDINDEXBINDING_RECORD, {
967                 ResolvedIndexBinding::MODULE_OFFSET,
968                 ResolvedIndexBinding::INDEX_OFFSET,
969                 ResolvedIndexBinding::SIZE - ResolvedIndexBinding::MODULE_OFFSET}},
970             {JSType::RESOLVEDRECORDBINDING_RECORD, {
971                 ResolvedRecordBinding::MODULE_RECORD_OFFSET,
972                 ResolvedRecordBinding::BINDING_NAME_OFFSET,
973                 ResolvedRecordBinding::SIZE - ResolvedRecordBinding::MODULE_RECORD_OFFSET}},
974             {JSType::RESOLVEDRECORDINDEXBINDING_RECORD, {
975                 ResolvedRecordIndexBinding::MODULE_RECORD_INDEX_OFFSET,
976                 ResolvedRecordIndexBinding::ABC_FILE_NAME,
977                 ResolvedRecordIndexBinding::SIZE - ResolvedRecordIndexBinding::MODULE_RECORD_INDEX_OFFSET}},
978             {JSType::RESOLVING_FUNCTIONS_RECORD, {
979                 ResolvingFunctionsRecord::RESOLVE_FUNCTION_OFFSET,
980                 ResolvingFunctionsRecord::REJECT_FUNCTION_OFFSET,
981                 ResolvingFunctionsRecord::SIZE - ResolvingFunctionsRecord::RESOLVE_FUNCTION_OFFSET}},
982             {JSType::SENDABLE_ENV, {TaggedArray::SIZE - TaggedArray::SIZE}},
983             {JSType::SLICED_STRING, {SlicedString::PARENT_OFFSET, SlicedString::SIZE - SlicedString::PARENT_OFFSET}},
984             {JSType::SOURCE_TEXT_MODULE_RECORD, {
985                 SourceTextModule::SOURCE_TEXT_MODULE_OFFSET,
986                 SourceTextModule::NAMESPACE_OFFSET,
987                 SourceTextModule::MODULE_REQUESTS_OFFSET,
988                 SourceTextModule::REQUESTED_MODULES_OFFSET,
989                 SourceTextModule::IMPORT_ENTRIES_OFFSET,
990                 SourceTextModule::LOCAL_EXPORT_ENTTRIES_OFFSET,
991                 SourceTextModule::INDIRECT_EXPORT_ENTTRIES_OFFSET,
992                 SourceTextModule::START_EXPORT_ENTTRIES_OFFSET,
993                 SourceTextModule::NAME_DICTIONARY_OFFSET,
994                 SourceTextModule::CYCLE_ROOT_OFFSET,
995                 SourceTextModule::TOP_LEVEL_CAPABILITY_OFFSET,
996                 SourceTextModule::ASYNC_PARENT_MODULES_OFFSET,
997                 SourceTextModule::SENDABLE_ENV_OFFSET,
998                 SourceTextModule::EXCEPTION_OFFSET,
999                 SourceTextModule::SIZE - SourceTextModule::SOURCE_TEXT_MODULE_OFFSET}},
1000             {JSType::STAR_EXPORTENTRY_RECORD, {StarExportEntry::STAR_EXPORT_ENTRY_OFFSET,
1001                                                StarExportEntry::SIZE - StarExportEntry::STAR_EXPORT_ENTRY_OFFSET}},
1002             {JSType::STORE_TS_HANDLER, {StoreAOTHandler::HANDLER_INFO_OFFSET,
1003                                         StoreAOTHandler::PROTO_CELL_OFFSET,
1004                                         StoreAOTHandler::HOLDER_OFFSET,
1005                                         StoreAOTHandler::SIZE - StoreAOTHandler::HANDLER_INFO_OFFSET}},
1006             {JSType::SYMBOL, {JSSymbol::DESCRIPTION_OFFSET,
1007                               JSSymbol::SIZE - JSSymbol::DESCRIPTION_OFFSET}},
1008             {JSType::TAGGED_ARRAY, {TaggedArray::LENGTH_OFFSET, TaggedArray::DATA_OFFSET,
1009                                     TaggedArray::SIZE - TaggedArray::SIZE}},
1010             {JSType::TAGGED_DICTIONARY, {TaggedArray::LAST_OFFSET - TaggedArray::LENGTH_OFFSET}},
1011             {JSType::TEMPLATE_MAP, {TaggedArray::LAST_OFFSET - TaggedArray::LENGTH_OFFSET}},
1012             {JSType::TRACK_INFO, {TrackInfo::CACHED_HCLASS_OFFSET, TrackInfo::CACHED_FUNC_OFFSET,
1013                                   TrackInfo::LAST_OFFSET - TrackInfo::CACHED_HCLASS_OFFSET}},
1014             {JSType::TRANSITION_HANDLER, {TransitionHandler::HANDLER_INFO_OFFSET,
1015                                           TransitionHandler::TRANSITION_HCLASS_OFFSET,
1016                                           TransitionHandler::SIZE - TransitionHandler::HANDLER_INFO_OFFSET}},
1017             {JSType::TRANS_WITH_PROTO_HANDLER, {
1018                 TransWithProtoHandler::HANDLER_INFO_OFFSET,
1019                 TransWithProtoHandler::TRANSITION_HCLASS_OFFSET,
1020                 TransWithProtoHandler::PROTO_CELL_OFFSET,
1021                 TransWithProtoHandler::SIZE - TransWithProtoHandler::HANDLER_INFO_OFFSET}},
1022             {JSType::TREE_STRING, {TreeEcmaString::FIRST_OFFSET, TreeEcmaString::SECOND_OFFSET,
1023                                    TreeEcmaString::SIZE - TreeEcmaString::FIRST_OFFSET}},
1024             {JSType::VTABLE, {TaggedArray::LAST_OFFSET - TaggedArray::LENGTH_OFFSET}}
1025         };
1026         // { typeName: [all parents of this type]}
1027         parentsTable_ = {
1028             {JSType::HCLASS, {"TAGGED_OBJECT"}},
1029             {JSType::ACCESSOR_DATA, {"RECORD"}},
1030             {JSType::AOT_LITERAL_INFO, {"TAGGED_OBJECT"}},
1031             {JSType::ASYNC_GENERATOR_REQUEST, {"RECORD"}},
1032             {JSType::ASYNC_ITERATOR_RECORD, {"RECORD"}},
1033             {JSType::BIGINT, {"TAGGED_OBJECT"}},
1034             {JSType::BYTE_ARRAY, {"TAGGED_OBJECT"}},
1035             {JSType::CELL_RECORD, {"RECORD"}},
1036             {JSType::CLASS_INFO_EXTRACTOR, {"TAGGED_OBJECT"}},
1037             {JSType::CLASS_LITERAL, {"TAGGED_OBJECT"}},
1038             {JSType::COMPLETION_RECORD, {"RECORD"}},
1039             {JSType::CONSTANT_POOL, {"TAGGED_ARRAY"}},
1040             {JSType::CONSTANT_STRING, {"ECMA_STRING"}},
1041             {JSType::COW_MUTANT_TAGGED_ARRAY, {"MUTANT_TAGGED_ARRAY"}},
1042             {JSType::COW_TAGGED_ARRAY, {"TAGGED_ARRAY"}},
1043             {JSType::EXTRA_PROFILE_TYPE_INFO, {"TAGGED_OBJECT"}},
1044             {JSType::FUNCTION_TEMPLATE, {"TAGGED_OBJECT"}},
1045             {JSType::GLOBAL_ENV, {"TAGGED_OBJECT"}},
1046             {JSType::IMPORTENTRY_RECORD, {"RECORD"}},
1047             {JSType::INDIRECT_EXPORTENTRY_RECORD, {"RECORD"}},
1048             {JSType::INTERNAL_ACCESSOR, {"RECORD"}},
1049             {JSType::JS_AGGREGATE_ERROR, {"ECMA_OBJECT"}},
1050             {JSType::JS_API_ARRAYLIST_ITERATOR, {"JS_OBJECT"}},
1051             {JSType::JS_API_ARRAY_LIST, {"JS_OBJECT"}},
1052             {JSType::JS_API_BITVECTOR, {"JS_OBJECT"}},
1053             {JSType::JS_API_BITVECTOR_ITERATOR, {"JS_OBJECT"}},
1054             {JSType::JS_API_DEQUE, {"JS_OBJECT"}},
1055             {JSType::JS_API_DEQUE_ITERATOR, {"JS_OBJECT"}},
1056             {JSType::JS_API_HASHMAP_ITERATOR, {"JS_OBJECT"}},
1057             {JSType::JS_API_HASHSET_ITERATOR, {"JS_OBJECT"}},
1058             {JSType::JS_API_HASH_MAP, {"JS_OBJECT"}},
1059             {JSType::JS_API_HASH_SET, {"JS_OBJECT"}},
1060             {JSType::JS_API_LIGHT_WEIGHT_MAP, {"JS_OBJECT"}},
1061             {JSType::JS_API_LIGHT_WEIGHT_MAP_ITERATOR, {"JS_OBJECT"}},
1062             {JSType::JS_API_LIGHT_WEIGHT_SET, {"JS_OBJECT"}},
1063             {JSType::JS_API_LIGHT_WEIGHT_SET_ITERATOR, {"JS_OBJECT"}},
1064             {JSType::JS_API_LINKED_LIST, {"JS_OBJECT"}},
1065             {JSType::JS_API_LINKED_LIST_ITERATOR, {"JS_OBJECT"}},
1066             {JSType::JS_API_LIST, {"JS_OBJECT"}},
1067             {JSType::JS_API_LIST_ITERATOR, {"JS_OBJECT"}},
1068             {JSType::JS_API_PLAIN_ARRAY, {"JS_OBJECT"}},
1069             {JSType::JS_API_PLAIN_ARRAY_ITERATOR, {"JS_OBJECT"}},
1070             {JSType::JS_API_QUEUE, {"JS_OBJECT"}},
1071             {JSType::JS_API_QUEUE_ITERATOR, {"JS_OBJECT"}},
1072             {JSType::JS_API_STACK, {"JS_OBJECT"}},
1073             {JSType::JS_API_STACK_ITERATOR, {"JS_OBJECT"}},
1074             {JSType::JS_API_TREEMAP_ITERATOR, {"JS_OBJECT"}},
1075             {JSType::JS_API_TREESET_ITERATOR, {"JS_OBJECT"}},
1076             {JSType::JS_API_TREE_MAP, {"JS_OBJECT"}},
1077             {JSType::JS_API_TREE_SET, {"JS_OBJECT"}},
1078             {JSType::JS_API_VECTOR, {"JS_OBJECT"}},
1079             {JSType::JS_API_VECTOR_ITERATOR, {"JS_OBJECT"}},
1080             {JSType::JS_ARGUMENTS, {"JS_OBJECT"}},
1081             {JSType::JS_ARRAY, {"JS_OBJECT"}},
1082             {JSType::JS_ARRAY_BUFFER, {"JS_OBJECT"}},
1083             {JSType::JS_ARRAY_ITERATOR, {"JS_OBJECT"}},
1084             {JSType::JS_ASYNCITERATOR, {"ECMA_OBJECT"}},
1085             {JSType::JS_ASYNC_AWAIT_STATUS_FUNCTION, {"JS_FUNCTION"}},
1086             {JSType::JS_ASYNC_FROM_SYNC_ITERATOR, {"JS_OBJECT"}},
1087             {JSType::JS_ASYNC_FROM_SYNC_ITER_UNWARP_FUNCTION, {"JS_FUNCTION"}},
1088             {JSType::JS_ASYNC_FUNCTION, {"JS_FUNCTION"}},
1089             {JSType::JS_ASYNC_FUNC_OBJECT, {"JS_GENERATOR_OBJECT"}},
1090             {JSType::JS_ASYNC_GENERATOR_FUNCTION, {"JS_FUNCTION"}},
1091             {JSType::JS_ASYNC_GENERATOR_OBJECT, {"JS_OBJECT"}},
1092             {JSType::JS_ASYNC_GENERATOR_RESUME_NEXT_RETURN_PROCESSOR_RST_FTN, {"JS_FUNCTION"}},
1093             {JSType::JS_ASYNC_MODULE_FULFILLED_FUNCTION, {"JS_FUNCTION"}},
1094             {JSType::JS_ASYNC_MODULE_REJECTED_FUNCTION, {"JS_FUNCTION"}},
1095             {JSType::JS_BIGINT64_ARRAY, {"JS_OBJECT"}},
1096             {JSType::JS_BIGUINT64_ARRAY, {"JS_OBJECT"}},
1097             {JSType::JS_BOUND_FUNCTION, {"JS_FUNCTION"}},
1098             {JSType::JS_CJS_EXPORTS, {"JS_OBJECT"}},
1099             {JSType::JS_CJS_MODULE, {"JS_OBJECT"}},
1100             {JSType::JS_CJS_REQUIRE, {"JS_OBJECT"}},
1101             {JSType::JS_COLLATOR, {"JS_OBJECT"}},
1102             {JSType::JS_DATA_VIEW, {"JS_OBJECT"}},
1103             {JSType::JS_DATE, {"JS_OBJECT"}},
1104             {JSType::JS_DATE_TIME_FORMAT, {"JS_OBJECT"}},
1105             {JSType::JS_DISPLAYNAMES, {"JS_OBJECT"}},
1106             {JSType::JS_ERROR, {"ECMA_OBJECT"}},
1107             {JSType::JS_EVAL_ERROR, {"ECMA_OBJECT"}},
1108             {JSType::JS_FINALIZATION_REGISTRY, {"JS_OBJECT"}},
1109             {JSType::JS_FLOAT32_ARRAY, {"JS_OBJECT"}},
1110             {JSType::JS_FLOAT64_ARRAY, {"JS_OBJECT"}},
1111             {JSType::JS_FORIN_ITERATOR, {"JS_OBJECT"}},
1112             {JSType::JS_FUNCTION, {"JS_FUNCTION_BASE"}},
1113             {JSType::JS_FUNCTION_BASE, {"JS_OBJECT"}},
1114             {JSType::JS_GENERATOR_CONTEXT, {"TAGGED_OBJECT"}},
1115             {JSType::JS_GENERATOR_FUNCTION, {"JS_FUNCTION"}},
1116             {JSType::JS_GENERATOR_OBJECT, {"JS_OBJECT"}},
1117             {JSType::JS_GLOBAL_OBJECT, {"JS_OBJECT"}},
1118             {JSType::JS_INT16_ARRAY, {"JS_OBJECT"}},
1119             {JSType::JS_INT32_ARRAY, {"JS_OBJECT"}},
1120             {JSType::JS_INT8_ARRAY, {"JS_OBJECT"}},
1121             {JSType::JS_INTL, {"JS_OBJECT"}},
1122             {JSType::JS_INTL_BOUND_FUNCTION, {"JS_FUNCTION"}},
1123             {JSType::JS_ITERATOR, {"ECMA_OBJECT"}},
1124             {JSType::JS_LIST_FORMAT, {"JS_OBJECT"}},
1125             {JSType::JS_LOCALE, {"JS_OBJECT"}},
1126             {JSType::JS_MAP, {"JS_OBJECT"}},
1127             {JSType::JS_MAP_ITERATOR, {"JS_OBJECT"}},
1128             {JSType::JS_MODULE_NAMESPACE, {"JS_OBJECT"}},
1129             {JSType::JS_NATIVE_POINTER, {"TAGGED_OBJECT"}},
1130             {JSType::JS_NUMBER_FORMAT, {"JS_OBJECT"}},
1131             {JSType::JS_OBJECT, {"ECMA_OBJECT"}},
1132             {JSType::JS_OOM_ERROR, {"ECMA_OBJECT"}},
1133             {JSType::JS_PLURAL_RULES, {"JS_OBJECT"}},
1134             {JSType::JS_PRIMITIVE_REF, {"JS_OBJECT"}},
1135             {JSType::JS_PROMISE, {"JS_OBJECT"}},
1136             {JSType::JS_PROMISE_ALL_RESOLVE_ELEMENT_FUNCTION, {"JS_FUNCTION"}},
1137             {JSType::JS_PROMISE_ALL_SETTLED_ELEMENT_FUNCTION, {"JS_FUNCTION"}},
1138             {JSType::JS_PROMISE_ANY_REJECT_ELEMENT_FUNCTION, {"JS_FUNCTION"}},
1139             {JSType::JS_PROMISE_EXECUTOR_FUNCTION, {"JS_FUNCTION"}},
1140             {JSType::JS_PROMISE_FINALLY_FUNCTION, {"JS_FUNCTION"}},
1141             {JSType::JS_PROMISE_REACTIONS_FUNCTION, {"JS_FUNCTION"}},
1142             {JSType::JS_PROMISE_VALUE_THUNK_OR_THROWER_FUNCTION, {"JS_FUNCTION"}},
1143             {JSType::JS_PROXY, {"ECMA_OBJECT"}},
1144             {JSType::JS_PROXY_REVOC_FUNCTION, {"JS_FUNCTION"}},
1145             {JSType::JS_RANGE_ERROR, {"ECMA_OBJECT"}},
1146             {JSType::JS_REALM, {"JS_OBJECT"}},
1147             {JSType::JS_REFERENCE_ERROR, {"ECMA_OBJECT"}},
1148             {JSType::JS_REG_EXP, {"JS_OBJECT"}},
1149             {JSType::JS_REG_EXP_ITERATOR, {"JS_OBJECT"}},
1150             {JSType::JS_RELATIVE_TIME_FORMAT, {"JS_OBJECT"}},
1151             {JSType::JS_SEGMENTER, {"JS_OBJECT"}},
1152             {JSType::JS_SEGMENTS, {"JS_OBJECT"}},
1153             {JSType::JS_SEGMENT_ITERATOR, {"JS_OBJECT"}},
1154             {JSType::JS_SENDABLE_ARRAY_BUFFER, {"JS_OBJECT"}},
1155             {JSType::JS_SET, {"JS_OBJECT"}},
1156             {JSType::JS_SET_ITERATOR, {"JS_OBJECT"}},
1157             {JSType::JS_SHARED_ARRAY, {"JS_OBJECT"}},
1158             {JSType::JS_SHARED_ARRAY_BUFFER, {"JS_OBJECT"}},
1159             {JSType::JS_SHARED_ARRAY_ITERATOR, {"JS_OBJECT"}},
1160             {JSType::JS_SHARED_ASYNC_FUNCTION, {"JS_FUNCTION"}},
1161             {JSType::JS_SHARED_BIGINT64_ARRAY, {"JS_TYPED_ARRAY"}},
1162             {JSType::JS_SHARED_BIGUINT64_ARRAY, {"JS_TYPED_ARRAY"}},
1163             {JSType::JS_SHARED_FLOAT32_ARRAY, {"JS_TYPED_ARRAY"}},
1164             {JSType::JS_SHARED_FLOAT64_ARRAY, {"JS_TYPED_ARRAY"}},
1165             {JSType::JS_SHARED_FUNCTION, {"JS_FUNCTION"}},
1166             {JSType::JS_SHARED_INT16_ARRAY, {"JS_TYPED_ARRAY"}},
1167             {JSType::JS_SHARED_INT32_ARRAY, {"JS_TYPED_ARRAY"}},
1168             {JSType::JS_SHARED_INT8_ARRAY, {"JS_TYPED_ARRAY"}},
1169             {JSType::JS_SHARED_MAP, {"JS_OBJECT"}},
1170             {JSType::JS_SHARED_MAP_ITERATOR, {"JS_OBJECT"}},
1171             {JSType::JS_SHARED_OBJECT, {"JS_OBJECT"}},
1172             {JSType::JS_SHARED_SET, {"JS_OBJECT"}},
1173             {JSType::JS_SHARED_SET_ITERATOR, {"JS_OBJECT"}},
1174             {JSType::JS_SHARED_TYPED_ARRAY, {"JS_TYPED_ARRAY"}},
1175             {JSType::JS_SHARED_UINT16_ARRAY, {"JS_TYPED_ARRAY"}},
1176             {JSType::JS_SHARED_UINT32_ARRAY, {"JS_TYPED_ARRAY"}},
1177             {JSType::JS_SHARED_UINT8_ARRAY, {"JS_TYPED_ARRAY"}},
1178             {JSType::JS_SHARED_UINT8_CLAMPED_ARRAY, {"JS_TYPED_ARRAY"}},
1179             {JSType::JS_STRING_ITERATOR, {"JS_OBJECT"}},
1180             {JSType::JS_SYNTAX_ERROR, {"ECMA_OBJECT"}},
1181             {JSType::JS_TERMINATION_ERROR, {"ECMA_OBJECT"}},
1182             {JSType::JS_TYPED_ARRAY, {"JS_OBJECT"}},
1183             {JSType::JS_TYPE_ERROR, {"ECMA_OBJECT"}},
1184             {JSType::JS_UINT16_ARRAY, {"JS_OBJECT"}},
1185             {JSType::JS_UINT32_ARRAY, {"JS_OBJECT"}},
1186             {JSType::JS_UINT8_ARRAY, {"JS_OBJECT"}},
1187             {JSType::JS_UINT8_CLAMPED_ARRAY, {"JS_OBJECT"}},
1188             {JSType::JS_URI_ERROR, {"ECMA_OBJECT"}},
1189             {JSType::JS_WEAK_MAP, {"JS_OBJECT"}},
1190             {JSType::JS_WEAK_REF, {"JS_OBJECT"}},
1191             {JSType::JS_WEAK_SET, {"JS_OBJECT"}},
1192             {JSType::LEXICAL_ENV, {"TAGGED_ARRAY"}},
1193             {JSType::LINE_STRING, {"ECMA_STRING"}},
1194             {JSType::LINKED_NODE, {"TAGGED_NODE"}},
1195             {JSType::LOCAL_EXPORTENTRY_RECORD, {"RECORD"}},
1196             {JSType::MACHINE_CODE_OBJECT, {"TAGGED_OBJECT"}},
1197             {JSType::MARKER_CELL, {"TAGGED_OBJECT"}},
1198             {JSType::METHOD, {"TAGGED_OBJECT"}},
1199             {JSType::MICRO_JOB_QUEUE, {"RECORD"}},
1200             {JSType::MODULE_RECORD, {"RECORD"}},
1201             {JSType::MUTANT_TAGGED_ARRAY, {"TAGGED_ARRAY"}},
1202             {JSType::NATIVE_MODULE_FAILURE_INFO, {"JS_OBJECT"}},
1203             {JSType::PENDING_JOB, {"RECORD"}},
1204             {JSType::PROFILE_TYPE_INFO, {"TAGGED_ARRAY"}},
1205             {JSType::PROFILE_TYPE_INFO_CELL_0, {"TAGGED_OBJECT"}},
1206             {JSType::PROFILE_TYPE_INFO_CELL_1, {"TAGGED_OBJECT"}},
1207             {JSType::PROFILE_TYPE_INFO_CELL_N, {"TAGGED_OBJECT"}},
1208             {JSType::PROGRAM, {"ECMA_OBJECT"}},
1209             {JSType::PROMISE_CAPABILITY, {"RECORD"}},
1210             {JSType::PROMISE_ITERATOR_RECORD, {"RECORD"}},
1211             {JSType::PROMISE_REACTIONS, {"RECORD"}},
1212             {JSType::PROMISE_RECORD, {"RECORD"}},
1213             {JSType::PROPERTY_BOX, {"TAGGED_OBJECT"}},
1214             {JSType::PROTOTYPE_HANDLER, {"TAGGED_OBJECT"}},
1215             {JSType::PROTOTYPE_INFO, {"TAGGED_OBJECT"}},
1216             {JSType::PROTO_CHANGE_MARKER, {"TAGGED_OBJECT"}},
1217             {JSType::RB_TREENODE, {"TAGGED_NODE"}},
1218             {JSType::RESOLVEDBINDING_RECORD, {"RECORD"}},
1219             {JSType::RESOLVEDINDEXBINDING_RECORD, {"RECORD"}},
1220             {JSType::RESOLVEDRECORDBINDING_RECORD, {"RECORD"}},
1221             {JSType::RESOLVEDRECORDINDEXBINDING_RECORD, {"RECORD"}},
1222             {JSType::RESOLVING_FUNCTIONS_RECORD, {"RECORD"}},
1223             {JSType::SENDABLE_ENV, {"TAGGED_ARRAY"}},
1224             {JSType::SLICED_STRING, {"ECMA_STRING"}},
1225             {JSType::SOURCE_TEXT_MODULE_RECORD, {"MODULE_RECORD"}},
1226             {JSType::STAR_EXPORTENTRY_RECORD, {"RECORD"}},
1227             {JSType::STORE_TS_HANDLER, {"TAGGED_OBJECT"}},
1228             {JSType::SYMBOL, {"TAGGED_OBJECT"}},
1229             {JSType::TAGGED_ARRAY, {"TAGGED_OBJECT"}},
1230             {JSType::TAGGED_DICTIONARY, {"TAGGED_ARRAY"}},
1231             {JSType::TEMPLATE_MAP, {"TAGGED_OBJECT"}},
1232             {JSType::TRACK_INFO, {"TAGGED_OBJECT"}},
1233             {JSType::TRANSITION_HANDLER, {"TAGGED_OBJECT"}},
1234             {JSType::TRANS_WITH_PROTO_HANDLER, {"TAGGED_OBJECT"}},
1235             {JSType::TREE_STRING, {"ECMA_STRING"}},
1236             {JSType::VTABLE, {"TAGGED_OBJECT"}}
1237         };
1238         // { typeName: [size of all fields' in the same order as declared in .h files]}
1239         fieldSizeTable_ = {
1240             {JSType::HCLASS, {JSHClass::LAYOUT_OFFSET - JSHClass::PROTOTYPE_OFFSET,
1241                               JSHClass::TRANSTIONS_OFFSET - JSHClass::LAYOUT_OFFSET,
1242                               JSHClass::PARENT_OFFSET - JSHClass::TRANSTIONS_OFFSET,
1243                               JSHClass::PROTO_CHANGE_MARKER_OFFSET - JSHClass::PARENT_OFFSET,
1244                               JSHClass::PROTO_CHANGE_DETAILS_OFFSET - JSHClass::PROTO_CHANGE_MARKER_OFFSET,
1245                               JSHClass::ENUM_CACHE_OFFSET - JSHClass::PROTO_CHANGE_DETAILS_OFFSET,
1246                               JSHClass::PROFILE_TYPE - JSHClass::ENUM_CACHE_OFFSET,
1247                               JSHClass::BIT_FIELD_OFFSET - JSHClass::PROFILE_TYPE,
1248                               JSHClass::BIT_FIELD1_OFFSET - JSHClass::BIT_FIELD_OFFSET,
1249                               JSHClass::LAST_OFFSET - JSHClass::BIT_FIELD1_OFFSET}},
1250             {JSType::ACCESSOR_DATA, {AccessorData::SETTER_OFFSET - AccessorData::GETTER_OFFSET,
1251                                      AccessorData::SIZE - AccessorData::SETTER_OFFSET}},
1252             {JSType::AOT_LITERAL_INFO, {}},
1253             {JSType::ASYNC_GENERATOR_REQUEST, {
1254                 AsyncGeneratorRequest::CAPABILITY_OFFSET - AsyncGeneratorRequest::COMPLETION_OFFSET,
1255                 AsyncGeneratorRequest::SIZE - AsyncGeneratorRequest::CAPABILITY_OFFSET}},
1256             {JSType::ASYNC_ITERATOR_RECORD, {
1257                 AsyncIteratorRecord::NEXTMETHOD_OFFSET - AsyncIteratorRecord::ITERATOR_OFFSET,
1258                 AsyncIteratorRecord::BIT_FIELD_OFFSET - AsyncIteratorRecord::NEXTMETHOD_OFFSET}},
1259             {JSType::BIGINT, {}},
1260             {JSType::BYTE_ARRAY, {}},
1261             {JSType::CELL_RECORD, {CellRecord::HELD_VALUE_OFFSET - CellRecord::WEAKREF_TARGET_OFFSET,
1262                                    CellRecord::SIZE - CellRecord::HELD_VALUE_OFFSET}},
1263             {JSType::CLASS_INFO_EXTRACTOR, {
1264                 ClassInfoExtractor::NON_STATIC_PROPERTIES_OFFSET - ClassInfoExtractor::PROTOTYPE_HCLASS_OFFSET,
1265                 ClassInfoExtractor::NON_STATIC_ELEMENTS_OFFSET - ClassInfoExtractor::NON_STATIC_PROPERTIES_OFFSET,
1266                 ClassInfoExtractor::CONSTRUCTOR_HCLASS_OFFSET - ClassInfoExtractor::NON_STATIC_ELEMENTS_OFFSET,
1267                 ClassInfoExtractor::STATIC_PROPERTIES_OFFSET - ClassInfoExtractor::CONSTRUCTOR_HCLASS_OFFSET,
1268                 ClassInfoExtractor::STATIC_ELEMENTS_OFFSET - ClassInfoExtractor::STATIC_PROPERTIES_OFFSET,
1269                 ClassInfoExtractor::CONSTRUCTOR_METHOD_OFFSET - ClassInfoExtractor::STATIC_ELEMENTS_OFFSET,
1270                 ClassInfoExtractor::BIT_FIELD_OFFSET - ClassInfoExtractor::CONSTRUCTOR_METHOD_OFFSET}},
1271             {JSType::CLASS_LITERAL, {ClassLiteral::IS_AOT_USED_OFFSET - ClassLiteral::ARRAY_OFFSET}},
1272             {JSType::COMPLETION_RECORD, {CompletionRecord::BIT_FIELD_OFFSET - CompletionRecord::VALUE_OFFSET}},
1273             {JSType::CONSTANT_POOL, {}},
1274             {JSType::CONSTANT_STRING, {ConstantString::ENTITY_ID_OFFSET - ConstantString::RELOCTAED_DATA_OFFSET}},
1275             {JSType::COW_MUTANT_TAGGED_ARRAY, {}},
1276             {JSType::COW_TAGGED_ARRAY, {}},
1277             {JSType::EXTRA_PROFILE_TYPE_INFO, {
1278                 ExtraProfileTypeInfo::HOLDER_OBJECT_OFFSET - ExtraProfileTypeInfo::RECEIVER_OBJECT_OFFSET,
1279                 ExtraProfileTypeInfo::LAST_OFFSET - ExtraProfileTypeInfo::HOLDER_OBJECT_OFFSET}},
1280             {JSType::FUNCTION_TEMPLATE, {
1281                 FunctionTemplate::MODULE_OFFSET - FunctionTemplate::METHOD_OFFSET,
1282                 FunctionTemplate::RAW_PROFILE_TYPE_INFO_OFFSET - FunctionTemplate::MODULE_OFFSET,
1283                 FunctionTemplate::LENGTH_OFFSET - FunctionTemplate::RAW_PROFILE_TYPE_INFO_OFFSET}},
1284             {JSType::GLOBAL_ENV, {}},
1285             {JSType::IMPORTENTRY_RECORD, {
1286                 ImportEntry::LOCAL_NAME_OFFSET - ImportEntry::IMPORT_ENTRY_OFFSET,
1287                 ImportEntry::MODULE_REQUEST_INDEX_OFFSET - ImportEntry::LOCAL_NAME_OFFSET,
1288                 ImportEntry::SIZE - ImportEntry::IMPORT_ENTRY_OFFSET}},
1289             {JSType::INDIRECT_EXPORTENTRY_RECORD, {
1290                 IndirectExportEntry::IMPORT_NAME_OFFSET - IndirectExportEntry::INDIRECT_EXPORT_ENTRY_OFFSET,
1291                 IndirectExportEntry::MODULE_REQUEST_INDEX_OFFSET - IndirectExportEntry::IMPORT_NAME_OFFSET,
1292                 IndirectExportEntry::SIZE - IndirectExportEntry::INDIRECT_EXPORT_ENTRY_OFFSET}},
1293             {JSType::INTERNAL_ACCESSOR, {
1294                 InternalAccessor::SETTER_OFFSET - InternalAccessor::GETTER_OFFSET,
1295                 InternalAccessor::SIZE - InternalAccessor::SETTER_OFFSET}},
1296             {JSType::JS_AGGREGATE_ERROR, {
1297                 JSObject::ELEMENTS_OFFSET - JSObject::PROPERTIES_OFFSET,
1298                 JSObject::SIZE - JSObject::ELEMENTS_OFFSET}},
1299             {JSType::JS_API_ARRAYLIST_ITERATOR, {
1300                 JSAPIArrayListIterator::NEXT_INDEX_OFFSET - JSAPIArrayListIterator::ITERATED_ARRAYLIST_OFFSET}},
1301             {JSType::JS_API_ARRAY_LIST, {JSAPIArrayList::SIZE - JSAPIArrayList::LENGTH_OFFSET}},
1302             {JSType::JS_API_BITVECTOR, {JSAPIBitVector::LENGTH_OFFSET - JSAPIBitVector::NATIVE_POINTER_OFFSET}},
1303             {JSType::JS_API_BITVECTOR_ITERATOR, {
1304                 JSAPIBitVectorIterator::NEXT_INDEX_OFFSET - JSAPIBitVectorIterator::ITERATED_BITVECTOR_OFFSET}},
1305             {JSType::JS_API_DEQUE, {}},
1306             {JSType::JS_API_DEQUE_ITERATOR, {
1307                 JSAPIDequeIterator::NEXT_INDEX_OFFSET - JSAPIDequeIterator::ITERATED_DEQUE_OFFSET}},
1308             {JSType::JS_API_HASHMAP_ITERATOR, {
1309                 JSAPIHashMapIterator::TAGGED_QUEUE_OFFSET - JSAPIHashMapIterator::ITERATED_HASHMAP_OFFSET,
1310                 JSAPIHashMapIterator::CURRENT_NODE_RESULT - JSAPIHashMapIterator::TAGGED_QUEUE_OFFSET,
1311                 JSAPIHashMapIterator::NEXT_INDEX_OFFSET - JSAPIHashMapIterator::CURRENT_NODE_RESULT
1312             }},
1313             {JSType::JS_API_HASHSET_ITERATOR, {
1314                 JSAPIHashSetIterator::TAGGED_QUEUE_OFFSET - JSAPIHashSetIterator::ITERATED_HASHSET_OFFSET,
1315                 JSAPIHashSetIterator::CURRENT_NODE_RESULT - JSAPIHashSetIterator::TAGGED_QUEUE_OFFSET,
1316                 JSAPIHashSetIterator::NEXT_INDEX_OFFSET - JSAPIHashSetIterator::CURRENT_NODE_RESULT}},
1317             {JSType::JS_API_HASH_MAP, {JSAPIHashMap::HASHMAP_SIZE_OFFSET- JSAPIHashMap::HASHMAP_TABLE_INDEX}},
1318             {JSType::JS_API_HASH_SET, {JSAPIHashSet::HASHSET_SIZE_OFFSET- JSAPIHashSet::HASHSET_TABLE_INDEX}},
1319             {JSType::JS_API_LIGHT_WEIGHT_MAP, {
1320                 JSAPILightWeightMap::LWP_KEYS_OFFSET - JSAPILightWeightMap::LWP_HASHES_OFFSET,
1321                 JSAPILightWeightMap::LWP_VALUES_OFFSET - JSAPILightWeightMap::LWP_KEYS_OFFSET,
1322                 JSAPILightWeightMap::LWP_LENGTH_OFFSET - JSAPILightWeightMap::LWP_VALUES_OFFSET}},
1323             {JSType::JS_API_LIGHT_WEIGHT_MAP_ITERATOR, {
1324                 JSAPILightWeightMapIterator::NEXT_INDEX_OFFSET - JSAPILightWeightMapIterator::ITERATED_LIGHT_WEIGHT_MAP_OFFSET}},
1325             {JSType::JS_API_LIGHT_WEIGHT_SET, {
1326                 JSAPILightWeightSet::VALUES_OFFSET - JSAPILightWeightSet::HASHES_OFFSET,
1327                 JSAPILightWeightSet::LENGTH_OFFSET - JSAPILightWeightSet::VALUES_OFFSET}},
1328             {JSType::JS_API_LIGHT_WEIGHT_SET_ITERATOR, {
1329                 JSAPILightWeightSetIterator::NEXT_INDEX_OFFSET - JSAPILightWeightSetIterator::ITERATED_LIGHT_WEIGHT_SET_OFFSET}},
1330             {JSType::JS_API_LINKED_LIST, {JSAPILinkedList::SIZE - JSAPILinkedList::DOUBLE_LIST_OFFSET}},
1331             {JSType::JS_API_LINKED_LIST_ITERATOR, {
1332                 JSAPILinkedListIterator::DATA_INDEX_OFFSET - JSAPILinkedListIterator::ITERATED_LINKED_LIST_OFFSET}},
1333             {JSType::JS_API_LIST, {JSAPIList::BIT_FIELD_OFFSET - JSAPIList::SINGLY_LIST_OFFSET}},
1334             {JSType::JS_API_LIST_ITERATOR, {
1335                 JSAPIListIterator::DATA_INDEX_OFFSET - JSAPIListIterator::ITERATED_LIST_OFFSET}},
1336             {JSType::JS_API_PLAIN_ARRAY, {JSAPIPlainArray::VALUES_OFFSET - JSAPIPlainArray::KEYS_OFFSET,
1337                                           JSAPIPlainArray::LENGTH_OFFSET - JSAPIPlainArray::VALUES_OFFSET}},
1338             {JSType::JS_API_PLAIN_ARRAY_ITERATOR, {
1339                 JSAPIPlainArrayIterator::NEXT_INDEX_OFFSET - JSAPIPlainArrayIterator::ITERATED_PLAIN_ARRAY_OFFSET}},
1340             {JSType::JS_API_QUEUE, {JSAPIQueue::FRONT_OFFSET - JSAPIQueue::LENGTH_OFFSET}},
1341             {JSType::JS_API_QUEUE_ITERATOR, {
1342                 JSAPIQueueIterator::NEXT_INDEX_OFFSET - JSAPIQueueIterator::ITERATED_QUEUE_OFFSET}},
1343             {JSType::JS_API_STACK, {}},
1344             {JSType::JS_API_STACK_ITERATOR, {
1345                 JSAPIStackIterator::NEXT_INDEX_OFFSET - JSAPIStackIterator::ITERATED_STACK_OFFSET}},
1346             {JSType::JS_API_TREEMAP_ITERATOR, {
1347                 JSAPITreeMapIterator::ITERATED_ENTRIES_OFFSET - JSAPITreeMapIterator::ITERATED_MAP_OFFSET,
1348                 JSAPITreeMapIterator::NEXT_INDEX_OFFSET - JSAPITreeMapIterator::ITERATED_ENTRIES_OFFSET}},
1349             {JSType::JS_API_TREESET_ITERATOR, {
1350                 JSAPITreeSetIterator::ITERATED_ENTRIES_OFFSET - JSAPITreeSetIterator::ITERATED_SET_OFFSET,
1351                 JSAPITreeSetIterator::NEXT_INDEX_OFFSET - JSAPITreeSetIterator::ITERATED_ENTRIES_OFFSET}},
1352             {JSType::JS_API_TREE_MAP, {JSAPITreeMap::SIZE - JSAPITreeMap::TREE_MAP_OFFSET}},
1353             {JSType::JS_API_TREE_SET, {JSAPITreeSet::SIZE - JSAPITreeSet::TREE_SET_OFFSET}},
1354             {JSType::JS_API_VECTOR, {}},
1355             {JSType::JS_API_VECTOR_ITERATOR, {
1356                 JSAPIVectorIterator::NEXT_INDEX_OFFSET - JSAPIVectorIterator::ITERATED_VECTOR_OFFSET}},
1357             {JSType::JS_ARGUMENTS, {}},
1358             {JSType::JS_ARRAY, {JSArray::TRACE_INDEX_OFFSET - JSArray::LENGTH_OFFSET,
1359                                 JSArray::SIZE - JSArray::TRACK_INFO_OFFSET}},
1360             {JSType::JS_ARRAY_BUFFER, {JSArrayBuffer::BYTE_LENGTH_OFFSET - JSArrayBuffer::DATA_OFFSET}},
1361             {JSType::JS_ARRAY_ITERATOR, {
1362                 JSArrayIterator::NEXT_INDEX_OFFSET - JSArrayIterator::ITERATED_ARRAY_OFFSET}},
1363             {JSType::JS_ASYNCITERATOR, {JSObject::ELEMENTS_OFFSET - JSObject::PROPERTIES_OFFSET,
1364                                         JSObject::SIZE - JSObject::ELEMENTS_OFFSET}},
1365             {JSType::JS_ASYNC_AWAIT_STATUS_FUNCTION, {
1366                 JSAsyncAwaitStatusFunction::SIZE - JSAsyncAwaitStatusFunction::ASYNC_CONTEXT_OFFSET}},
1367             {JSType::JS_ASYNC_FROM_SYNC_ITERATOR, {
1368                 JSAsyncFromSyncIterator::SIZE - JSAsyncFromSyncIterator::SYNC_ITERATOR_RECORD}},
1369             {JSType::JS_ASYNC_FROM_SYNC_ITER_UNWARP_FUNCTION, {
1370                 JSAsyncFromSyncIterUnwarpFunction::SIZE - JSAsyncFromSyncIterUnwarpFunction::DONE_OFFSET}},
1371             {JSType::JS_ASYNC_FUNCTION, {}},
1372             {JSType::JS_ASYNC_FUNC_OBJECT, {
1373                 JSAsyncFuncObject::SIZE - JSAsyncFuncObject::GENERATOR_PROMISE_OFFSET}},
1374             {JSType::JS_ASYNC_GENERATOR_FUNCTION, {}},
1375             {JSType::JS_ASYNC_GENERATOR_OBJECT, {
1376                 JSAsyncGeneratorObject::ASYNC_GENERATOR_QUEUE_OFFSET - JSAsyncGeneratorObject::GENERATOR_CONTEXT_OFFSET,
1377                 JSAsyncGeneratorObject::GENERATOR_OFFSET - JSAsyncGeneratorObject::ASYNC_GENERATOR_QUEUE_OFFSET,
1378                 JSAsyncGeneratorObject::GENERATOR_RESUME_RESULT_OFFSET - JSAsyncGeneratorObject::GENERATOR_OFFSET,
1379                 JSAsyncGeneratorObject::BIT_FIELD_OFFSET - JSAsyncGeneratorObject::GENERATOR_RESUME_RESULT_OFFSET}},
1380             {JSType::JS_ASYNC_GENERATOR_RESUME_NEXT_RETURN_PROCESSOR_RST_FTN, {
1381                 JSAsyncGeneratorResNextRetProRstFtn::SIZE - JSAsyncGeneratorResNextRetProRstFtn::ASYNC_GENERATOR_OBJECT_OFFSET}},
1382             {JSType::JS_ASYNC_MODULE_FULFILLED_FUNCTION, {}},
1383             {JSType::JS_ASYNC_MODULE_REJECTED_FUNCTION, {}},
1384             {JSType::JS_BIGINT64_ARRAY, {
1385                 JSTypedArray::TYPED_ARRAY_NAME_OFFSET - JSTypedArray::VIEWED_ARRAY_BUFFER_OFFSET,
1386                 JSTypedArray::BYTE_LENGTH_OFFSET - JSTypedArray::TYPED_ARRAY_NAME_OFFSET}},
1387             {JSType::JS_BIGUINT64_ARRAY, {
1388                 JSTypedArray::TYPED_ARRAY_NAME_OFFSET - JSTypedArray::VIEWED_ARRAY_BUFFER_OFFSET,
1389                 JSTypedArray::BYTE_LENGTH_OFFSET - JSTypedArray::TYPED_ARRAY_NAME_OFFSET}},
1390             {JSType::JS_BOUND_FUNCTION, {
1391                 JSBoundFunction::BOUND_THIS_OFFSET - JSBoundFunction::BOUND_TARGET_OFFSET,
1392                 JSBoundFunction::BOUND_ARGUMENTS_OFFSET - JSBoundFunction::BOUND_THIS_OFFSET,
1393                 JSBoundFunction::SIZE - JSBoundFunction::BOUND_ARGUMENTS_OFFSET}},
1394             {JSType::JS_CJS_EXPORTS, {CjsExports::SIZE - CjsExports::JS_CJS_EXPORTS_OFFSET}},
1395             {JSType::JS_CJS_MODULE, {CjsModule::ID_OFFSET - CjsModule::JS_CJS_MODULE_OFFSET,
1396                                      CjsModule::PATH_OFFSET - CjsModule::ID_OFFSET,
1397                                      CjsModule::EXPORTS_OFFSET - CjsModule::PATH_OFFSET,
1398                                      CjsModule::BIT_FIELD_OFFSET - CjsModule::EXPORTS_OFFSET}},
1399             {JSType::JS_CJS_REQUIRE, {CjsRequire::CACHE_OFFSET - CjsRequire::JS_CJS_REQUIRE_OFFSET,
1400                                       CjsRequire::SIZE - CjsRequire::CACHE_OFFSET}},
1401             {JSType::JS_COLLATOR, {JSCollator::LOCALE_OFFSET - JSCollator::ICU_FIELD_OFFSET,
1402                                    JSCollator::COLLATION_OFFSET - JSCollator::LOCALE_OFFSET,
1403                                    JSCollator::BOUND_COMPARE_OFFSET - JSCollator::COLLATION_OFFSET,
1404                                    JSCollator::BIT_FIELD_OFFSET - JSCollator::BOUND_COMPARE_OFFSET}},
1405             {JSType::JS_DATA_VIEW, {JSDataView::VIEW_ARRAY_BUFFER_OFFSET - JSDataView::DATA_VIEW_OFFSET,
1406                                     JSDataView::BYTE_LENGTH_OFFSET - JSDataView::VIEW_ARRAY_BUFFER_OFFSET}},
1407             {JSType::JS_DATE, {JSDate::LOCAL_TIME_OFFSET - JSDate::TIME_VALUE_OFFSET,
1408                                JSDate::SIZE - JSDate::LOCAL_TIME_OFFSET}},
1409             {JSType::JS_DATE_TIME_FORMAT, {
1410                 JSDateTimeFormat::CALENDAR_OFFSET - JSDateTimeFormat::LOCALE_OFFSET,
1411                 JSDateTimeFormat::NUMBER_STRING_SYSTEM_OFFSET - JSDateTimeFormat::CALENDAR_OFFSET,
1412                 JSDateTimeFormat::TIME_ZONE_OFFSET - JSDateTimeFormat::NUMBER_STRING_SYSTEM_OFFSET,
1413                 JSDateTimeFormat::LOCALE_ICU_OFFSET - JSDateTimeFormat::TIME_ZONE_OFFSET,
1414                 JSDateTimeFormat::SIMPLE_DATE_TIME_FORMAT_ICU_OFFSET - JSDateTimeFormat::LOCALE_ICU_OFFSET,
1415                 JSDateTimeFormat::ISO8601_OFFSET - JSDateTimeFormat::SIMPLE_DATE_TIME_FORMAT_ICU_OFFSET,
1416                 JSDateTimeFormat::BOUND_FORMAT_OFFSET - JSDateTimeFormat::ISO8601_OFFSET,
1417                 JSDateTimeFormat::BIT_FIELD_OFFSET - JSDateTimeFormat::BOUND_FORMAT_OFFSET}},
1418             {JSType::JS_DISPLAYNAMES, {JSDisplayNames::ICU_LOCALE_DISPPLAY_NAMES - JSDisplayNames::LOCALE_OFFSET,
1419                                        JSDisplayNames::BIT_FIELD_OFFSET - JSDisplayNames::ICU_LOCALE_DISPPLAY_NAMES}},
1420             {JSType::JS_ERROR, {JSObject::ELEMENTS_OFFSET - JSObject::PROPERTIES_OFFSET,
1421                                 JSObject::SIZE - JSObject::ELEMENTS_OFFSET}},
1422             {JSType::JS_EVAL_ERROR, {JSObject::ELEMENTS_OFFSET - JSObject::PROPERTIES_OFFSET,
1423                                      JSObject::SIZE - JSObject::ELEMENTS_OFFSET}},
1424             {JSType::JS_FINALIZATION_REGISTRY, {
1425                 JSFinalizationRegistry::NO_UNREGISTER_OFFSET - JSFinalizationRegistry::CLEANUP_CALLBACK_OFFSET,
1426                 JSFinalizationRegistry::MAYBE_UNREGISTER_OFFSET - JSFinalizationRegistry::NO_UNREGISTER_OFFSET,
1427                 JSFinalizationRegistry::NEXT_OFFSET - JSFinalizationRegistry::MAYBE_UNREGISTER_OFFSET,
1428                 JSFinalizationRegistry::PREV_OFFSET - JSFinalizationRegistry::NEXT_OFFSET,
1429                 JSFinalizationRegistry::SIZE - JSFinalizationRegistry::PREV_OFFSET}},
1430             {JSType::JS_FLOAT32_ARRAY, {
1431                 JSTypedArray::TYPED_ARRAY_NAME_OFFSET - JSTypedArray::VIEWED_ARRAY_BUFFER_OFFSET,
1432                 JSTypedArray::BYTE_LENGTH_OFFSET - JSTypedArray::TYPED_ARRAY_NAME_OFFSET}},
1433             {JSType::JS_FLOAT64_ARRAY, {
1434                 JSTypedArray::TYPED_ARRAY_NAME_OFFSET - JSTypedArray::VIEWED_ARRAY_BUFFER_OFFSET,
1435                 JSTypedArray::BYTE_LENGTH_OFFSET - JSTypedArray::TYPED_ARRAY_NAME_OFFSET}},
1436             {JSType::JS_FORIN_ITERATOR, {
1437                 JSForInIterator::CACHED_HCLASS_OFFSET - JSForInIterator::OBJECT_OFFSET,
1438                 JSForInIterator::KEYS_OFFSET - JSForInIterator::CACHED_HCLASS_OFFSET,
1439                 JSForInIterator::INDEX_OFFSET - JSForInIterator::KEYS_OFFSET}},
1440             {JSType::JS_FUNCTION, {
1441                 JSFunction::LEXICAL_ENV_OFFSET - JSFunction::PROTO_OR_DYNCLASS_OFFSET,
1442                 JSFunction::MACHINECODE_OFFSET - JSFunction::LEXICAL_ENV_OFFSET,
1443                 JSFunction::BASELINECODE_OFFSET - JSFunction::MACHINECODE_OFFSET,
1444                 JSFunction::RAW_PROFILE_TYPE_INFO_OFFSET - JSFunction::BASELINECODE_OFFSET,
1445                 JSFunction::HOME_OBJECT_OFFSET - JSFunction::RAW_PROFILE_TYPE_INFO_OFFSET,
1446                 JSFunction::ECMA_MODULE_OFFSET - JSFunction::HOME_OBJECT_OFFSET,
1447                 JSFunction::WORK_NODE_POINTER_OFFSET - JSFunction::ECMA_MODULE_OFFSET}},
1448             {JSType::JS_FUNCTION_BASE, {JSFunctionBase::CODE_ENTRY_OFFSET - JSFunctionBase::METHOD_OFFSET}},
1449             {JSType::JS_GENERATOR_CONTEXT, {
1450                 GeneratorContext::GENERATOR_METHOD_OFFSET - GeneratorContext::GENERATOR_REGS_ARRAY_OFFSET,
1451                 GeneratorContext::GENERATOR_THIS_OFFSET - GeneratorContext::GENERATOR_METHOD_OFFSET,
1452                 GeneratorContext::GENERATOR_ACC_OFFSET - GeneratorContext::GENERATOR_THIS_OFFSET,
1453                 GeneratorContext::GENERATOR_GENERATOR_OBJECT_OFFSET - GeneratorContext::GENERATOR_ACC_OFFSET,
1454                 GeneratorContext::GENERATOR_LEXICALENV_OFFSET - GeneratorContext::GENERATOR_GENERATOR_OBJECT_OFFSET,
1455                 GeneratorContext::GENERATOR_NREGS_OFFSET - GeneratorContext::GENERATOR_LEXICALENV_OFFSET}},
1456             {JSType::JS_GENERATOR_FUNCTION, {}},
1457             {JSType::JS_GENERATOR_OBJECT, {
1458                 JSGeneratorObject::GENERATOR_RESUME_RESULT_OFFSET - JSGeneratorObject::GENERATOR_CONTEXT_OFFSET,
1459                 JSGeneratorObject::TASK_INFO_OFFSET - JSGeneratorObject::GENERATOR_RESUME_RESULT_OFFSET}},
1460             {JSType::JS_GLOBAL_OBJECT, {}},
1461             {JSType::JS_INT16_ARRAY, {
1462                 JSTypedArray::TYPED_ARRAY_NAME_OFFSET - JSTypedArray::VIEWED_ARRAY_BUFFER_OFFSET,
1463                 JSTypedArray::BYTE_LENGTH_OFFSET - JSTypedArray::TYPED_ARRAY_NAME_OFFSET}},
1464             {JSType::JS_INT32_ARRAY, {
1465                 JSTypedArray::TYPED_ARRAY_NAME_OFFSET - JSTypedArray::VIEWED_ARRAY_BUFFER_OFFSET,
1466                 JSTypedArray::BYTE_LENGTH_OFFSET - JSTypedArray::TYPED_ARRAY_NAME_OFFSET}},
1467             {JSType::JS_INT8_ARRAY, {
1468                 JSTypedArray::TYPED_ARRAY_NAME_OFFSET - JSTypedArray::VIEWED_ARRAY_BUFFER_OFFSET,
1469                 JSTypedArray::BYTE_LENGTH_OFFSET - JSTypedArray::TYPED_ARRAY_NAME_OFFSET}},
1470             {JSType::JS_INTL, {JSIntl::SIZE - JSIntl::FALLBACK_SYMBOL}},
1471             {JSType::JS_INTL_BOUND_FUNCTION, {
1472                 JSIntlBoundFunction::DATETIME_FORMAT_OFFSET - JSIntlBoundFunction::NUMBER_FORMAT_OFFSET,
1473                 JSIntlBoundFunction::COLLATOR_OFFSET - JSIntlBoundFunction::DATETIME_FORMAT_OFFSET,
1474                 JSIntlBoundFunction::SIZE - JSIntlBoundFunction::COLLATOR_OFFSET}},
1475             {JSType::JS_ITERATOR, {JSObject::ELEMENTS_OFFSET - JSObject::PROPERTIES_OFFSET,
1476                                    JSObject::SIZE - JSObject::ELEMENTS_OFFSET}},
1477             {JSType::JS_LIST_FORMAT, {JSListFormat::ICU_LIST_FORMAT - JSListFormat::LOCALE_OFFSET,
1478                                       JSListFormat::BIT_FIELD_OFFSET - JSListFormat::ICU_LIST_FORMAT}},
1479             {JSType::JS_LOCALE, {JSLocale::SIZE - JSLocale::ICU_FIELD_OFFSET}},
1480             {JSType::JS_MAP, {JSMap::SIZE - JSMap::LINKED_MAP_OFFSET}},
1481             {JSType::JS_MAP_ITERATOR, {JSMapIterator::NEXT_INDEX_OFFSET - JSMapIterator::ITERATED_MAP_OFFSET}},
1482             {JSType::JS_MODULE_NAMESPACE, {
1483                 ModuleNamespace::EXPORTS_OFFSET - ModuleNamespace::MODULE_OFFSET,
1484                 ModuleNamespace::DEREGISTER_PROCESSION_OFFSET - ModuleNamespace::EXPORTS_OFFSET,
1485                 ModuleNamespace::SIZE - ModuleNamespace::DEREGISTER_PROCESSION_OFFSET}},
1486             {JSType::JS_NATIVE_POINTER, {
1487                 JSNativePointer::FLAG_OFFSET- JSNativePointer::DATA_SIZE_OFFSET}},
1488             {JSType::JS_NUMBER_FORMAT, {
1489                 JSNumberFormat::NUMBER_STRING_SYSTEM_OFFSET - JSNumberFormat::LOCALE_OFFSET,
1490                 JSNumberFormat::CURRENCY_OFFSET - JSNumberFormat::NUMBER_STRING_SYSTEM_OFFSET,
1491                 JSNumberFormat::UNIT_OFFSET - JSNumberFormat::CURRENCY_OFFSET,
1492                 JSNumberFormat::MINIMUM_INTEGER_DIGITS_OFFSET - JSNumberFormat::UNIT_OFFSET,
1493                 JSNumberFormat::MINIMUM_FRACTION_DIGITS_OFFSET - JSNumberFormat::MINIMUM_INTEGER_DIGITS_OFFSET,
1494                 JSNumberFormat::MAXIMUM_FRACTION_DIGITS_OFFSET - JSNumberFormat::MINIMUM_FRACTION_DIGITS_OFFSET,
1495                 JSNumberFormat::MINIMUM_SIGNIFICANT_DIGITS_OFFSET - JSNumberFormat::MAXIMUM_FRACTION_DIGITS_OFFSET,
1496                 JSNumberFormat::MAXIMUM_SIGNIFICANT_DIGITS_OFFSET - JSNumberFormat::MINIMUM_SIGNIFICANT_DIGITS_OFFSET,
1497                 JSNumberFormat::USER_GROUPING_OFFSET - JSNumberFormat::MAXIMUM_SIGNIFICANT_DIGITS_OFFSET,
1498                 JSNumberFormat::BOUND_FORMAT_OFFSET - JSNumberFormat::USER_GROUPING_OFFSET,
1499                 JSNumberFormat::ICU_FIELD_OFFSET - JSNumberFormat::BOUND_FORMAT_OFFSET,
1500                 JSNumberFormat::BIT_FIELD_OFFSET - JSNumberFormat::ICU_FIELD_OFFSET}},
1501             {JSType::JS_OBJECT, {
1502                 JSObject::ELEMENTS_OFFSET - JSObject::PROPERTIES_OFFSET,
1503                 JSObject::SIZE - JSObject::ELEMENTS_OFFSET}},
1504             {JSType::JS_OOM_ERROR, {
1505                 JSObject::ELEMENTS_OFFSET - JSObject::PROPERTIES_OFFSET,
1506                 JSObject::SIZE - JSObject::ELEMENTS_OFFSET}},
1507             {JSType::JS_PLURAL_RULES, {
1508                 JSPluralRules::MINIMUM_INTEGER_DIGITS_OFFSET - JSPluralRules::LOCALE_OFFSET,
1509                 JSPluralRules::MINIMUM_FRACTION_DIGITS_OFFSET - JSPluralRules::MINIMUM_INTEGER_DIGITS_OFFSET,
1510                 JSPluralRules::MAXIMUM_FRACTION_DIGITS_OFFSET - JSPluralRules::MINIMUM_FRACTION_DIGITS_OFFSET,
1511                 JSPluralRules::MININUM_SIGNIFICANT_DIGITS_OFFSET - JSPluralRules::MAXIMUM_FRACTION_DIGITS_OFFSET,
1512                 JSPluralRules::MAXINUM_SIGNIFICANT_DIGITS_OFFSET - JSPluralRules::MININUM_SIGNIFICANT_DIGITS_OFFSET,
1513                 JSPluralRules::ICU_PLURAL_RULES_OFFSET - JSPluralRules::MAXINUM_SIGNIFICANT_DIGITS_OFFSET,
1514                 JSPluralRules::ICU_NUMBER_FORMAT_OFFSET - JSPluralRules::ICU_PLURAL_RULES_OFFSET,
1515                 JSPluralRules::BIT_FIELD_OFFSET - JSPluralRules::ICU_NUMBER_FORMAT_OFFSET}},
1516             {JSType::JS_PRIMITIVE_REF, {JSPrimitiveRef::SIZE - JSPrimitiveRef::VALUE_OFFSET}},
1517             {JSType::JS_PROMISE, {
1518                 JSPromise::PROMISE_FULFILL_REACTIONS_OFFSET - JSPromise::PROMISE_RESULT_OFFSET,
1519                 JSPromise::PROMISE_REJECT_REACTIONS_OFFSET - JSPromise::PROMISE_FULFILL_REACTIONS_OFFSET,
1520                 JSPromise::BIT_FIELD_OFFSET - JSPromise::PROMISE_REJECT_REACTIONS_OFFSET}},
1521             {JSType::JS_PROMISE_ALL_RESOLVE_ELEMENT_FUNCTION, {
1522                 JSPromiseAllResolveElementFunction::VALUES_OFFSET - JSPromiseAllResolveElementFunction::INDEX_OFFSET,
1523                 JSPromiseAllResolveElementFunction::CAPABILITIES_OFFSET - JSPromiseAllResolveElementFunction::VALUES_OFFSET,
1524                 JSPromiseAllResolveElementFunction::REMAINING_ELEMENTS_OFFSET - JSPromiseAllResolveElementFunction::CAPABILITIES_OFFSET,
1525                 JSPromiseAllResolveElementFunction::ALREADY_CALLED_OFFSET - JSPromiseAllResolveElementFunction::REMAINING_ELEMENTS_OFFSET,
1526                 JSPromiseAllResolveElementFunction::SIZE - JSPromiseAllResolveElementFunction::ALREADY_CALLED_OFFSET}},
1527             {JSType::JS_PROMISE_ALL_SETTLED_ELEMENT_FUNCTION, {
1528                 JSPromiseAllSettledElementFunction::VALUES_OFFSET - JSPromiseAllSettledElementFunction::ALREADY_CALLED_OFFSET,
1529                 JSPromiseAllSettledElementFunction::CAPABILITY_OFFSET - JSPromiseAllSettledElementFunction::VALUES_OFFSET,
1530                 JSPromiseAllSettledElementFunction::REMAINING_ELEMENTS_OFFSET - JSPromiseAllSettledElementFunction::CAPABILITY_OFFSET,
1531                 JSPromiseAllSettledElementFunction::INDEX_OFFSET - JSPromiseAllSettledElementFunction::REMAINING_ELEMENTS_OFFSET}},
1532             {JSType::JS_PROMISE_ANY_REJECT_ELEMENT_FUNCTION, {
1533                 JSPromiseAnyRejectElementFunction::CAPABILITY_OFFSET - JSPromiseAnyRejectElementFunction::ERRORS_OFFSET,
1534                 JSPromiseAnyRejectElementFunction::REMAINING_ELEMENTS_OFFSET - JSPromiseAnyRejectElementFunction::CAPABILITY_OFFSET,
1535                 JSPromiseAnyRejectElementFunction::ALREADY_CALLED_OFFSET - JSPromiseAnyRejectElementFunction::REMAINING_ELEMENTS_OFFSET,
1536                 JSPromiseAnyRejectElementFunction::INDEX_OFFSET - JSPromiseAnyRejectElementFunction::ALREADY_CALLED_OFFSET}},
1537             {JSType::JS_PROMISE_EXECUTOR_FUNCTION, {
1538                 JSPromiseExecutorFunction::SIZE - JSPromiseExecutorFunction::CAPABILITY_OFFSET}},
1539             {JSType::JS_PROMISE_FINALLY_FUNCTION, {
1540                 JSPromiseFinallyFunction::ONFINALLY_OFFSET - JSPromiseFinallyFunction::CONSTRUCTOR_OFFSET,
1541                 JSPromiseFinallyFunction::SIZE - JSPromiseFinallyFunction::ONFINALLY_OFFSET}},
1542             {JSType::JS_PROMISE_REACTIONS_FUNCTION, {
1543                 JSPromiseReactionsFunction::ALREADY_RESOLVED_OFFSET - JSPromiseReactionsFunction::PROMISE_OFFSET,
1544                 JSPromiseReactionsFunction::SIZE - JSPromiseReactionsFunction::ALREADY_RESOLVED_OFFSET}},
1545             {JSType::JS_PROMISE_VALUE_THUNK_OR_THROWER_FUNCTION, {
1546                 JSPromiseValueThunkOrThrowerFunction::SIZE - JSPromiseValueThunkOrThrowerFunction::RESULT_OFFSET}},
1547             {JSType::JS_PROXY, {JSProxy::HANDLER_OFFSET - JSProxy::TARGET_OFFSET,
1548                                 JSProxy::METHOD_OFFSET - JSProxy::HANDLER_OFFSET,
1549                                 JSProxy::PRIVATE_FIELD_OFFSET - JSProxy::METHOD_OFFSET,
1550                                 JSProxy::BIT_FIELD_OFFSET - JSProxy::PRIVATE_FIELD_OFFSET}},
1551             {JSType::JS_PROXY_REVOC_FUNCTION, {
1552                 JSProxyRevocFunction::SIZE - JSProxyRevocFunction::REVOCABLE_PROXY_OFFSET}},
1553             {JSType::JS_RANGE_ERROR, {JSObject::ELEMENTS_OFFSET - JSObject::PROPERTIES_OFFSET,
1554                                       JSObject::SIZE - JSObject::ELEMENTS_OFFSET}},
1555             {JSType::JS_REALM, {JSRealm::GLOBAL_ENV_OFFSET - JSRealm::VALUE_OFFSET,
1556                                 JSRealm::SIZE - JSRealm::GLOBAL_ENV_OFFSET}},
1557             {JSType::JS_REFERENCE_ERROR, {JSObject::ELEMENTS_OFFSET - JSObject::PROPERTIES_OFFSET,
1558                                           JSObject::SIZE - JSObject::ELEMENTS_OFFSET}},
1559             {JSType::JS_REG_EXP, {JSRegExp::ORIGINAL_SOURCE_OFFSET - JSRegExp::REGEXP_BYTE_CODE_OFFSET,
1560                                  JSRegExp::ORIGINAL_FLAGS_OFFSET - JSRegExp::ORIGINAL_SOURCE_OFFSET,
1561                                  JSRegExp::GROUP_NAME_OFFSET - JSRegExp::ORIGINAL_FLAGS_OFFSET,
1562                                  JSRegExp::LENGTH_OFFSET - JSRegExp::GROUP_NAME_OFFSET}},
1563             {JSType::JS_REG_EXP_ITERATOR, {
1564                 JSRegExpIterator::ITERATED_STRING_OFFSET - JSRegExpIterator::ITERATING_REGEXP_OFFSET,
1565                 JSRegExpIterator::BIT_FIELD_OFFSET - JSRegExpIterator::ITERATED_STRING_OFFSET}},
1566             {JSType::JS_RELATIVE_TIME_FORMAT, {
1567                 JSRelativeTimeFormat::NUMBERING_SYSTEM_OFFSET - JSRelativeTimeFormat::LOCALE_OFFSET,
1568                 JSRelativeTimeFormat::ICU_FIELD_OFFSET - JSRelativeTimeFormat::NUMBERING_SYSTEM_OFFSET,
1569                 JSRelativeTimeFormat::BIT_FIELD_OFFSET - JSRelativeTimeFormat::ICU_FIELD_OFFSET}},
1570             {JSType::JS_SEGMENTER, {JSSegmenter::ICU_FIELD_OFFSET - JSSegmenter::LOCALE_OFFSET,
1571                                     JSSegmenter::BIT_FIELD_OFFSET - JSSegmenter::ICU_FIELD_OFFSET}},
1572             {JSType::JS_SEGMENTS, {JSSegments::SEGMENTS_STRING_OFFSET - JSSegments::ICU_FIELD_OFFSET,
1573                                    JSSegments::UNICODE_STRING_OFFSET - JSSegments::SEGMENTS_STRING_OFFSET,
1574                                    JSSegments::BIT_FIELD_OFFSET - JSSegments::UNICODE_STRING_OFFSET}},
1575             {JSType::JS_SEGMENT_ITERATOR, {
1576                 JSSegmentIterator::SEGMENTS_STRING_OFFSET - JSSegmentIterator::ICU_FIELD_OFFSET,
1577                 JSSegmentIterator::UNICODE_STRING_OFFSET - JSSegmentIterator::SEGMENTS_STRING_OFFSET,
1578                 JSSegmentIterator::BIT_FIELD_OFFSET - JSSegmentIterator::UNICODE_STRING_OFFSET}},
1579             {JSType::JS_SENDABLE_ARRAY_BUFFER, {
1580                 JSSendableArrayBuffer::BYTE_LENGTH_OFFSET- JSSendableArrayBuffer::DATA_OFFSET}},
1581             {JSType::JS_SET, {JSSet::SIZE - JSSet::LINKED_SET_OFFSET}},
1582             {JSType::JS_SET_ITERATOR, {
1583                 JSSetIterator::NEXT_INDEX_OFFSET - JSSetIterator::ITERATED_SET_OFFSET}},
1584             {JSType::JS_SHARED_ARRAY, {
1585                 JSSharedArray::MOD_RECORD_OFFSET - JSSharedArray::TRACK_INFO_OFFSET}},
1586             {JSType::JS_SHARED_ARRAY_BUFFER, {
1587                 JSArrayBuffer::BYTE_LENGTH_OFFSET - JSArrayBuffer::DATA_OFFSET}},
1588             {JSType::JS_SHARED_ARRAY_ITERATOR, {
1589                 JSSharedArrayIterator::NEXT_INDEX_OFFSET - JSSharedArrayIterator::ITERATED_ARRAY_OFFSET}},
1590             {JSType::JS_SHARED_ASYNC_FUNCTION, {}},
1591             {JSType::JS_SHARED_BIGINT64_ARRAY, {}},
1592             {JSType::JS_SHARED_BIGUINT64_ARRAY, {}},
1593             {JSType::JS_SHARED_FLOAT32_ARRAY, {}},
1594             {JSType::JS_SHARED_FLOAT64_ARRAY, {}},
1595             {JSType::JS_SHARED_FUNCTION, {}},
1596             {JSType::JS_SHARED_INT16_ARRAY, {}},
1597             {JSType::JS_SHARED_INT32_ARRAY, {}},
1598             {JSType::JS_SHARED_INT8_ARRAY, {}},
1599             {JSType::JS_SHARED_MAP, {
1600                 JSSharedMap::MOD_RECORD_OFFSET - JSSharedMap::LINKED_MAP_OFFSET}},
1601             {JSType::JS_SHARED_MAP_ITERATOR, {
1602                 JSSharedMapIterator::NEXT_INDEX_OFFSET - JSSharedMapIterator::ITERATED_MAP_OFFSET}},
1603             {JSType::JS_SHARED_OBJECT, {}},
1604             {JSType::JS_SHARED_SET, {
1605                 JSSharedSet::MOD_RECORD_OFFSET - JSSharedSet::LINKED_SET_OFFSET}},
1606             {JSType::JS_SHARED_SET_ITERATOR, {
1607                 JSSharedSetIterator::NEXT_INDEX_OFFSET - JSSharedSetIterator::ITERATED_SET_OFFSET}},
1608             {JSType::JS_SHARED_TYPED_ARRAY, {}},
1609             {JSType::JS_SHARED_UINT16_ARRAY, {}},
1610             {JSType::JS_SHARED_UINT32_ARRAY, {}},
1611             {JSType::JS_SHARED_UINT8_ARRAY, {}},
1612             {JSType::JS_SHARED_UINT8_CLAMPED_ARRAY, {}},
1613             {JSType::JS_STRING_ITERATOR, {
1614                 JSStringIterator::STRING_ITERATOR_NEXT_INDEX_OFFSET - JSStringIterator::ITERATED_STRING_OFFSET}},
1615             {JSType::JS_SYNTAX_ERROR, {
1616                 JSObject::ELEMENTS_OFFSET - JSObject::PROPERTIES_OFFSET, JSObject::SIZE - JSObject::ELEMENTS_OFFSET}},
1617             {JSType::JS_TERMINATION_ERROR, {
1618                 JSObject::ELEMENTS_OFFSET - JSObject::PROPERTIES_OFFSET, JSObject::SIZE - JSObject::ELEMENTS_OFFSET}},
1619             {JSType::JS_TYPED_ARRAY, {
1620                 JSTypedArray::TYPED_ARRAY_NAME_OFFSET - JSTypedArray::VIEWED_ARRAY_BUFFER_OFFSET,
1621                 JSTypedArray::BYTE_LENGTH_OFFSET - JSTypedArray::TYPED_ARRAY_NAME_OFFSET}},
1622             {JSType::JS_TYPE_ERROR, {
1623                 JSObject::ELEMENTS_OFFSET - JSObject::PROPERTIES_OFFSET, JSObject::SIZE - JSObject::ELEMENTS_OFFSET}},
1624             {JSType::JS_UINT16_ARRAY, {
1625                 JSTypedArray::TYPED_ARRAY_NAME_OFFSET - JSTypedArray::VIEWED_ARRAY_BUFFER_OFFSET,
1626                 JSTypedArray::BYTE_LENGTH_OFFSET - JSTypedArray::TYPED_ARRAY_NAME_OFFSET}},
1627             {JSType::JS_UINT32_ARRAY, {
1628                 JSTypedArray::TYPED_ARRAY_NAME_OFFSET - JSTypedArray::VIEWED_ARRAY_BUFFER_OFFSET,
1629                 JSTypedArray::BYTE_LENGTH_OFFSET - JSTypedArray::TYPED_ARRAY_NAME_OFFSET}},
1630             {JSType::JS_UINT8_ARRAY, {
1631                 JSTypedArray::TYPED_ARRAY_NAME_OFFSET - JSTypedArray::VIEWED_ARRAY_BUFFER_OFFSET,
1632                 JSTypedArray::BYTE_LENGTH_OFFSET - JSTypedArray::TYPED_ARRAY_NAME_OFFSET}},
1633             {JSType::JS_UINT8_CLAMPED_ARRAY, {
1634                 JSTypedArray::TYPED_ARRAY_NAME_OFFSET - JSTypedArray::VIEWED_ARRAY_BUFFER_OFFSET,
1635                 JSTypedArray::BYTE_LENGTH_OFFSET - JSTypedArray::TYPED_ARRAY_NAME_OFFSET}},
1636             {JSType::JS_URI_ERROR, {
1637                 JSObject::ELEMENTS_OFFSET - JSObject::PROPERTIES_OFFSET,
1638                 JSObject::SIZE - JSObject::ELEMENTS_OFFSET}},
1639             {JSType::JS_WEAK_MAP, {JSWeakMap::SIZE - JSWeakMap::LINKED_MAP_OFFSET}},
1640             {JSType::JS_WEAK_REF, {JSWeakRef::SIZE - JSWeakRef::WEAK_OBJECT_OFFSET}},
1641             {JSType::JS_WEAK_SET, {JSWeakSet::SIZE - JSWeakSet::LINKED_SET_OFFSET}},
1642             {JSType::LEXICAL_ENV, {}},
1643             {JSType::LINE_STRING, {}},
1644             {JSType::LINKED_NODE, {LinkedNode::SIZE - LinkedNode::NEXT_OFFSET}},
1645             {JSType::LOCAL_EXPORTENTRY_RECORD, {
1646                 LocalExportEntry::LOCAL_NAME_OFFSET - LocalExportEntry::LOCAL_EXPORT_ENTRY_OFFSET,
1647                 LocalExportEntry::LOCAL_INDEX_OFFSET - LocalExportEntry::LOCAL_NAME_OFFSET}},
1648             {JSType::MACHINE_CODE_OBJECT, {}},
1649             {JSType::MARKER_CELL, {}},
1650             {JSType::METHOD, {Method::CALL_FIELD_OFFSET - Method::CONSTANT_POOL_OFFSET}},
1651             {JSType::MICRO_JOB_QUEUE, {
1652                 job::MicroJobQueue::SCRIPT_JOB_QUEUE_OFFSET - job::MicroJobQueue::PROMISE_JOB_QUEUE_OFFSET,
1653                 job::MicroJobQueue::SIZE - job::MicroJobQueue::SCRIPT_JOB_QUEUE_OFFSET}},
1654             {JSType::MODULE_RECORD, {}},
1655             {JSType::MUTANT_TAGGED_ARRAY, {}},
1656             {JSType::NATIVE_MODULE_FAILURE_INFO, {
1657                 NativeModuleFailureInfo::SIZE - NativeModuleFailureInfo::ARK_NATIVE_MODULE_FAILURE_INFO_OFFSET}},
1658             {JSType::PENDING_JOB, {job::PendingJob::ARGUMENT_OFFSET - job::PendingJob::JOB_OFFSET,
1659                                    job::PendingJob::SIZE - job::PendingJob::ARGUMENT_OFFSET}},
1660             {JSType::PROFILE_TYPE_INFO, {}},
1661             {JSType::PROFILE_TYPE_INFO_CELL_0, {
1662                 ProfileTypeInfoCell::MACHINE_CODE_OFFSET - ProfileTypeInfoCell::VALUE_OFFSET,
1663                 ProfileTypeInfoCell::BASELINE_CODE_OFFSET - ProfileTypeInfoCell::MACHINE_CODE_OFFSET,
1664                 ProfileTypeInfoCell::HANDLE_OFFSET - ProfileTypeInfoCell::BASELINE_CODE_OFFSET,
1665                 ProfileTypeInfoCell::LAST_OFFSET - ProfileTypeInfoCell::HANDLE_OFFSET}},
1666             {JSType::PROFILE_TYPE_INFO_CELL_1, {
1667                 ProfileTypeInfoCell::MACHINE_CODE_OFFSET - ProfileTypeInfoCell::VALUE_OFFSET,
1668                 ProfileTypeInfoCell::BASELINE_CODE_OFFSET - ProfileTypeInfoCell::MACHINE_CODE_OFFSET,
1669                 ProfileTypeInfoCell::HANDLE_OFFSET - ProfileTypeInfoCell::BASELINE_CODE_OFFSET,
1670                 ProfileTypeInfoCell::LAST_OFFSET - ProfileTypeInfoCell::HANDLE_OFFSET}},
1671             {JSType::PROFILE_TYPE_INFO_CELL_N, {
1672                 ProfileTypeInfoCell::MACHINE_CODE_OFFSET - ProfileTypeInfoCell::VALUE_OFFSET,
1673                 ProfileTypeInfoCell::BASELINE_CODE_OFFSET - ProfileTypeInfoCell::MACHINE_CODE_OFFSET,
1674                 ProfileTypeInfoCell::HANDLE_OFFSET - ProfileTypeInfoCell::BASELINE_CODE_OFFSET,
1675                 ProfileTypeInfoCell::LAST_OFFSET - ProfileTypeInfoCell::HANDLE_OFFSET}},
1676             {JSType::PROGRAM, {Program::SIZE - Program::MAIN_FUNCTION_OFFSET}},
1677             {JSType::PROMISE_CAPABILITY, {
1678                 PromiseCapability::RESOLVE_OFFSET - PromiseCapability::PROMISE_OFFSET,
1679                 PromiseCapability::REJECT_OFFSET - PromiseCapability::RESOLVE_OFFSET,
1680                 PromiseCapability::SIZE - PromiseCapability::REJECT_OFFSET}},
1681             {JSType::PROMISE_ITERATOR_RECORD, {
1682                 PromiseIteratorRecord::BIT_FIELD_OFFSET - PromiseIteratorRecord::ITERATOR_OFFSET}},
1683             {JSType::PROMISE_REACTIONS, {
1684                 PromiseReaction::HANDLER_OFFSET - PromiseReaction::PROMISE_CAPABILITY_OFFSET,
1685                 PromiseReaction::BIT_FIELD_OFFSET - PromiseReaction::HANDLER_OFFSET}},
1686             {JSType::PROMISE_RECORD, {PromiseRecord::SIZE - PromiseRecord::VALUE_OFFSET}},
1687             {JSType::PROPERTY_BOX, {PropertyBox::SIZE - PropertyBox::VALUE_OFFSET}},
1688             {JSType::PROTOTYPE_HANDLER, {
1689                 PrototypeHandler::PROTO_CELL_OFFSET - PrototypeHandler::HANDLER_INFO_OFFSET,
1690                 PrototypeHandler::HOLDER_OFFSET - PrototypeHandler::PROTO_CELL_OFFSET,
1691                 PrototypeHandler::ACCESSOR_JSFUNCTION_OFFSET - PrototypeHandler::HOLDER_OFFSET,
1692                 PrototypeHandler::ACCESSOR_METHOD_ID_OFFSET - PrototypeHandler::PrototypeHandler::ACCESSOR_JSFUNCTION_OFFSET}},
1693             {JSType::PROTOTYPE_INFO, {
1694                 ProtoChangeDetails::REGISTER_INDEX_OFFSET - ProtoChangeDetails::CHANGE_LISTENER_OFFSET}},
1695             {JSType::PROTO_CHANGE_MARKER, {}},
1696             {JSType::RB_TREENODE, {
1697                 RBTreeNode::RIGHT_OFFSET - RBTreeNode::LEFT_OFFSET,
1698                 RBTreeNode::ISRED_OFFSET - RBTreeNode::RIGHT_OFFSET,
1699                 RBTreeNode::COUNT_OFFSET - RBTreeNode::ISRED_OFFSET}},
1700             {JSType::RESOLVEDBINDING_RECORD, {
1701                 ResolvedBinding::BINDING_NAME_OFFSET - ResolvedBinding::MODULE_OFFSET,
1702                 ResolvedBinding::SIZE - ResolvedBinding::BINDING_NAME_OFFSET}},
1703             {JSType::RESOLVEDINDEXBINDING_RECORD, {
1704                 ResolvedIndexBinding::INDEX_OFFSET - ResolvedIndexBinding::MODULE_OFFSET,
1705                 ResolvedIndexBinding::END_OFFSET - ResolvedIndexBinding::INDEX_OFFSET}},
1706             {JSType::RESOLVEDRECORDBINDING_RECORD, {
1707                 ResolvedRecordBinding::BINDING_NAME_OFFSET - ResolvedRecordBinding::MODULE_RECORD_OFFSET,
1708                 ResolvedRecordBinding::SIZE - ResolvedRecordBinding::BINDING_NAME_OFFSET}},
1709             {JSType::RESOLVEDRECORDINDEXBINDING_RECORD, {
1710                 ResolvedRecordIndexBinding::ABC_FILE_NAME - ResolvedRecordIndexBinding::MODULE_RECORD_INDEX_OFFSET,
1711                 ResolvedRecordIndexBinding::INDEX_OFFSET - ResolvedRecordIndexBinding::ABC_FILE_NAME}},
1712             {JSType::RESOLVING_FUNCTIONS_RECORD, {
1713                 ResolvingFunctionsRecord::REJECT_FUNCTION_OFFSET - ResolvingFunctionsRecord::RESOLVE_FUNCTION_OFFSET,
1714                 ResolvingFunctionsRecord::SIZE - ResolvingFunctionsRecord::REJECT_FUNCTION_OFFSET}},
1715             {JSType::SENDABLE_ENV, {}},
1716             {JSType::SLICED_STRING, {SlicedString::STARTINDEX_OFFSET - SlicedString::PARENT_OFFSET}},
1717             {JSType::SOURCE_TEXT_MODULE_RECORD, {
1718                 SourceTextModule::NAMESPACE_OFFSET - SourceTextModule::SOURCE_TEXT_MODULE_OFFSET,
1719                 SourceTextModule::MODULE_REQUESTS_OFFSET - SourceTextModule::NAMESPACE_OFFSET,
1720                 SourceTextModule::REQUESTED_MODULES_OFFSET - SourceTextModule::MODULE_REQUESTS_OFFSET,
1721                 SourceTextModule::IMPORT_ENTRIES_OFFSET - SourceTextModule::REQUESTED_MODULES_OFFSET,
1722                 SourceTextModule::LOCAL_EXPORT_ENTTRIES_OFFSET - SourceTextModule::IMPORT_ENTRIES_OFFSET,
1723                 SourceTextModule::INDIRECT_EXPORT_ENTTRIES_OFFSET - SourceTextModule::LOCAL_EXPORT_ENTTRIES_OFFSET,
1724                 SourceTextModule::START_EXPORT_ENTTRIES_OFFSET - SourceTextModule::INDIRECT_EXPORT_ENTTRIES_OFFSET,
1725                 SourceTextModule::NAME_DICTIONARY_OFFSET - SourceTextModule::START_EXPORT_ENTTRIES_OFFSET,
1726                 SourceTextModule::CYCLE_ROOT_OFFSET - SourceTextModule::NAME_DICTIONARY_OFFSET,
1727                 SourceTextModule::TOP_LEVEL_CAPABILITY_OFFSET - SourceTextModule::CYCLE_ROOT_OFFSET,
1728                 SourceTextModule::ASYNC_PARENT_MODULES_OFFSET - SourceTextModule::TOP_LEVEL_CAPABILITY_OFFSET,
1729                 SourceTextModule::SENDABLE_ENV_OFFSET - SourceTextModule::ASYNC_PARENT_MODULES_OFFSET,
1730                 SourceTextModule::EXCEPTION_OFFSET - SourceTextModule::SENDABLE_ENV_OFFSET,
1731                 SourceTextModule::DFS_ANCESTOR_INDEX_OFFSET - SourceTextModule::EXCEPTION_OFFSET}},
1732             {JSType::STAR_EXPORTENTRY_RECORD, {StarExportEntry::SIZE - StarExportEntry::STAR_EXPORT_ENTRY_OFFSET}},
1733             {JSType::STORE_TS_HANDLER, {StoreAOTHandler::PROTO_CELL_OFFSET - StoreAOTHandler::HANDLER_INFO_OFFSET,
1734                                         StoreAOTHandler::HOLDER_OFFSET - StoreAOTHandler::PROTO_CELL_OFFSET,
1735                                         StoreAOTHandler::SIZE - StoreAOTHandler::HOLDER_OFFSET}},
1736             {JSType::SYMBOL, {JSSymbol::HASHFIELD_OFFSET - JSSymbol::DESCRIPTION_OFFSET}},
1737             {JSType::TAGGED_ARRAY, {
1738                 TaggedArray::EXTRA_LENGTH_OFFSET - TaggedArray::LENGTH_OFFSET, TaggedArray::LENGTH_OFFSET}},
1739             {JSType::TAGGED_DICTIONARY, {}},
1740             {JSType::TEMPLATE_MAP, {}},
1741             {JSType::TRACK_INFO, {
1742                 TrackInfo::CACHED_FUNC_OFFSET - TrackInfo::CACHED_HCLASS_OFFSET,
1743                 TrackInfo::BIT_FIELD_OFFSET - TrackInfo::CACHED_FUNC_OFFSET}},
1744             {JSType::TRANSITION_HANDLER, {
1745                 TransitionHandler::TRANSITION_HCLASS_OFFSET - TransitionHandler::HANDLER_INFO_OFFSET,
1746                 TransitionHandler::SIZE - TransitionHandler::TRANSITION_HCLASS_OFFSET}},
1747             {JSType::TRANS_WITH_PROTO_HANDLER, {
1748                 TransWithProtoHandler::TRANSITION_HCLASS_OFFSET - TransWithProtoHandler::HANDLER_INFO_OFFSET,
1749                 TransWithProtoHandler::PROTO_CELL_OFFSET - TransWithProtoHandler::TRANSITION_HCLASS_OFFSET,
1750                 TransWithProtoHandler::SIZE - TransWithProtoHandler::PROTO_CELL_OFFSET}},
1751             {JSType::TREE_STRING, {TreeEcmaString::SECOND_OFFSET - TreeEcmaString::FIRST_OFFSET,
1752                                    TreeEcmaString::SIZE - TreeEcmaString::SECOND_OFFSET}},
1753             {JSType::VTABLE, {}}
1754         };
1755     }
1756 
1757     ~JSMetadataTestHelper() = default;
1758 
1759     enum MetadataStatus {
1760         UNINITIALIZED = 0,
1761         INITIALIZED
1762     };
1763 
1764     struct Metadata {
1765         std::string name {};
1766         std::unordered_map<std::string, std::pair<int, int>> offsets {};
1767         int endOffset {};
1768         std::vector<std::string> parents {};
1769         int status {MetadataStatus::UNINITIALIZED};
1770     };
1771 
ReadAndParseMetadataJson(std::string & filePath,Metadata & metadata)1772     void ReadAndParseMetadataJson(std::string &filePath, Metadata &metadata)
1773     {
1774         // Open specific metadata json file and using cJSON to parse
1775         std::ifstream jsonFile(filePath);
1776         if (!jsonFile.is_open()) {
1777             std::cout << "Fail to open metadata file: " << filePath << std::endl;
1778             return;
1779         }
1780         std::stringstream buffer;
1781         buffer << jsonFile.rdbuf();
1782         auto json = cJSON_ParseWithOpts(buffer.str().c_str(), nullptr, true);
1783         if (!json) {
1784             std::cout << "Fail to read metadata file: " << filePath << std::endl;
1785             jsonFile.close();
1786             return;
1787         }
1788         jsonFile.close();
1789         // Get "name" from json and set it to metadata.name
1790         if (!GetStringFromJson(json, "name", metadata.name)) {
1791             std::cout << "Fail to read name: " << filePath << std::endl;
1792             return;
1793         }
1794         // Get "end_offset" from json and set it to metadata.endoffset
1795         if (!GetIntFromJson(json, "end_offset", metadata.endOffset)) {
1796             std::cout << "Fail to read endOffset: " << filePath << std::endl;
1797             return;
1798         }
1799         // Get "offsets" and "parents" arrays from json
1800         cJSON *offsets {};
1801         cJSON *parents {};
1802         if (!GetArrayFromJson(json, "offsets", &offsets)) {
1803             std::cout << "Fail to read offsets array: " << filePath << std::endl;
1804             return;
1805         }
1806         if (!GetArrayFromJson(json, "parents", &parents)) {
1807             std::cout << "Fail to read parents array: " << filePath << std::endl;
1808             return;
1809         }
1810         // Iterate over those two arrays and set items to metadata
1811         auto parentVisitor = [&filePath, &metadata](const cJSON *item, int index) -> bool {
1812             if (!cJSON_IsString(item)) {
1813                 std::cout << "Fail to visit parent: " << filePath << ", parents index: " << index << std::endl;
1814                 return false;
1815             }
1816             metadata.parents.emplace_back(item->valuestring);
1817             return true;
1818         };
1819         auto offsetVisitor = [&filePath, &metadata, this](const cJSON *item, int index) -> bool {
1820             std::string key {};
1821             int offset {};
1822             int size {};
1823             if (!GetStringFromJson(item, "name", key)) {
1824                 std::cout << "Fail to visit name: " << filePath << ", offsets index " << index << std::endl;
1825                 return false;
1826             }
1827             if (!GetIntFromJson(item, "offset", offset)) {
1828                 std::cout << "Fail to visit offset: " << filePath << ", offsets index " << index << std::endl;
1829                 return false;
1830             }
1831             if (!GetIntFromJson(item, "size", size)) {
1832                 std::cout << "Fail to visit size: " << filePath << ", offsets index " << index << std::endl;
1833                 return false;
1834             }
1835             metadata.offsets[key] = std::make_pair(offset, size);
1836             return true;
1837         };
1838         if (!VisitArrayItems(offsets, offsetVisitor)) {
1839             std::cout << "Fail to get offsets: " << filePath << std::endl;
1840             return;
1841         }
1842         if (!VisitArrayItems(parents, parentVisitor)) {
1843             std::cout << "Fail to get parents: " << filePath << std::endl;
1844             return;
1845         }
1846         // Set metadata status to INITIALIZED
1847         metadata.status = MetadataStatus::INITIALIZED;
1848     }
1849 
Test(JSType type,Metadata & metadata)1850     bool Test(JSType type, Metadata &metadata)
1851     {
1852         auto fieldNames = GetFieldNamesByType(type);
1853         auto fieldOffsets = GetFieldOffsetsByType(type);
1854         auto sizeTable = GetFieldSizesByType(type);
1855         // Fields count should be the same as offsets'
1856         if (fieldNames.size() != fieldOffsets.size()) {
1857             std::cout << "Type fields' number inconsistent with offsets' number" << std::endl;
1858             return false;
1859         }
1860         // check each [name, offset] pair
1861         int index = 0;
1862         for (; index < fieldNames.size(); index++) {
1863             if (index == fieldNames.size() - 1) {
1864                 // Check typename and endOffset, stored at the last index of each array
1865                 if (!CheckTypeNameAndEndOffset(metadata.name, fieldNames[index],
1866                                                metadata.endOffset, fieldOffsets[index])) {
1867                     return false;
1868                 }
1869             } else {
1870                 // Check individual fields
1871                 if (!CheckField(fieldNames[index], fieldOffsets[index], metadata, fieldOffsets[0], sizeTable[index])) {
1872                     return false;
1873                 }
1874             }
1875         }
1876         // If any field left in metadata that has not been checked, return false
1877         if (!CheckLeftoverFieldInMetadata(metadata)) {
1878             return false;
1879         }
1880         // Check if parent array is the same
1881         if (!CheckParents(type, metadata)) {
1882             return false;
1883         }
1884 
1885         return true;
1886     }
1887 
TestForDictionaryLayout(std::string & filePath)1888     bool TestForDictionaryLayout(std::string &filePath)
1889     {
1890         std::ifstream jsonFile(filePath);
1891         if (!jsonFile.is_open()) {
1892             std::cout << "Fail to open metadata file: " << filePath << std::endl;
1893             return false;
1894         }
1895         std::stringstream buffer;
1896         buffer << jsonFile.rdbuf();
1897         auto json = cJSON_ParseWithOpts(buffer.str().c_str(), nullptr, true);
1898         if (!json) {
1899             std::cout << "Fail to read metadata file: " << filePath << std::endl;
1900             jsonFile.close();
1901             return false;
1902         }
1903         jsonFile.close();
1904 
1905         int value;
1906         if (!GetIntFromJson(json, "key_index", value)) {
1907             std::cout << "Fail to get key_index: " << filePath << std::endl;
1908             return false;
1909         }
1910         if (value != NameDictionary::ENTRY_KEY_INDEX) {
1911             std::cout << "Dictionary layout key_index inconsistent: " << value << " ";
1912             std::cout << NameDictionary::ENTRY_KEY_INDEX << std::endl;
1913             return false;
1914         }
1915         if (!GetIntFromJson(json, "value_index", value)) {
1916             std::cout << "Fail to get value_index: " << filePath << std::endl;
1917             return false;
1918         }
1919         if (value != NameDictionary::ENTRY_VALUE_INDEX) {
1920             std::cout << "Dictionary layout value_index inconsistent: " << value << " ";
1921             std::cout << NameDictionary::ENTRY_VALUE_INDEX << std::endl;
1922             return false;
1923         }
1924         if (!GetIntFromJson(json, "detail_index", value)) {
1925             std::cout << "Fail to get detail_index: " << filePath << std::endl;
1926             return false;
1927         }
1928         if (value != NameDictionary::ENTRY_DETAILS_INDEX) {
1929             std::cout << "Dictionary layout detail_index inconsistent: " << value << " ";
1930             std::cout << NameDictionary::ENTRY_DETAILS_INDEX << std::endl;
1931             return false;
1932         }
1933         if (!GetIntFromJson(json, "entry_size", value)) {
1934             std::cout << "Fail to get entry_size: " << filePath << std::endl;
1935             return false;
1936         }
1937         if (value != NameDictionary::ENTRY_SIZE) {
1938             std::cout << "Dictionary layout entry_size inconsistent: " << value << " ";
1939             std::cout << NameDictionary::ENTRY_SIZE << std::endl;
1940             return false;
1941         }
1942         if (!GetIntFromJson(json, "header_size", value)) {
1943             std::cout << "Fail to get header_size: " << filePath << std::endl;
1944             return false;
1945         }
1946         if (value != NameDictionary::TABLE_HEADER_SIZE) {
1947             std::cout << "Dictionary layout header_size inconsistent: " << value << " ";
1948             std::cout << NameDictionary::TABLE_HEADER_SIZE << std::endl;
1949             return false;
1950         }
1951         return true;
1952     }
1953 
TestForTypeRange(std::string & filePath)1954     bool TestForTypeRange(std::string &filePath)
1955     {
1956         std::ifstream jsonFile(filePath);
1957         if (!jsonFile.is_open()) {
1958             std::cout << "Fail to open metadata file: " << filePath << std::endl;
1959             return false;
1960         }
1961         std::stringstream buffer;
1962         buffer << jsonFile.rdbuf();
1963         auto json = cJSON_ParseWithOpts(buffer.str().c_str(), nullptr, true);
1964         if (!json) {
1965             std::cout << "Fail to read metadata file: " << filePath << std::endl;
1966             jsonFile.close();
1967             return false;
1968         }
1969         jsonFile.close();
1970 
1971         std::string value;
1972         if (!GetStringFromJson(json, "string_first", value)) {
1973             std::cout << "Fail to read string_first: " << filePath << std::endl;
1974             return false;
1975         }
1976         if (value != "LINE_STRING") {
1977             std::cout << "string_first inconsistent" << std::endl;
1978             return false;
1979         }
1980         if (!GetStringFromJson(json, "string_last", value)) {
1981             std::cout << "Fail to read string_last: " << filePath << std::endl;
1982             return false;
1983         }
1984         if (value != "TREE_STRING") {
1985             std::cout << "string_last inconsistent" << std::endl;
1986             return false;
1987         }
1988         if (!GetStringFromJson(json, "js_object_first", value)) {
1989             std::cout << "Fail to read js_object_first: " << filePath << std::endl;
1990             return false;
1991         }
1992         if (value != "JS_OBJECT") {
1993             std::cout << "js_object_first inconsistent" << std::endl;
1994             return false;
1995         }
1996         if (!GetStringFromJson(json, "js_object_last", value)) {
1997             std::cout << "Fail to read js_object_last: " << filePath << std::endl;
1998             return false;
1999         }
2000         if (value != "JS_GLOBAL_OBJECT") {
2001             std::cout << "js_object_last inconsistent" << std::endl;
2002             return false;
2003         }
2004         return true;
2005     }
2006 
2007     static std::unordered_map<JSType, std::vector<std::string>> fieldNameTable_;
2008     static std::unordered_map<JSType, std::vector<size_t>> fieldOffsetTable_;
2009     static std::unordered_map<JSType, std::vector<std::string>> parentsTable_;
2010     static std::unordered_map<JSType, std::vector<size_t>> fieldSizeTable_;
2011 private:
GetFieldNamesByType(JSType type)2012     std::vector<std::string> GetFieldNamesByType(JSType type)
2013     {
2014         return HasTypeInFieldNameTable(type) ? fieldNameTable_.at(type) : std::vector<std::string>();
2015     }
2016 
GetFieldOffsetsByType(JSType type)2017     std::vector<size_t> GetFieldOffsetsByType(JSType type)
2018     {
2019         return HasTypeInFieldOffsetTable(type) ? fieldOffsetTable_.at(type) : std::vector<size_t>();
2020     }
2021 
GetParentsByType(JSType type)2022     std::vector<std::string> GetParentsByType(JSType type)
2023     {
2024         return HasTypeInParentsTable(type) ? parentsTable_.at(type) : std::vector<std::string>();
2025     }
2026 
GetFieldSizesByType(JSType type)2027     std::vector<size_t> GetFieldSizesByType(JSType type)
2028     {
2029         return HasTypeInFieldSizesTable(type) ? fieldSizeTable_.at(type) : std::vector<size_t>();
2030     }
2031 
HasTypeInFieldNameTable(JSType type)2032     bool HasTypeInFieldNameTable(JSType type)
2033     {
2034         return !fieldNameTable_.empty() && fieldNameTable_.find(type) != fieldNameTable_.end();
2035     }
2036 
HasTypeInFieldOffsetTable(JSType type)2037     bool HasTypeInFieldOffsetTable(JSType type)
2038     {
2039         return !fieldOffsetTable_.empty() && fieldOffsetTable_.find(type) != fieldOffsetTable_.end();
2040     }
2041 
HasTypeInFieldSizesTable(JSType type)2042     bool HasTypeInFieldSizesTable(JSType type)
2043     {
2044         return !fieldSizeTable_.empty() && fieldSizeTable_.find(type) != fieldSizeTable_.end();
2045     }
2046 
HasTypeInParentsTable(JSType type)2047     bool HasTypeInParentsTable(JSType type)
2048     {
2049         return !parentsTable_.empty() && parentsTable_.find(type) != parentsTable_.end();
2050     }
2051 
CheckTypeNameAndEndOffset(std::string & metaName,std::string & typeName,int metaEndOffset,int endOffset)2052     bool CheckTypeNameAndEndOffset(std::string &metaName, std::string &typeName, int metaEndOffset, int endOffset)
2053     {
2054         if (metaName != typeName || metaEndOffset != endOffset) {
2055             std::cout << "Type name or endOffset inconsistent" << std::endl;
2056             std::cout << "[" << metaName << "   " << metaEndOffset << "] [";
2057             std::cout << typeName << "   " << endOffset << "]" << std::endl;
2058             return false;
2059         }
2060         return true;
2061     }
2062 
CheckField(std::string & fieldName,int fieldOffset,Metadata & metadata,int offsetAlign,int size)2063     bool CheckField(std::string &fieldName, int fieldOffset, Metadata &metadata, int offsetAlign, int size)
2064     {
2065         if (metadata.offsets.find(fieldName) == metadata.offsets.end()) {
2066             // a field is defined in the code but not in metadata, ignored for now
2067             std::cout << "Type  " << metadata.name << " Field " << fieldName;
2068             std::cout << " is not defined in metadata" << std::endl;
2069             return true;
2070         }
2071         offsetAlign = metadata.name == "JS_NATIVE_POINTER" ? JSNativePointer::POINTER_OFFSET :
2072                       metadata.name == "JS_SHARED_ARRAY" ? JSSharedArray::LENGTH_OFFSET : offsetAlign;
2073         if ((fieldOffset - offsetAlign) != metadata.offsets[fieldName].first) {
2074             std::cout << "Type  " << metadata.name << " Field " << fieldName << " offset inconsistent" << std::endl;
2075             std::cout << "Metadata: " << metadata.offsets[fieldName].first;
2076             std::cout << ", Class definition: " << fieldOffset << std::endl;
2077             return false;
2078         }
2079         if (size != metadata.offsets[fieldName].second) {
2080             std::cout << "Type  " << metadata.name << " Field " << fieldName << " size inconsistent" << std::endl;
2081             std::cout << "Metadata: " << metadata.offsets[fieldName].second;
2082             std::cout << ", Class definition: " << size << std::endl;
2083             return false;
2084         }
2085         // remove fieldName in metadata that has been checked
2086         metadata.offsets.erase(fieldName);
2087         return true;
2088     }
2089 
CheckLeftoverFieldInMetadata(Metadata & metadata)2090     bool CheckLeftoverFieldInMetadata(Metadata &metadata)
2091     {
2092         if (!metadata.offsets.empty()) {
2093             std::cout << "Following fields of Type " << metadata.name;
2094             std::cout << ", defined in metadata has not been checked: " << std::endl;
2095             DumpFieldsInMetadata(metadata);
2096             return false;
2097         }
2098         return true;
2099     }
2100 
CheckParents(JSType type,Metadata & metadata)2101     bool CheckParents(JSType type, Metadata &metadata)
2102     {
2103         auto parents = GetParentsByType(type);
2104         if (parents.size() != metadata.parents.size()) {
2105             std::cout << "Type  " << metadata.name << " parents inconsistent" << std::endl;
2106             return false;
2107         }
2108         int index = 0;
2109         for (; index < parents.size(); index++) {
2110             if (parents.at(index) != metadata.parents.at(index)) {
2111                 std::cout << "Type  " << metadata.name << " parents inconsistent" << std::endl;
2112                 return false;
2113             }
2114         }
2115         return true;
2116     }
2117 
DumpFieldsInMetadata(Metadata & metadata)2118     void DumpFieldsInMetadata(Metadata &metadata)
2119     {
2120         for (const auto &field : metadata.offsets) {
2121             std::cout << "Field: " << field.first << " Offset: ";
2122             std::cout << field.second.first << " Size: " << field.second.second << std::endl;
2123         }
2124     }
2125 
GetStringFromJson(const cJSON * json,const char * key,std::string & value)2126     bool GetStringFromJson(const cJSON *json, const char *key, std::string &value)
2127     {
2128         auto item = cJSON_GetObjectItem(json, key);
2129         if (!item || !cJSON_IsString(item)) {
2130             return false;
2131         }
2132         value = item->valuestring;
2133         return true;
2134     }
2135 
GetIntFromJson(const cJSON * json,const char * key,int & value)2136     bool GetIntFromJson(const cJSON *json, const char *key, int &value)
2137     {
2138         auto item = cJSON_GetObjectItem(json, key);
2139         if (!item || !cJSON_IsNumber(item)) {
2140             return false;
2141         }
2142         value = static_cast<int>(item->valuedouble);
2143         return true;
2144     }
2145 
GetArrayFromJson(const cJSON * json,const char * key,cJSON ** value)2146     bool GetArrayFromJson(const cJSON *json, const char *key, cJSON **value)
2147     {
2148         auto item = cJSON_GetObjectItem(json, key);
2149         if (!item || !cJSON_IsArray(item)) {
2150             return false;
2151         }
2152         *value = item;
2153         return true;
2154     }
2155 
VisitArrayItems(const cJSON * json,ArrayVisitor & visitor)2156     bool VisitArrayItems(const cJSON *json, ArrayVisitor &visitor)
2157     {
2158         int size = cJSON_GetArraySize(json);
2159         if (size < 0) {
2160             return false;
2161         }
2162         for (int index = 0; index < size; index++) {
2163             cJSON *item = cJSON_GetArrayItem(json, index);
2164             if (!visitor(item, index)) {
2165                 return false;
2166             }
2167         }
2168         return true;
2169     }
2170 };
2171 
2172 std::unordered_map<JSType, std::vector<std::string>> JSMetadataTestHelper::fieldNameTable_ {};
2173 std::unordered_map<JSType, std::vector<size_t>> JSMetadataTestHelper::fieldOffsetTable_ {};
2174 std::unordered_map<JSType, std::vector<std::string>> JSMetadataTestHelper::parentsTable_ {};
2175 std::unordered_map<JSType, std::vector<size_t>> JSMetadataTestHelper::fieldSizeTable_ {};
2176 
HWTEST_F_L0(JSMetadataTest,TestHClassMetadata)2177 HWTEST_F_L0(JSMetadataTest, TestHClassMetadata)
2178 {
2179     JSMetadataTestHelper tester {};
2180     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"hclass.json";
2181     JSMetadataTestHelper::Metadata metadata {};
2182 
2183     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2184     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2185     ASSERT_TRUE(tester.Test(JSType::HCLASS, metadata));
2186 }
2187 
HWTEST_F_L0(JSMetadataTest,TestAccessorDataMetadata)2188 HWTEST_F_L0(JSMetadataTest, TestAccessorDataMetadata)
2189 {
2190     JSMetadataTestHelper tester {};
2191     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"accessor_data.json";
2192     JSMetadataTestHelper::Metadata metadata {};
2193 
2194     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2195     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2196     ASSERT_TRUE(tester.Test(JSType::ACCESSOR_DATA, metadata));
2197 }
2198 
HWTEST_F_L0(JSMetadataTest,TestAotLiteralInfoMetadata)2199 HWTEST_F_L0(JSMetadataTest, TestAotLiteralInfoMetadata)
2200 {
2201     JSMetadataTestHelper tester {};
2202     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"aot_literal_info.json";
2203     JSMetadataTestHelper::Metadata metadata {};
2204 
2205     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2206     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2207     ASSERT_TRUE(tester.Test(JSType::AOT_LITERAL_INFO, metadata));
2208 }
2209 
HWTEST_F_L0(JSMetadataTest,TestAsyncGeneratorRequestMetadata)2210 HWTEST_F_L0(JSMetadataTest, TestAsyncGeneratorRequestMetadata)
2211 {
2212     JSMetadataTestHelper tester {};
2213     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"async_generator_request.json";
2214     JSMetadataTestHelper::Metadata metadata {};
2215 
2216     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2217     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2218     ASSERT_TRUE(tester.Test(JSType::ASYNC_GENERATOR_REQUEST, metadata));
2219 }
2220 
HWTEST_F_L0(JSMetadataTest,TestAsyncIteratorRecordMetadata)2221 HWTEST_F_L0(JSMetadataTest, TestAsyncIteratorRecordMetadata)
2222 {
2223     JSMetadataTestHelper tester {};
2224     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"async_iterator_record.json";
2225     JSMetadataTestHelper::Metadata metadata {};
2226 
2227     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2228     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2229     ASSERT_TRUE(tester.Test(JSType::ASYNC_ITERATOR_RECORD, metadata));
2230 }
2231 
HWTEST_F_L0(JSMetadataTest,TestBigintMetadata)2232 HWTEST_F_L0(JSMetadataTest, TestBigintMetadata)
2233 {
2234     JSMetadataTestHelper tester {};
2235     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"bigint.json";
2236     JSMetadataTestHelper::Metadata metadata {};
2237 
2238     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2239     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2240     ASSERT_TRUE(tester.Test(JSType::BIGINT, metadata));
2241 }
2242 
HWTEST_F_L0(JSMetadataTest,TestByteArrayMetadata)2243 HWTEST_F_L0(JSMetadataTest, TestByteArrayMetadata)
2244 {
2245     JSMetadataTestHelper tester {};
2246     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"byte_array.json";
2247     JSMetadataTestHelper::Metadata metadata {};
2248 
2249     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2250     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2251     ASSERT_TRUE(tester.Test(JSType::BYTE_ARRAY, metadata));
2252 }
2253 
HWTEST_F_L0(JSMetadataTest,TestCellRecordMetadata)2254 HWTEST_F_L0(JSMetadataTest, TestCellRecordMetadata)
2255 {
2256     JSMetadataTestHelper tester {};
2257     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"cell_record.json";
2258     JSMetadataTestHelper::Metadata metadata {};
2259 
2260     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2261     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2262     ASSERT_TRUE(tester.Test(JSType::CELL_RECORD, metadata));
2263 }
2264 
HWTEST_F_L0(JSMetadataTest,TestClassInfoExtractorMetadata)2265 HWTEST_F_L0(JSMetadataTest, TestClassInfoExtractorMetadata)
2266 {
2267     JSMetadataTestHelper tester {};
2268     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"class_info_extractor.json";
2269     JSMetadataTestHelper::Metadata metadata {};
2270 
2271     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2272     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2273     ASSERT_TRUE(tester.Test(JSType::CLASS_INFO_EXTRACTOR, metadata));
2274 }
2275 
HWTEST_F_L0(JSMetadataTest,TestClassLiteralMetadata)2276 HWTEST_F_L0(JSMetadataTest, TestClassLiteralMetadata)
2277 {
2278     JSMetadataTestHelper tester {};
2279     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"class_literal.json";
2280     JSMetadataTestHelper::Metadata metadata {};
2281 
2282     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2283     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2284     ASSERT_TRUE(tester.Test(JSType::CLASS_LITERAL, metadata));
2285 }
2286 
HWTEST_F_L0(JSMetadataTest,TestCompletionRecordMetadata)2287 HWTEST_F_L0(JSMetadataTest, TestCompletionRecordMetadata)
2288 {
2289     JSMetadataTestHelper tester {};
2290     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"completion_record.json";
2291     JSMetadataTestHelper::Metadata metadata {};
2292 
2293     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2294     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2295     ASSERT_TRUE(tester.Test(JSType::COMPLETION_RECORD, metadata));
2296 }
2297 
HWTEST_F_L0(JSMetadataTest,TestConstantPoolMetadata)2298 HWTEST_F_L0(JSMetadataTest, TestConstantPoolMetadata)
2299 {
2300     JSMetadataTestHelper tester {};
2301     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"constant_pool.json";
2302     JSMetadataTestHelper::Metadata metadata {};
2303 
2304     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2305     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2306     ASSERT_TRUE(tester.Test(JSType::CONSTANT_POOL, metadata));
2307 }
2308 
HWTEST_F_L0(JSMetadataTest,TestConstantStringMetadata)2309 HWTEST_F_L0(JSMetadataTest, TestConstantStringMetadata)
2310 {
2311 #if defined(PANDA_TARGET_AMD64) || defined(PANDA_TARGET_ARM64)
2312     JSMetadataTestHelper tester {};
2313     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"constant_string.json";
2314     JSMetadataTestHelper::Metadata metadata {};
2315 
2316     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2317     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2318     ASSERT_TRUE(tester.Test(JSType::CONSTANT_STRING, metadata));
2319 #endif
2320 }
2321 
HWTEST_F_L0(JSMetadataTest,TestCowMutantTaggedArrayMetadata)2322 HWTEST_F_L0(JSMetadataTest, TestCowMutantTaggedArrayMetadata)
2323 {
2324     JSMetadataTestHelper tester {};
2325     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"cow_mutant_tagged_array.json";
2326     JSMetadataTestHelper::Metadata metadata {};
2327 
2328     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2329     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2330     ASSERT_TRUE(tester.Test(JSType::COW_MUTANT_TAGGED_ARRAY, metadata));
2331 }
2332 
HWTEST_F_L0(JSMetadataTest,TestCowTaggedArrayMetadata)2333 HWTEST_F_L0(JSMetadataTest, TestCowTaggedArrayMetadata)
2334 {
2335     JSMetadataTestHelper tester {};
2336     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"cow_tagged_array.json";
2337     JSMetadataTestHelper::Metadata metadata {};
2338 
2339     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2340     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2341     ASSERT_TRUE(tester.Test(JSType::COW_TAGGED_ARRAY, metadata));
2342 }
2343 
HWTEST_F_L0(JSMetadataTest,TestExtraProfileTypeInfoMetadata)2344 HWTEST_F_L0(JSMetadataTest, TestExtraProfileTypeInfoMetadata)
2345 {
2346     JSMetadataTestHelper tester {};
2347     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"extra_profile_type_info.json";
2348     JSMetadataTestHelper::Metadata metadata {};
2349 
2350     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2351     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2352     ASSERT_TRUE(tester.Test(JSType::EXTRA_PROFILE_TYPE_INFO, metadata));
2353 }
2354 
HWTEST_F_L0(JSMetadataTest,TestFunctionTemplateMetadata)2355 HWTEST_F_L0(JSMetadataTest, TestFunctionTemplateMetadata)
2356 {
2357     JSMetadataTestHelper tester {};
2358     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"function_template.json";
2359     JSMetadataTestHelper::Metadata metadata {};
2360 
2361     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2362     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2363     ASSERT_TRUE(tester.Test(JSType::FUNCTION_TEMPLATE, metadata));
2364 }
2365 
HWTEST_F_L0(JSMetadataTest,TestGlobalEnvMetadata)2366 HWTEST_F_L0(JSMetadataTest, TestGlobalEnvMetadata)
2367 {
2368     JSMetadataTestHelper tester {};
2369     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"global_env.json";
2370     JSMetadataTestHelper::Metadata metadata {};
2371 
2372     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2373     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2374     ASSERT_TRUE(tester.Test(JSType::GLOBAL_ENV, metadata));
2375 }
2376 
HWTEST_F_L0(JSMetadataTest,TestImportentryRecordMetadata)2377 HWTEST_F_L0(JSMetadataTest, TestImportentryRecordMetadata)
2378 {
2379     JSMetadataTestHelper tester {};
2380     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"importentry_record.json";
2381     JSMetadataTestHelper::Metadata metadata {};
2382 
2383     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2384     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2385     ASSERT_TRUE(tester.Test(JSType::IMPORTENTRY_RECORD, metadata));
2386 }
2387 
HWTEST_F_L0(JSMetadataTest,TestIndirectExportentryRecordMetadata)2388 HWTEST_F_L0(JSMetadataTest, TestIndirectExportentryRecordMetadata)
2389 {
2390     JSMetadataTestHelper tester {};
2391     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"indirect_exportentry_record.json";
2392     JSMetadataTestHelper::Metadata metadata {};
2393 
2394     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2395     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2396     ASSERT_TRUE(tester.Test(JSType::INDIRECT_EXPORTENTRY_RECORD, metadata));
2397 }
2398 
HWTEST_F_L0(JSMetadataTest,TestInternalAccessorMetadata)2399 HWTEST_F_L0(JSMetadataTest, TestInternalAccessorMetadata)
2400 {
2401     JSMetadataTestHelper tester {};
2402     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"internal_accessor.json";
2403     JSMetadataTestHelper::Metadata metadata {};
2404 
2405     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2406     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2407     ASSERT_TRUE(tester.Test(JSType::INTERNAL_ACCESSOR, metadata));
2408 }
2409 
HWTEST_F_L0(JSMetadataTest,TestJsAggregateErrorMetadata)2410 HWTEST_F_L0(JSMetadataTest, TestJsAggregateErrorMetadata)
2411 {
2412     JSMetadataTestHelper tester {};
2413     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_aggregate_error.json";
2414     JSMetadataTestHelper::Metadata metadata {};
2415 
2416     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2417     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2418     ASSERT_TRUE(tester.Test(JSType::JS_AGGREGATE_ERROR, metadata));
2419 }
2420 
HWTEST_F_L0(JSMetadataTest,TestJsApiArraylistIteratorMetadata)2421 HWTEST_F_L0(JSMetadataTest, TestJsApiArraylistIteratorMetadata)
2422 {
2423     JSMetadataTestHelper tester {};
2424     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_api_arraylist_iterator.json";
2425     JSMetadataTestHelper::Metadata metadata {};
2426 
2427     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2428     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2429     ASSERT_TRUE(tester.Test(JSType::JS_API_ARRAYLIST_ITERATOR, metadata));
2430 }
2431 
HWTEST_F_L0(JSMetadataTest,TestJsApiArrayListMetadata)2432 HWTEST_F_L0(JSMetadataTest, TestJsApiArrayListMetadata)
2433 {
2434     JSMetadataTestHelper tester {};
2435     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_api_array_list.json";
2436     JSMetadataTestHelper::Metadata metadata {};
2437 
2438     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2439     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2440     ASSERT_TRUE(tester.Test(JSType::JS_API_ARRAY_LIST, metadata));
2441 }
2442 
HWTEST_F_L0(JSMetadataTest,TestJsApiBitvectorMetadata)2443 HWTEST_F_L0(JSMetadataTest, TestJsApiBitvectorMetadata)
2444 {
2445     JSMetadataTestHelper tester {};
2446     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_api_bitvector.json";
2447     JSMetadataTestHelper::Metadata metadata {};
2448 
2449     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2450     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2451     ASSERT_TRUE(tester.Test(JSType::JS_API_BITVECTOR, metadata));
2452 }
2453 
HWTEST_F_L0(JSMetadataTest,TestJsApiBitvectorIteratorMetadata)2454 HWTEST_F_L0(JSMetadataTest, TestJsApiBitvectorIteratorMetadata)
2455 {
2456     JSMetadataTestHelper tester {};
2457     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_api_bitvector_iterator.json";
2458     JSMetadataTestHelper::Metadata metadata {};
2459 
2460     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2461     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2462     ASSERT_TRUE(tester.Test(JSType::JS_API_BITVECTOR_ITERATOR, metadata));
2463 }
2464 
HWTEST_F_L0(JSMetadataTest,TestJsApiDequeMetadata)2465 HWTEST_F_L0(JSMetadataTest, TestJsApiDequeMetadata)
2466 {
2467     JSMetadataTestHelper tester {};
2468     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_api_deque.json";
2469     JSMetadataTestHelper::Metadata metadata {};
2470 
2471     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2472     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2473     ASSERT_TRUE(tester.Test(JSType::JS_API_DEQUE, metadata));
2474 }
2475 
HWTEST_F_L0(JSMetadataTest,TestJsApiDequeIteratorMetadata)2476 HWTEST_F_L0(JSMetadataTest, TestJsApiDequeIteratorMetadata)
2477 {
2478     JSMetadataTestHelper tester {};
2479     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_api_deque_iterator.json";
2480     JSMetadataTestHelper::Metadata metadata {};
2481 
2482     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2483     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2484     ASSERT_TRUE(tester.Test(JSType::JS_API_DEQUE_ITERATOR, metadata));
2485 }
2486 
HWTEST_F_L0(JSMetadataTest,TestJsApiHashmapIteratorMetadata)2487 HWTEST_F_L0(JSMetadataTest, TestJsApiHashmapIteratorMetadata)
2488 {
2489     JSMetadataTestHelper tester {};
2490     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_api_hashmap_iterator.json";
2491     JSMetadataTestHelper::Metadata metadata {};
2492 
2493     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2494     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2495     ASSERT_TRUE(tester.Test(JSType::JS_API_HASHMAP_ITERATOR, metadata));
2496 }
2497 
HWTEST_F_L0(JSMetadataTest,TestJsApiHashsetIteratorMetadata)2498 HWTEST_F_L0(JSMetadataTest, TestJsApiHashsetIteratorMetadata)
2499 {
2500     JSMetadataTestHelper tester {};
2501     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_api_hashset_iterator.json";
2502     JSMetadataTestHelper::Metadata metadata {};
2503 
2504     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2505     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2506     ASSERT_TRUE(tester.Test(JSType::JS_API_HASHSET_ITERATOR, metadata));
2507 }
2508 
HWTEST_F_L0(JSMetadataTest,TestJsApiHashMapMetadata)2509 HWTEST_F_L0(JSMetadataTest, TestJsApiHashMapMetadata)
2510 {
2511     JSMetadataTestHelper tester {};
2512     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_api_hash_map.json";
2513     JSMetadataTestHelper::Metadata metadata {};
2514 
2515     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2516     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2517     ASSERT_TRUE(tester.Test(JSType::JS_API_HASH_MAP, metadata));
2518 }
2519 
HWTEST_F_L0(JSMetadataTest,TestJsApiHashSetMetadata)2520 HWTEST_F_L0(JSMetadataTest, TestJsApiHashSetMetadata)
2521 {
2522     JSMetadataTestHelper tester {};
2523     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_api_hash_set.json";
2524     JSMetadataTestHelper::Metadata metadata {};
2525 
2526     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2527     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2528     ASSERT_TRUE(tester.Test(JSType::JS_API_HASH_SET, metadata));
2529 }
2530 
HWTEST_F_L0(JSMetadataTest,TestJsApiLightWeightMapMetadata)2531 HWTEST_F_L0(JSMetadataTest, TestJsApiLightWeightMapMetadata)
2532 {
2533     JSMetadataTestHelper tester {};
2534     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_api_light_weight_map.json";
2535     JSMetadataTestHelper::Metadata metadata {};
2536 
2537     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2538     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2539     ASSERT_TRUE(tester.Test(JSType::JS_API_LIGHT_WEIGHT_MAP, metadata));
2540 }
2541 
HWTEST_F_L0(JSMetadataTest,TestJsApiLightWeightMapIteratorMetadata)2542 HWTEST_F_L0(JSMetadataTest, TestJsApiLightWeightMapIteratorMetadata)
2543 {
2544     JSMetadataTestHelper tester {};
2545     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_api_light_weight_map_iterator.json";
2546     JSMetadataTestHelper::Metadata metadata {};
2547 
2548     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2549     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2550     ASSERT_TRUE(tester.Test(JSType::JS_API_LIGHT_WEIGHT_MAP_ITERATOR, metadata));
2551 }
2552 
HWTEST_F_L0(JSMetadataTest,TestJsApiLightWeightSetMetadata)2553 HWTEST_F_L0(JSMetadataTest, TestJsApiLightWeightSetMetadata)
2554 {
2555     JSMetadataTestHelper tester {};
2556     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_api_light_weight_set.json";
2557     JSMetadataTestHelper::Metadata metadata {};
2558 
2559     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2560     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2561     ASSERT_TRUE(tester.Test(JSType::JS_API_LIGHT_WEIGHT_SET, metadata));
2562 }
2563 
HWTEST_F_L0(JSMetadataTest,TestJsApiLightWeightSetIteratorMetadata)2564 HWTEST_F_L0(JSMetadataTest, TestJsApiLightWeightSetIteratorMetadata)
2565 {
2566     JSMetadataTestHelper tester {};
2567     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_api_light_weight_set_iterator.json";
2568     JSMetadataTestHelper::Metadata metadata {};
2569 
2570     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2571     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2572     ASSERT_TRUE(tester.Test(JSType::JS_API_LIGHT_WEIGHT_SET_ITERATOR, metadata));
2573 }
2574 
HWTEST_F_L0(JSMetadataTest,TestJsApiLinkedListMetadata)2575 HWTEST_F_L0(JSMetadataTest, TestJsApiLinkedListMetadata)
2576 {
2577     JSMetadataTestHelper tester {};
2578     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_api_linked_list.json";
2579     JSMetadataTestHelper::Metadata metadata {};
2580 
2581     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2582     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2583     ASSERT_TRUE(tester.Test(JSType::JS_API_LINKED_LIST, metadata));
2584 }
2585 
HWTEST_F_L0(JSMetadataTest,TestJsApiLinkedListIteratorMetadata)2586 HWTEST_F_L0(JSMetadataTest, TestJsApiLinkedListIteratorMetadata)
2587 {
2588     JSMetadataTestHelper tester {};
2589     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_api_linked_list_iterator.json";
2590     JSMetadataTestHelper::Metadata metadata {};
2591 
2592     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2593     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2594     ASSERT_TRUE(tester.Test(JSType::JS_API_LINKED_LIST_ITERATOR, metadata));
2595 }
2596 
HWTEST_F_L0(JSMetadataTest,TestJsApiListMetadata)2597 HWTEST_F_L0(JSMetadataTest, TestJsApiListMetadata)
2598 {
2599     JSMetadataTestHelper tester {};
2600     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_api_list.json";
2601     JSMetadataTestHelper::Metadata metadata {};
2602 
2603     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2604     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2605     ASSERT_TRUE(tester.Test(JSType::JS_API_LIST, metadata));
2606 }
2607 
HWTEST_F_L0(JSMetadataTest,TestJsApiListIteratorMetadata)2608 HWTEST_F_L0(JSMetadataTest, TestJsApiListIteratorMetadata)
2609 {
2610     JSMetadataTestHelper tester {};
2611     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_api_list_iterator.json";
2612     JSMetadataTestHelper::Metadata metadata {};
2613 
2614     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2615     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2616     ASSERT_TRUE(tester.Test(JSType::JS_API_LIST_ITERATOR, metadata));
2617 }
2618 
HWTEST_F_L0(JSMetadataTest,TestJsApiPlainArrayMetadata)2619 HWTEST_F_L0(JSMetadataTest, TestJsApiPlainArrayMetadata)
2620 {
2621     JSMetadataTestHelper tester {};
2622     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_api_plain_array.json";
2623     JSMetadataTestHelper::Metadata metadata {};
2624 
2625     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2626     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2627     ASSERT_TRUE(tester.Test(JSType::JS_API_PLAIN_ARRAY, metadata));
2628 }
2629 
HWTEST_F_L0(JSMetadataTest,TestJsApiPlainArrayIteratorMetadata)2630 HWTEST_F_L0(JSMetadataTest, TestJsApiPlainArrayIteratorMetadata)
2631 {
2632     JSMetadataTestHelper tester {};
2633     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_api_plain_array_iterator.json";
2634     JSMetadataTestHelper::Metadata metadata {};
2635 
2636     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2637     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2638     ASSERT_TRUE(tester.Test(JSType::JS_API_PLAIN_ARRAY_ITERATOR, metadata));
2639 }
2640 
HWTEST_F_L0(JSMetadataTest,TestJsApiQueueMetadata)2641 HWTEST_F_L0(JSMetadataTest, TestJsApiQueueMetadata)
2642 {
2643     JSMetadataTestHelper tester {};
2644     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_api_queue.json";
2645     JSMetadataTestHelper::Metadata metadata {};
2646 
2647     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2648     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2649     ASSERT_TRUE(tester.Test(JSType::JS_API_QUEUE, metadata));
2650 }
2651 
HWTEST_F_L0(JSMetadataTest,TestJsApiQueueIteratorMetadata)2652 HWTEST_F_L0(JSMetadataTest, TestJsApiQueueIteratorMetadata)
2653 {
2654     JSMetadataTestHelper tester {};
2655     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_api_queue_iterator.json";
2656     JSMetadataTestHelper::Metadata metadata {};
2657 
2658     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2659     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2660     ASSERT_TRUE(tester.Test(JSType::JS_API_QUEUE_ITERATOR, metadata));
2661 }
2662 
HWTEST_F_L0(JSMetadataTest,TestJsApiStackMetadata)2663 HWTEST_F_L0(JSMetadataTest, TestJsApiStackMetadata)
2664 {
2665     JSMetadataTestHelper tester {};
2666     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_api_stack.json";
2667     JSMetadataTestHelper::Metadata metadata {};
2668 
2669     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2670     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2671     ASSERT_TRUE(tester.Test(JSType::JS_API_STACK, metadata));
2672 }
2673 
HWTEST_F_L0(JSMetadataTest,TestJsApiStackIteratorMetadata)2674 HWTEST_F_L0(JSMetadataTest, TestJsApiStackIteratorMetadata)
2675 {
2676     JSMetadataTestHelper tester {};
2677     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_api_stack_iterator.json";
2678     JSMetadataTestHelper::Metadata metadata {};
2679 
2680     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2681     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2682     ASSERT_TRUE(tester.Test(JSType::JS_API_STACK_ITERATOR, metadata));
2683 }
2684 
HWTEST_F_L0(JSMetadataTest,TestJsApiTreemapIteratorMetadata)2685 HWTEST_F_L0(JSMetadataTest, TestJsApiTreemapIteratorMetadata)
2686 {
2687     JSMetadataTestHelper tester {};
2688     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_api_treemap_iterator.json";
2689     JSMetadataTestHelper::Metadata metadata {};
2690 
2691     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2692     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2693     ASSERT_TRUE(tester.Test(JSType::JS_API_TREEMAP_ITERATOR, metadata));
2694 }
2695 
HWTEST_F_L0(JSMetadataTest,TestJsApiTreesetIteratorMetadata)2696 HWTEST_F_L0(JSMetadataTest, TestJsApiTreesetIteratorMetadata)
2697 {
2698     JSMetadataTestHelper tester {};
2699     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_api_treeset_iterator.json";
2700     JSMetadataTestHelper::Metadata metadata {};
2701 
2702     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2703     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2704     ASSERT_TRUE(tester.Test(JSType::JS_API_TREESET_ITERATOR, metadata));
2705 }
2706 
HWTEST_F_L0(JSMetadataTest,TestJsApiTreeMapMetadata)2707 HWTEST_F_L0(JSMetadataTest, TestJsApiTreeMapMetadata)
2708 {
2709     JSMetadataTestHelper tester {};
2710     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_api_tree_map.json";
2711     JSMetadataTestHelper::Metadata metadata {};
2712 
2713     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2714     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2715     ASSERT_TRUE(tester.Test(JSType::JS_API_TREE_MAP, metadata));
2716 }
2717 
HWTEST_F_L0(JSMetadataTest,TestJsApiTreeSetMetadata)2718 HWTEST_F_L0(JSMetadataTest, TestJsApiTreeSetMetadata)
2719 {
2720     JSMetadataTestHelper tester {};
2721     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_api_tree_set.json";
2722     JSMetadataTestHelper::Metadata metadata {};
2723 
2724     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2725     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2726     ASSERT_TRUE(tester.Test(JSType::JS_API_TREE_SET, metadata));
2727 }
2728 
HWTEST_F_L0(JSMetadataTest,TestJsApiVectorMetadata)2729 HWTEST_F_L0(JSMetadataTest, TestJsApiVectorMetadata)
2730 {
2731     JSMetadataTestHelper tester {};
2732     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_api_vector.json";
2733     JSMetadataTestHelper::Metadata metadata {};
2734 
2735     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2736     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2737     ASSERT_TRUE(tester.Test(JSType::JS_API_VECTOR, metadata));
2738 }
2739 
HWTEST_F_L0(JSMetadataTest,TestJsApiVectorIteratorMetadata)2740 HWTEST_F_L0(JSMetadataTest, TestJsApiVectorIteratorMetadata)
2741 {
2742     JSMetadataTestHelper tester {};
2743     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_api_vector_iterator.json";
2744     JSMetadataTestHelper::Metadata metadata {};
2745 
2746     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2747     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2748     ASSERT_TRUE(tester.Test(JSType::JS_API_VECTOR_ITERATOR, metadata));
2749 }
2750 
HWTEST_F_L0(JSMetadataTest,TestJsArgumentsMetadata)2751 HWTEST_F_L0(JSMetadataTest, TestJsArgumentsMetadata)
2752 {
2753     JSMetadataTestHelper tester {};
2754     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_arguments.json";
2755     JSMetadataTestHelper::Metadata metadata {};
2756 
2757     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2758     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2759     ASSERT_TRUE(tester.Test(JSType::JS_ARGUMENTS, metadata));
2760 }
2761 
HWTEST_F_L0(JSMetadataTest,TestJsArrayMetadata)2762 HWTEST_F_L0(JSMetadataTest, TestJsArrayMetadata)
2763 {
2764     JSMetadataTestHelper tester {};
2765     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_array.json";
2766     JSMetadataTestHelper::Metadata metadata {};
2767 
2768     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2769     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2770     ASSERT_TRUE(tester.Test(JSType::JS_ARRAY, metadata));
2771 }
2772 
HWTEST_F_L0(JSMetadataTest,TestJsArrayBufferMetadata)2773 HWTEST_F_L0(JSMetadataTest, TestJsArrayBufferMetadata)
2774 {
2775     JSMetadataTestHelper tester {};
2776     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_array_buffer.json";
2777     JSMetadataTestHelper::Metadata metadata {};
2778 
2779     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2780     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2781     ASSERT_TRUE(tester.Test(JSType::JS_ARRAY_BUFFER, metadata));
2782 }
2783 
HWTEST_F_L0(JSMetadataTest,TestJsArrayIteratorMetadata)2784 HWTEST_F_L0(JSMetadataTest, TestJsArrayIteratorMetadata)
2785 {
2786     JSMetadataTestHelper tester {};
2787     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_array_iterator.json";
2788     JSMetadataTestHelper::Metadata metadata {};
2789 
2790     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2791     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2792     ASSERT_TRUE(tester.Test(JSType::JS_ARRAY_ITERATOR, metadata));
2793 }
2794 
HWTEST_F_L0(JSMetadataTest,TestJsAsynciteratorMetadata)2795 HWTEST_F_L0(JSMetadataTest, TestJsAsynciteratorMetadata)
2796 {
2797     JSMetadataTestHelper tester {};
2798     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_asynciterator.json";
2799     JSMetadataTestHelper::Metadata metadata {};
2800 
2801     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2802     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2803     ASSERT_TRUE(tester.Test(JSType::JS_ASYNCITERATOR, metadata));
2804 }
2805 
HWTEST_F_L0(JSMetadataTest,TestJsAsyncAwaitStatusFunctionMetadata)2806 HWTEST_F_L0(JSMetadataTest, TestJsAsyncAwaitStatusFunctionMetadata)
2807 {
2808     JSMetadataTestHelper tester {};
2809     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_async_await_status_function.json";
2810     JSMetadataTestHelper::Metadata metadata {};
2811 
2812     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2813     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2814     ASSERT_TRUE(tester.Test(JSType::JS_ASYNC_AWAIT_STATUS_FUNCTION, metadata));
2815 }
2816 
HWTEST_F_L0(JSMetadataTest,TestJsAsyncFromSyncIteratorMetadata)2817 HWTEST_F_L0(JSMetadataTest, TestJsAsyncFromSyncIteratorMetadata)
2818 {
2819     JSMetadataTestHelper tester {};
2820     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_async_from_sync_iterator.json";
2821     JSMetadataTestHelper::Metadata metadata {};
2822 
2823     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2824     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2825     ASSERT_TRUE(tester.Test(JSType::JS_ASYNC_FROM_SYNC_ITERATOR, metadata));
2826 }
2827 
HWTEST_F_L0(JSMetadataTest,TestJsAsyncFromSyncIterUnwarpFunctionMetadata)2828 HWTEST_F_L0(JSMetadataTest, TestJsAsyncFromSyncIterUnwarpFunctionMetadata)
2829 {
2830     JSMetadataTestHelper tester {};
2831     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_async_from_sync_iter_unwarp_function.json";
2832     JSMetadataTestHelper::Metadata metadata {};
2833 
2834     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2835     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2836     ASSERT_TRUE(tester.Test(JSType::JS_ASYNC_FROM_SYNC_ITER_UNWARP_FUNCTION, metadata));
2837 }
2838 
HWTEST_F_L0(JSMetadataTest,TestJsAsyncFunctionMetadata)2839 HWTEST_F_L0(JSMetadataTest, TestJsAsyncFunctionMetadata)
2840 {
2841     JSMetadataTestHelper tester {};
2842     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_async_function.json";
2843     JSMetadataTestHelper::Metadata metadata {};
2844 
2845     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2846     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2847     ASSERT_TRUE(tester.Test(JSType::JS_ASYNC_FUNCTION, metadata));
2848 }
2849 
HWTEST_F_L0(JSMetadataTest,TestJsAsyncFuncObjectMetadata)2850 HWTEST_F_L0(JSMetadataTest, TestJsAsyncFuncObjectMetadata)
2851 {
2852     JSMetadataTestHelper tester {};
2853     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_async_func_object.json";
2854     JSMetadataTestHelper::Metadata metadata {};
2855 
2856     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2857     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2858     ASSERT_TRUE(tester.Test(JSType::JS_ASYNC_FUNC_OBJECT, metadata));
2859 }
2860 
HWTEST_F_L0(JSMetadataTest,TestJsAsyncGeneratorFunctionMetadata)2861 HWTEST_F_L0(JSMetadataTest, TestJsAsyncGeneratorFunctionMetadata)
2862 {
2863     JSMetadataTestHelper tester {};
2864     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_async_generator_function.json";
2865     JSMetadataTestHelper::Metadata metadata {};
2866 
2867     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2868     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2869     ASSERT_TRUE(tester.Test(JSType::JS_ASYNC_GENERATOR_FUNCTION, metadata));
2870 }
2871 
HWTEST_F_L0(JSMetadataTest,TestJsAsyncGeneratorObjectMetadata)2872 HWTEST_F_L0(JSMetadataTest, TestJsAsyncGeneratorObjectMetadata)
2873 {
2874     JSMetadataTestHelper tester {};
2875     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_async_generator_object.json";
2876     JSMetadataTestHelper::Metadata metadata {};
2877 
2878     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2879     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2880     ASSERT_TRUE(tester.Test(JSType::JS_ASYNC_GENERATOR_OBJECT, metadata));
2881 }
2882 
HWTEST_F_L0(JSMetadataTest,TestJsAsyncGeneratorResumeNextReturnProcessorRstFtnMetadata)2883 HWTEST_F_L0(JSMetadataTest, TestJsAsyncGeneratorResumeNextReturnProcessorRstFtnMetadata)
2884 {
2885     JSMetadataTestHelper tester {};
2886     std::string metadataFilePath =
2887         METADATA_SOURCE_FILE_DIR"js_async_generator_resume_next.json";
2888     JSMetadataTestHelper::Metadata metadata {};
2889 
2890     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2891     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2892     ASSERT_TRUE(tester.Test(JSType::JS_ASYNC_GENERATOR_RESUME_NEXT_RETURN_PROCESSOR_RST_FTN, metadata));
2893 }
2894 
HWTEST_F_L0(JSMetadataTest,TestJsAsyncModuleFulfilledFunctionMetadata)2895 HWTEST_F_L0(JSMetadataTest, TestJsAsyncModuleFulfilledFunctionMetadata)
2896 {
2897     JSMetadataTestHelper tester {};
2898     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_async_module_fulfilled_function.json";
2899     JSMetadataTestHelper::Metadata metadata {};
2900 
2901     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2902     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2903     ASSERT_TRUE(tester.Test(JSType::JS_ASYNC_MODULE_FULFILLED_FUNCTION, metadata));
2904 }
2905 
HWTEST_F_L0(JSMetadataTest,TestJsAsyncModuleRejectedFunctionMetadata)2906 HWTEST_F_L0(JSMetadataTest, TestJsAsyncModuleRejectedFunctionMetadata)
2907 {
2908     JSMetadataTestHelper tester {};
2909     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_async_module_rejected_function.json";
2910     JSMetadataTestHelper::Metadata metadata {};
2911 
2912     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2913     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2914     ASSERT_TRUE(tester.Test(JSType::JS_ASYNC_MODULE_REJECTED_FUNCTION, metadata));
2915 }
2916 
HWTEST_F_L0(JSMetadataTest,TestJsBigint64ArrayMetadata)2917 HWTEST_F_L0(JSMetadataTest, TestJsBigint64ArrayMetadata)
2918 {
2919     JSMetadataTestHelper tester {};
2920     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_bigint64_array.json";
2921     JSMetadataTestHelper::Metadata metadata {};
2922 
2923     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2924     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2925     ASSERT_TRUE(tester.Test(JSType::JS_BIGINT64_ARRAY, metadata));
2926 }
2927 
HWTEST_F_L0(JSMetadataTest,TestJsBiguint64ArrayMetadata)2928 HWTEST_F_L0(JSMetadataTest, TestJsBiguint64ArrayMetadata)
2929 {
2930     JSMetadataTestHelper tester {};
2931     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_biguint64_array.json";
2932     JSMetadataTestHelper::Metadata metadata {};
2933 
2934     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2935     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2936     ASSERT_TRUE(tester.Test(JSType::JS_BIGUINT64_ARRAY, metadata));
2937 }
2938 
HWTEST_F_L0(JSMetadataTest,TestJsBoundFunctionMetadata)2939 HWTEST_F_L0(JSMetadataTest, TestJsBoundFunctionMetadata)
2940 {
2941     JSMetadataTestHelper tester {};
2942     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_bound_function.json";
2943     JSMetadataTestHelper::Metadata metadata {};
2944 
2945     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2946     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2947     ASSERT_TRUE(tester.Test(JSType::JS_BOUND_FUNCTION, metadata));
2948 }
2949 
HWTEST_F_L0(JSMetadataTest,TestJsCjsExportsMetadata)2950 HWTEST_F_L0(JSMetadataTest, TestJsCjsExportsMetadata)
2951 {
2952     JSMetadataTestHelper tester {};
2953     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_cjs_exports.json";
2954     JSMetadataTestHelper::Metadata metadata {};
2955 
2956     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2957     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2958     ASSERT_TRUE(tester.Test(JSType::JS_CJS_EXPORTS, metadata));
2959 }
2960 
HWTEST_F_L0(JSMetadataTest,TestJsCjsModuleMetadata)2961 HWTEST_F_L0(JSMetadataTest, TestJsCjsModuleMetadata)
2962 {
2963     JSMetadataTestHelper tester {};
2964     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_cjs_module.json";
2965     JSMetadataTestHelper::Metadata metadata {};
2966 
2967     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2968     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2969     ASSERT_TRUE(tester.Test(JSType::JS_CJS_MODULE, metadata));
2970 }
2971 
HWTEST_F_L0(JSMetadataTest,TestJsCjsRequireMetadata)2972 HWTEST_F_L0(JSMetadataTest, TestJsCjsRequireMetadata)
2973 {
2974     JSMetadataTestHelper tester {};
2975     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_cjs_require.json";
2976     JSMetadataTestHelper::Metadata metadata {};
2977 
2978     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2979     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2980     ASSERT_TRUE(tester.Test(JSType::JS_CJS_REQUIRE, metadata));
2981 }
2982 
HWTEST_F_L0(JSMetadataTest,TestJsCollatorMetadata)2983 HWTEST_F_L0(JSMetadataTest, TestJsCollatorMetadata)
2984 {
2985     JSMetadataTestHelper tester {};
2986     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_collator.json";
2987     JSMetadataTestHelper::Metadata metadata {};
2988 
2989     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
2990     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
2991     ASSERT_TRUE(tester.Test(JSType::JS_COLLATOR, metadata));
2992 }
2993 
HWTEST_F_L0(JSMetadataTest,TestJsDataViewMetadata)2994 HWTEST_F_L0(JSMetadataTest, TestJsDataViewMetadata)
2995 {
2996     JSMetadataTestHelper tester {};
2997     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_data_view.json";
2998     JSMetadataTestHelper::Metadata metadata {};
2999 
3000     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3001     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3002     ASSERT_TRUE(tester.Test(JSType::JS_DATA_VIEW, metadata));
3003 }
3004 
HWTEST_F_L0(JSMetadataTest,TestJsDateMetadata)3005 HWTEST_F_L0(JSMetadataTest, TestJsDateMetadata)
3006 {
3007     JSMetadataTestHelper tester {};
3008     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_date.json";
3009     JSMetadataTestHelper::Metadata metadata {};
3010 
3011     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3012     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3013     ASSERT_TRUE(tester.Test(JSType::JS_DATE, metadata));
3014 }
3015 
HWTEST_F_L0(JSMetadataTest,TestJsDateTimeFormatMetadata)3016 HWTEST_F_L0(JSMetadataTest, TestJsDateTimeFormatMetadata)
3017 {
3018     JSMetadataTestHelper tester {};
3019     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_date_time_format.json";
3020     JSMetadataTestHelper::Metadata metadata {};
3021 
3022     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3023     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3024     ASSERT_TRUE(tester.Test(JSType::JS_DATE_TIME_FORMAT, metadata));
3025 }
3026 
HWTEST_F_L0(JSMetadataTest,TestJsDisplaynamesMetadata)3027 HWTEST_F_L0(JSMetadataTest, TestJsDisplaynamesMetadata)
3028 {
3029     JSMetadataTestHelper tester {};
3030     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_displaynames.json";
3031     JSMetadataTestHelper::Metadata metadata {};
3032 
3033     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3034     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3035     ASSERT_TRUE(tester.Test(JSType::JS_DISPLAYNAMES, metadata));
3036 }
3037 
HWTEST_F_L0(JSMetadataTest,TestJsErrorMetadata)3038 HWTEST_F_L0(JSMetadataTest, TestJsErrorMetadata)
3039 {
3040     JSMetadataTestHelper tester {};
3041     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_error.json";
3042     JSMetadataTestHelper::Metadata metadata {};
3043 
3044     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3045     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3046     ASSERT_TRUE(tester.Test(JSType::JS_ERROR, metadata));
3047 }
3048 
HWTEST_F_L0(JSMetadataTest,TestJsEvalErrorMetadata)3049 HWTEST_F_L0(JSMetadataTest, TestJsEvalErrorMetadata)
3050 {
3051     JSMetadataTestHelper tester {};
3052     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_eval_error.json";
3053     JSMetadataTestHelper::Metadata metadata {};
3054 
3055     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3056     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3057     ASSERT_TRUE(tester.Test(JSType::JS_EVAL_ERROR, metadata));
3058 }
3059 
HWTEST_F_L0(JSMetadataTest,TestJsFinalizationRegistryMetadata)3060 HWTEST_F_L0(JSMetadataTest, TestJsFinalizationRegistryMetadata)
3061 {
3062     JSMetadataTestHelper tester {};
3063     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_finalization_registry.json";
3064     JSMetadataTestHelper::Metadata metadata {};
3065 
3066     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3067     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3068     ASSERT_TRUE(tester.Test(JSType::JS_FINALIZATION_REGISTRY, metadata));
3069 }
3070 
HWTEST_F_L0(JSMetadataTest,TestJsFloat32ArrayMetadata)3071 HWTEST_F_L0(JSMetadataTest, TestJsFloat32ArrayMetadata)
3072 {
3073     JSMetadataTestHelper tester {};
3074     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_float32_array.json";
3075     JSMetadataTestHelper::Metadata metadata {};
3076 
3077     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3078     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3079     ASSERT_TRUE(tester.Test(JSType::JS_FLOAT32_ARRAY, metadata));
3080 }
3081 
HWTEST_F_L0(JSMetadataTest,TestJsFloat64ArrayMetadata)3082 HWTEST_F_L0(JSMetadataTest, TestJsFloat64ArrayMetadata)
3083 {
3084     JSMetadataTestHelper tester {};
3085     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_float64_array.json";
3086     JSMetadataTestHelper::Metadata metadata {};
3087 
3088     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3089     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3090     ASSERT_TRUE(tester.Test(JSType::JS_FLOAT64_ARRAY, metadata));
3091 }
3092 
HWTEST_F_L0(JSMetadataTest,TestJsForinIteratorMetadata)3093 HWTEST_F_L0(JSMetadataTest, TestJsForinIteratorMetadata)
3094 {
3095     JSMetadataTestHelper tester {};
3096     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_forin_iterator.json";
3097     JSMetadataTestHelper::Metadata metadata {};
3098 
3099     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3100     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3101     ASSERT_TRUE(tester.Test(JSType::JS_FORIN_ITERATOR, metadata));
3102 }
3103 
HWTEST_F_L0(JSMetadataTest,TestJsFunctionMetadata)3104 HWTEST_F_L0(JSMetadataTest, TestJsFunctionMetadata)
3105 {
3106 #if defined(PANDA_TARGET_AMD64) || defined(PANDA_TARGET_ARM64)
3107     JSMetadataTestHelper tester {};
3108     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_function.json";
3109     JSMetadataTestHelper::Metadata metadata {};
3110 
3111     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3112     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3113     ASSERT_TRUE(tester.Test(JSType::JS_FUNCTION, metadata));
3114 #endif
3115 }
3116 
HWTEST_F_L0(JSMetadataTest,TestJsFunctionBaseMetadata)3117 HWTEST_F_L0(JSMetadataTest, TestJsFunctionBaseMetadata)
3118 {
3119 #if defined(PANDA_TARGET_AMD64) || defined(PANDA_TARGET_ARM64)
3120     JSMetadataTestHelper tester {};
3121     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_function_base.json";
3122     JSMetadataTestHelper::Metadata metadata {};
3123 
3124     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3125     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3126     ASSERT_TRUE(tester.Test(JSType::JS_FUNCTION_BASE, metadata));
3127 #endif
3128 }
3129 
HWTEST_F_L0(JSMetadataTest,TestJsGeneratorContextMetadata)3130 HWTEST_F_L0(JSMetadataTest, TestJsGeneratorContextMetadata)
3131 {
3132     JSMetadataTestHelper tester {};
3133     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_generator_context.json";
3134     JSMetadataTestHelper::Metadata metadata {};
3135 
3136     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3137     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3138     ASSERT_TRUE(tester.Test(JSType::JS_GENERATOR_CONTEXT, metadata));
3139 }
3140 
HWTEST_F_L0(JSMetadataTest,TestJsGeneratorFunctionMetadata)3141 HWTEST_F_L0(JSMetadataTest, TestJsGeneratorFunctionMetadata)
3142 {
3143     JSMetadataTestHelper tester {};
3144     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_generator_function.json";
3145     JSMetadataTestHelper::Metadata metadata {};
3146 
3147     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3148     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3149     ASSERT_TRUE(tester.Test(JSType::JS_GENERATOR_FUNCTION, metadata));
3150 }
3151 
HWTEST_F_L0(JSMetadataTest,TestJsGeneratorObjectMetadata)3152 HWTEST_F_L0(JSMetadataTest, TestJsGeneratorObjectMetadata)
3153 {
3154 #if defined(PANDA_TARGET_AMD64) || defined(PANDA_TARGET_ARM64)
3155     JSMetadataTestHelper tester {};
3156     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_generator_object.json";
3157     JSMetadataTestHelper::Metadata metadata {};
3158 
3159     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3160     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3161     ASSERT_TRUE(tester.Test(JSType::JS_GENERATOR_OBJECT, metadata));
3162 #endif
3163 }
3164 
HWTEST_F_L0(JSMetadataTest,TestJsGlobalObjectMetadata)3165 HWTEST_F_L0(JSMetadataTest, TestJsGlobalObjectMetadata)
3166 {
3167     JSMetadataTestHelper tester {};
3168     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_global_object.json";
3169     JSMetadataTestHelper::Metadata metadata {};
3170 
3171     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3172     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3173     ASSERT_TRUE(tester.Test(JSType::JS_GLOBAL_OBJECT, metadata));
3174 }
3175 
HWTEST_F_L0(JSMetadataTest,TestJsInt16ArrayMetadata)3176 HWTEST_F_L0(JSMetadataTest, TestJsInt16ArrayMetadata)
3177 {
3178     JSMetadataTestHelper tester {};
3179     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_int16_array.json";
3180     JSMetadataTestHelper::Metadata metadata {};
3181 
3182     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3183     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3184     ASSERT_TRUE(tester.Test(JSType::JS_INT16_ARRAY, metadata));
3185 }
3186 
HWTEST_F_L0(JSMetadataTest,TestJsInt32ArrayMetadata)3187 HWTEST_F_L0(JSMetadataTest, TestJsInt32ArrayMetadata)
3188 {
3189     JSMetadataTestHelper tester {};
3190     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_int32_array.json";
3191     JSMetadataTestHelper::Metadata metadata {};
3192 
3193     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3194     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3195     ASSERT_TRUE(tester.Test(JSType::JS_INT32_ARRAY, metadata));
3196 }
3197 
HWTEST_F_L0(JSMetadataTest,TestJsInt8ArrayMetadata)3198 HWTEST_F_L0(JSMetadataTest, TestJsInt8ArrayMetadata)
3199 {
3200     JSMetadataTestHelper tester {};
3201     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_int8_array.json";
3202     JSMetadataTestHelper::Metadata metadata {};
3203 
3204     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3205     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3206     ASSERT_TRUE(tester.Test(JSType::JS_INT8_ARRAY, metadata));
3207 }
3208 
HWTEST_F_L0(JSMetadataTest,TestJsIntlMetadata)3209 HWTEST_F_L0(JSMetadataTest, TestJsIntlMetadata)
3210 {
3211     JSMetadataTestHelper tester {};
3212     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_intl.json";
3213     JSMetadataTestHelper::Metadata metadata {};
3214 
3215     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3216     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3217     ASSERT_TRUE(tester.Test(JSType::JS_INTL, metadata));
3218 }
3219 
HWTEST_F_L0(JSMetadataTest,TestJsIntlBoundFunctionMetadata)3220 HWTEST_F_L0(JSMetadataTest, TestJsIntlBoundFunctionMetadata)
3221 {
3222     JSMetadataTestHelper tester {};
3223     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_intl_bound_function.json";
3224     JSMetadataTestHelper::Metadata metadata {};
3225 
3226     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3227     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3228     ASSERT_TRUE(tester.Test(JSType::JS_INTL_BOUND_FUNCTION, metadata));
3229 }
3230 
HWTEST_F_L0(JSMetadataTest,TestJsIteratorMetadata)3231 HWTEST_F_L0(JSMetadataTest, TestJsIteratorMetadata)
3232 {
3233     JSMetadataTestHelper tester {};
3234     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_iterator.json";
3235     JSMetadataTestHelper::Metadata metadata {};
3236 
3237     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3238     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3239     ASSERT_TRUE(tester.Test(JSType::JS_ITERATOR, metadata));
3240 }
3241 
HWTEST_F_L0(JSMetadataTest,TestJsListFormatMetadata)3242 HWTEST_F_L0(JSMetadataTest, TestJsListFormatMetadata)
3243 {
3244     JSMetadataTestHelper tester {};
3245     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_list_format.json";
3246     JSMetadataTestHelper::Metadata metadata {};
3247 
3248     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3249     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3250     ASSERT_TRUE(tester.Test(JSType::JS_LIST_FORMAT, metadata));
3251 }
3252 
HWTEST_F_L0(JSMetadataTest,TestJsLocaleMetadata)3253 HWTEST_F_L0(JSMetadataTest, TestJsLocaleMetadata)
3254 {
3255     JSMetadataTestHelper tester {};
3256     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_locale.json";
3257     JSMetadataTestHelper::Metadata metadata {};
3258 
3259     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3260     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3261     ASSERT_TRUE(tester.Test(JSType::JS_LOCALE, metadata));
3262 }
3263 
HWTEST_F_L0(JSMetadataTest,TestJsMapMetadata)3264 HWTEST_F_L0(JSMetadataTest, TestJsMapMetadata)
3265 {
3266     JSMetadataTestHelper tester {};
3267     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_map.json";
3268     JSMetadataTestHelper::Metadata metadata {};
3269 
3270     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3271     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3272     ASSERT_TRUE(tester.Test(JSType::JS_MAP, metadata));
3273 }
3274 
HWTEST_F_L0(JSMetadataTest,TestJsMapIteratorMetadata)3275 HWTEST_F_L0(JSMetadataTest, TestJsMapIteratorMetadata)
3276 {
3277     JSMetadataTestHelper tester {};
3278     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_map_iterator.json";
3279     JSMetadataTestHelper::Metadata metadata {};
3280 
3281     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3282     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3283     ASSERT_TRUE(tester.Test(JSType::JS_MAP_ITERATOR, metadata));
3284 }
3285 
HWTEST_F_L0(JSMetadataTest,TestJsModuleNamespaceMetadata)3286 HWTEST_F_L0(JSMetadataTest, TestJsModuleNamespaceMetadata)
3287 {
3288     JSMetadataTestHelper tester {};
3289     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_module_namespace.json";
3290     JSMetadataTestHelper::Metadata metadata {};
3291 
3292     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3293     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3294     ASSERT_TRUE(tester.Test(JSType::JS_MODULE_NAMESPACE, metadata));
3295 }
3296 
HWTEST_F_L0(JSMetadataTest,TestJsNativePointerMetadata)3297 HWTEST_F_L0(JSMetadataTest, TestJsNativePointerMetadata)
3298 {
3299 #if defined(PANDA_TARGET_AMD64) || defined(PANDA_TARGET_ARM64)
3300     JSMetadataTestHelper tester {};
3301     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_native_pointer.json";
3302     JSMetadataTestHelper::Metadata metadata {};
3303 
3304     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3305     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3306     ASSERT_TRUE(tester.Test(JSType::JS_NATIVE_POINTER, metadata));
3307 #endif
3308 }
3309 
HWTEST_F_L0(JSMetadataTest,TestJsNumberFormatMetadata)3310 HWTEST_F_L0(JSMetadataTest, TestJsNumberFormatMetadata)
3311 {
3312     JSMetadataTestHelper tester {};
3313     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_number_format.json";
3314     JSMetadataTestHelper::Metadata metadata {};
3315 
3316     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3317     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3318     ASSERT_TRUE(tester.Test(JSType::JS_NUMBER_FORMAT, metadata));
3319 }
3320 
HWTEST_F_L0(JSMetadataTest,TestJsObjectMetadata)3321 HWTEST_F_L0(JSMetadataTest, TestJsObjectMetadata)
3322 {
3323     JSMetadataTestHelper tester {};
3324     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_object.json";
3325     JSMetadataTestHelper::Metadata metadata {};
3326 
3327     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3328     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3329     ASSERT_TRUE(tester.Test(JSType::JS_OBJECT, metadata));
3330 }
3331 
HWTEST_F_L0(JSMetadataTest,TestJsOomErrorMetadata)3332 HWTEST_F_L0(JSMetadataTest, TestJsOomErrorMetadata)
3333 {
3334     JSMetadataTestHelper tester {};
3335     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_oom_error.json";
3336     JSMetadataTestHelper::Metadata metadata {};
3337 
3338     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3339     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3340     ASSERT_TRUE(tester.Test(JSType::JS_OOM_ERROR, metadata));
3341 }
3342 
HWTEST_F_L0(JSMetadataTest,TestJsPluralRulesMetadata)3343 HWTEST_F_L0(JSMetadataTest, TestJsPluralRulesMetadata)
3344 {
3345     JSMetadataTestHelper tester {};
3346     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_plural_rules.json";
3347     JSMetadataTestHelper::Metadata metadata {};
3348 
3349     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3350     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3351     ASSERT_TRUE(tester.Test(JSType::JS_PLURAL_RULES, metadata));
3352 }
3353 
HWTEST_F_L0(JSMetadataTest,TestJsPrimitiveRefMetadata)3354 HWTEST_F_L0(JSMetadataTest, TestJsPrimitiveRefMetadata)
3355 {
3356     JSMetadataTestHelper tester {};
3357     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_primitive_ref.json";
3358     JSMetadataTestHelper::Metadata metadata {};
3359 
3360     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3361     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3362     ASSERT_TRUE(tester.Test(JSType::JS_PRIMITIVE_REF, metadata));
3363 }
3364 
HWTEST_F_L0(JSMetadataTest,TestJsPromiseMetadata)3365 HWTEST_F_L0(JSMetadataTest, TestJsPromiseMetadata)
3366 {
3367     JSMetadataTestHelper tester {};
3368     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_promise.json";
3369     JSMetadataTestHelper::Metadata metadata {};
3370 
3371     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3372     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3373     ASSERT_TRUE(tester.Test(JSType::JS_PROMISE, metadata));
3374 }
3375 
HWTEST_F_L0(JSMetadataTest,TestJsPromiseAllResolveElementFunctionMetadata)3376 HWTEST_F_L0(JSMetadataTest, TestJsPromiseAllResolveElementFunctionMetadata)
3377 {
3378     JSMetadataTestHelper tester {};
3379     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_promise_all_resolve_element_function.json";
3380     JSMetadataTestHelper::Metadata metadata {};
3381 
3382     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3383     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3384     ASSERT_TRUE(tester.Test(JSType::JS_PROMISE_ALL_RESOLVE_ELEMENT_FUNCTION, metadata));
3385 }
3386 
HWTEST_F_L0(JSMetadataTest,TestJsPromiseAllSettledElementFunctionMetadata)3387 HWTEST_F_L0(JSMetadataTest, TestJsPromiseAllSettledElementFunctionMetadata)
3388 {
3389     JSMetadataTestHelper tester {};
3390     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_promise_all_settled_element_function.json";
3391     JSMetadataTestHelper::Metadata metadata {};
3392 
3393     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3394     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3395     ASSERT_TRUE(tester.Test(JSType::JS_PROMISE_ALL_SETTLED_ELEMENT_FUNCTION, metadata));
3396 }
3397 
HWTEST_F_L0(JSMetadataTest,TestJsPromiseAnyRejectElementFunctionMetadata)3398 HWTEST_F_L0(JSMetadataTest, TestJsPromiseAnyRejectElementFunctionMetadata)
3399 {
3400     JSMetadataTestHelper tester {};
3401     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_promise_any_reject_element_function.json";
3402     JSMetadataTestHelper::Metadata metadata {};
3403 
3404     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3405     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3406     ASSERT_TRUE(tester.Test(JSType::JS_PROMISE_ANY_REJECT_ELEMENT_FUNCTION, metadata));
3407 }
3408 
HWTEST_F_L0(JSMetadataTest,TestJsPromiseExecutorFunctionMetadata)3409 HWTEST_F_L0(JSMetadataTest, TestJsPromiseExecutorFunctionMetadata)
3410 {
3411     JSMetadataTestHelper tester {};
3412     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_promise_executor_function.json";
3413     JSMetadataTestHelper::Metadata metadata {};
3414 
3415     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3416     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3417     ASSERT_TRUE(tester.Test(JSType::JS_PROMISE_EXECUTOR_FUNCTION, metadata));
3418 }
3419 
HWTEST_F_L0(JSMetadataTest,TestJsPromiseFinallyFunctionMetadata)3420 HWTEST_F_L0(JSMetadataTest, TestJsPromiseFinallyFunctionMetadata)
3421 {
3422     JSMetadataTestHelper tester {};
3423     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_promise_finally_function.json";
3424     JSMetadataTestHelper::Metadata metadata {};
3425 
3426     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3427     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3428     ASSERT_TRUE(tester.Test(JSType::JS_PROMISE_FINALLY_FUNCTION, metadata));
3429 }
3430 
HWTEST_F_L0(JSMetadataTest,TestJsPromiseReactionsFunctionMetadata)3431 HWTEST_F_L0(JSMetadataTest, TestJsPromiseReactionsFunctionMetadata)
3432 {
3433     JSMetadataTestHelper tester {};
3434     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_promise_reactions_function.json";
3435     JSMetadataTestHelper::Metadata metadata {};
3436 
3437     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3438     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3439     ASSERT_TRUE(tester.Test(JSType::JS_PROMISE_REACTIONS_FUNCTION, metadata));
3440 }
3441 
HWTEST_F_L0(JSMetadataTest,TestJsPromiseValueThunkOrThrowerFunctionMetadata)3442 HWTEST_F_L0(JSMetadataTest, TestJsPromiseValueThunkOrThrowerFunctionMetadata)
3443 {
3444     JSMetadataTestHelper tester {};
3445     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_promise_value_thunk_or_thrower_function.json";
3446     JSMetadataTestHelper::Metadata metadata {};
3447 
3448     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3449     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3450     ASSERT_TRUE(tester.Test(JSType::JS_PROMISE_VALUE_THUNK_OR_THROWER_FUNCTION, metadata));
3451 }
3452 
HWTEST_F_L0(JSMetadataTest,TestJsProxyMetadata)3453 HWTEST_F_L0(JSMetadataTest, TestJsProxyMetadata)
3454 {
3455     JSMetadataTestHelper tester {};
3456     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_proxy.json";
3457     JSMetadataTestHelper::Metadata metadata {};
3458 
3459     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3460     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3461     ASSERT_TRUE(tester.Test(JSType::JS_PROXY, metadata));
3462 }
3463 
HWTEST_F_L0(JSMetadataTest,TestJsProxyRevocFunctionMetadata)3464 HWTEST_F_L0(JSMetadataTest, TestJsProxyRevocFunctionMetadata)
3465 {
3466     JSMetadataTestHelper tester {};
3467     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_proxy_revoc_function.json";
3468     JSMetadataTestHelper::Metadata metadata {};
3469 
3470     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3471     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3472     ASSERT_TRUE(tester.Test(JSType::JS_PROXY_REVOC_FUNCTION, metadata));
3473 }
3474 
HWTEST_F_L0(JSMetadataTest,TestJsRangeErrorMetadata)3475 HWTEST_F_L0(JSMetadataTest, TestJsRangeErrorMetadata)
3476 {
3477     JSMetadataTestHelper tester {};
3478     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_range_error.json";
3479     JSMetadataTestHelper::Metadata metadata {};
3480 
3481     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3482     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3483     ASSERT_TRUE(tester.Test(JSType::JS_RANGE_ERROR, metadata));
3484 }
3485 
HWTEST_F_L0(JSMetadataTest,TestJsRealmMetadata)3486 HWTEST_F_L0(JSMetadataTest, TestJsRealmMetadata)
3487 {
3488     JSMetadataTestHelper tester {};
3489     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_realm.json";
3490     JSMetadataTestHelper::Metadata metadata {};
3491 
3492     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3493     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3494     ASSERT_TRUE(tester.Test(JSType::JS_REALM, metadata));
3495 }
3496 
HWTEST_F_L0(JSMetadataTest,TestJsReferenceErrorMetadata)3497 HWTEST_F_L0(JSMetadataTest, TestJsReferenceErrorMetadata)
3498 {
3499     JSMetadataTestHelper tester {};
3500     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_reference_error.json";
3501     JSMetadataTestHelper::Metadata metadata {};
3502 
3503     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3504     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3505     ASSERT_TRUE(tester.Test(JSType::JS_REFERENCE_ERROR, metadata));
3506 }
3507 
HWTEST_F_L0(JSMetadataTest,TestJsRegExpMetadata)3508 HWTEST_F_L0(JSMetadataTest, TestJsRegExpMetadata)
3509 {
3510     JSMetadataTestHelper tester {};
3511     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_reg_exp.json";
3512     JSMetadataTestHelper::Metadata metadata {};
3513 
3514     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3515     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3516     ASSERT_TRUE(tester.Test(JSType::JS_REG_EXP, metadata));
3517 }
3518 
HWTEST_F_L0(JSMetadataTest,TestJsRegExpIteratorMetadata)3519 HWTEST_F_L0(JSMetadataTest, TestJsRegExpIteratorMetadata)
3520 {
3521     JSMetadataTestHelper tester {};
3522     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_reg_exp_iterator.json";
3523     JSMetadataTestHelper::Metadata metadata {};
3524 
3525     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3526     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3527     ASSERT_TRUE(tester.Test(JSType::JS_REG_EXP_ITERATOR, metadata));
3528 }
3529 
HWTEST_F_L0(JSMetadataTest,TestJsRelativeTimeFormatMetadata)3530 HWTEST_F_L0(JSMetadataTest, TestJsRelativeTimeFormatMetadata)
3531 {
3532     JSMetadataTestHelper tester {};
3533     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_relative_time_format.json";
3534     JSMetadataTestHelper::Metadata metadata {};
3535 
3536     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3537     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3538     ASSERT_TRUE(tester.Test(JSType::JS_RELATIVE_TIME_FORMAT, metadata));
3539 }
3540 
HWTEST_F_L0(JSMetadataTest,TestJsSegmenterMetadata)3541 HWTEST_F_L0(JSMetadataTest, TestJsSegmenterMetadata)
3542 {
3543     JSMetadataTestHelper tester {};
3544     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_segmenter.json";
3545     JSMetadataTestHelper::Metadata metadata {};
3546 
3547     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3548     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3549     ASSERT_TRUE(tester.Test(JSType::JS_SEGMENTER, metadata));
3550 }
3551 
HWTEST_F_L0(JSMetadataTest,TestJsSegmentsMetadata)3552 HWTEST_F_L0(JSMetadataTest, TestJsSegmentsMetadata)
3553 {
3554     JSMetadataTestHelper tester {};
3555     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_segments.json";
3556     JSMetadataTestHelper::Metadata metadata {};
3557 
3558     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3559     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3560     ASSERT_TRUE(tester.Test(JSType::JS_SEGMENTS, metadata));
3561 }
3562 
HWTEST_F_L0(JSMetadataTest,TestJsSegmentIteratorMetadata)3563 HWTEST_F_L0(JSMetadataTest, TestJsSegmentIteratorMetadata)
3564 {
3565     JSMetadataTestHelper tester {};
3566     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_segment_iterator.json";
3567     JSMetadataTestHelper::Metadata metadata {};
3568 
3569     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3570     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3571     ASSERT_TRUE(tester.Test(JSType::JS_SEGMENT_ITERATOR, metadata));
3572 }
3573 
HWTEST_F_L0(JSMetadataTest,TestJsSendableArrayBufferMetadata)3574 HWTEST_F_L0(JSMetadataTest, TestJsSendableArrayBufferMetadata)
3575 {
3576     JSMetadataTestHelper tester {};
3577     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_sendable_array_buffer.json";
3578     JSMetadataTestHelper::Metadata metadata {};
3579 
3580     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3581     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3582     ASSERT_TRUE(tester.Test(JSType::JS_SENDABLE_ARRAY_BUFFER, metadata));
3583 }
3584 
HWTEST_F_L0(JSMetadataTest,TestJsSetMetadata)3585 HWTEST_F_L0(JSMetadataTest, TestJsSetMetadata)
3586 {
3587     JSMetadataTestHelper tester {};
3588     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_set.json";
3589     JSMetadataTestHelper::Metadata metadata {};
3590 
3591     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3592     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3593     ASSERT_TRUE(tester.Test(JSType::JS_SET, metadata));
3594 }
3595 
HWTEST_F_L0(JSMetadataTest,TestJsSetIteratorMetadata)3596 HWTEST_F_L0(JSMetadataTest, TestJsSetIteratorMetadata)
3597 {
3598     JSMetadataTestHelper tester {};
3599     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_set_iterator.json";
3600     JSMetadataTestHelper::Metadata metadata {};
3601 
3602     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3603     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3604     ASSERT_TRUE(tester.Test(JSType::JS_SET_ITERATOR, metadata));
3605 }
3606 
HWTEST_F_L0(JSMetadataTest,TestJsSharedArrayMetadata)3607 HWTEST_F_L0(JSMetadataTest, TestJsSharedArrayMetadata)
3608 {
3609     JSMetadataTestHelper tester {};
3610     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_shared_array.json";
3611     JSMetadataTestHelper::Metadata metadata {};
3612 
3613     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3614     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3615     ASSERT_TRUE(tester.Test(JSType::JS_SHARED_ARRAY, metadata));
3616 }
3617 
HWTEST_F_L0(JSMetadataTest,TestJsSharedArrayBufferMetadata)3618 HWTEST_F_L0(JSMetadataTest, TestJsSharedArrayBufferMetadata)
3619 {
3620     JSMetadataTestHelper tester {};
3621     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_shared_array_buffer.json";
3622     JSMetadataTestHelper::Metadata metadata {};
3623 
3624     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3625     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3626     ASSERT_TRUE(tester.Test(JSType::JS_SHARED_ARRAY_BUFFER, metadata));
3627 }
3628 
HWTEST_F_L0(JSMetadataTest,TestJsSharedArrayIteratorMetadata)3629 HWTEST_F_L0(JSMetadataTest, TestJsSharedArrayIteratorMetadata)
3630 {
3631     JSMetadataTestHelper tester {};
3632     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_shared_array_iterator.json";
3633     JSMetadataTestHelper::Metadata metadata {};
3634 
3635     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3636     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3637     ASSERT_TRUE(tester.Test(JSType::JS_SHARED_ARRAY_ITERATOR, metadata));
3638 }
3639 
HWTEST_F_L0(JSMetadataTest,TestJsSharedAsyncFunctionMetadata)3640 HWTEST_F_L0(JSMetadataTest, TestJsSharedAsyncFunctionMetadata)
3641 {
3642     JSMetadataTestHelper tester {};
3643     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_shared_async_function.json";
3644     JSMetadataTestHelper::Metadata metadata {};
3645 
3646     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3647     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3648     ASSERT_TRUE(tester.Test(JSType::JS_SHARED_ASYNC_FUNCTION, metadata));
3649 }
3650 
HWTEST_F_L0(JSMetadataTest,TestJsSharedBigint64ArrayMetadata)3651 HWTEST_F_L0(JSMetadataTest, TestJsSharedBigint64ArrayMetadata)
3652 {
3653     JSMetadataTestHelper tester {};
3654     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_shared_bigint64_array.json";
3655     JSMetadataTestHelper::Metadata metadata {};
3656 
3657     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3658     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3659     ASSERT_TRUE(tester.Test(JSType::JS_SHARED_BIGINT64_ARRAY, metadata));
3660 }
3661 
HWTEST_F_L0(JSMetadataTest,TestJsSharedBiguint64ArrayMetadata)3662 HWTEST_F_L0(JSMetadataTest, TestJsSharedBiguint64ArrayMetadata)
3663 {
3664     JSMetadataTestHelper tester {};
3665     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_shared_biguint64_array.json";
3666     JSMetadataTestHelper::Metadata metadata {};
3667 
3668     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3669     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3670     ASSERT_TRUE(tester.Test(JSType::JS_SHARED_BIGUINT64_ARRAY, metadata));
3671 }
3672 
HWTEST_F_L0(JSMetadataTest,TestJsSharedFloat32ArrayMetadata)3673 HWTEST_F_L0(JSMetadataTest, TestJsSharedFloat32ArrayMetadata)
3674 {
3675     JSMetadataTestHelper tester {};
3676     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_shared_float32_array.json";
3677     JSMetadataTestHelper::Metadata metadata {};
3678 
3679     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3680     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3681     ASSERT_TRUE(tester.Test(JSType::JS_SHARED_FLOAT32_ARRAY, metadata));
3682 }
3683 
HWTEST_F_L0(JSMetadataTest,TestJsSharedFloat64ArrayMetadata)3684 HWTEST_F_L0(JSMetadataTest, TestJsSharedFloat64ArrayMetadata)
3685 {
3686     JSMetadataTestHelper tester {};
3687     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_shared_float64_array.json";
3688     JSMetadataTestHelper::Metadata metadata {};
3689 
3690     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3691     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3692     ASSERT_TRUE(tester.Test(JSType::JS_SHARED_FLOAT64_ARRAY, metadata));
3693 }
3694 
HWTEST_F_L0(JSMetadataTest,TestJsSharedFunctionMetadata)3695 HWTEST_F_L0(JSMetadataTest, TestJsSharedFunctionMetadata)
3696 {
3697     JSMetadataTestHelper tester {};
3698     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_shared_function.json";
3699     JSMetadataTestHelper::Metadata metadata {};
3700 
3701     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3702     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3703     ASSERT_TRUE(tester.Test(JSType::JS_SHARED_FUNCTION, metadata));
3704 }
3705 
HWTEST_F_L0(JSMetadataTest,TestJsSharedInt16ArrayMetadata)3706 HWTEST_F_L0(JSMetadataTest, TestJsSharedInt16ArrayMetadata)
3707 {
3708     JSMetadataTestHelper tester {};
3709     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_shared_int16_array.json";
3710     JSMetadataTestHelper::Metadata metadata {};
3711 
3712     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3713     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3714     ASSERT_TRUE(tester.Test(JSType::JS_SHARED_INT16_ARRAY, metadata));
3715 }
3716 
HWTEST_F_L0(JSMetadataTest,TestJsSharedInt32ArrayMetadata)3717 HWTEST_F_L0(JSMetadataTest, TestJsSharedInt32ArrayMetadata)
3718 {
3719     JSMetadataTestHelper tester {};
3720     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_shared_int32_array.json";
3721     JSMetadataTestHelper::Metadata metadata {};
3722 
3723     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3724     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3725     ASSERT_TRUE(tester.Test(JSType::JS_SHARED_INT32_ARRAY, metadata));
3726 }
3727 
HWTEST_F_L0(JSMetadataTest,TestJsSharedInt8ArrayMetadata)3728 HWTEST_F_L0(JSMetadataTest, TestJsSharedInt8ArrayMetadata)
3729 {
3730     JSMetadataTestHelper tester {};
3731     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_shared_int8_array.json";
3732     JSMetadataTestHelper::Metadata metadata {};
3733 
3734     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3735     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3736     ASSERT_TRUE(tester.Test(JSType::JS_SHARED_INT8_ARRAY, metadata));
3737 }
3738 
HWTEST_F_L0(JSMetadataTest,TestJsSharedMapMetadata)3739 HWTEST_F_L0(JSMetadataTest, TestJsSharedMapMetadata)
3740 {
3741     JSMetadataTestHelper tester {};
3742     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_shared_map.json";
3743     JSMetadataTestHelper::Metadata metadata {};
3744 
3745     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3746     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3747     ASSERT_TRUE(tester.Test(JSType::JS_SHARED_MAP, metadata));
3748 }
3749 
HWTEST_F_L0(JSMetadataTest,TestJsSharedMapIteratorMetadata)3750 HWTEST_F_L0(JSMetadataTest, TestJsSharedMapIteratorMetadata)
3751 {
3752     JSMetadataTestHelper tester {};
3753     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_shared_map_iterator.json";
3754     JSMetadataTestHelper::Metadata metadata {};
3755 
3756     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3757     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3758     ASSERT_TRUE(tester.Test(JSType::JS_SHARED_MAP_ITERATOR, metadata));
3759 }
3760 
HWTEST_F_L0(JSMetadataTest,TestJsSharedObjectMetadata)3761 HWTEST_F_L0(JSMetadataTest, TestJsSharedObjectMetadata)
3762 {
3763     JSMetadataTestHelper tester {};
3764     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_shared_object.json";
3765     JSMetadataTestHelper::Metadata metadata {};
3766 
3767     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3768     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3769     ASSERT_TRUE(tester.Test(JSType::JS_SHARED_OBJECT, metadata));
3770 }
3771 
HWTEST_F_L0(JSMetadataTest,TestJsSharedSetMetadata)3772 HWTEST_F_L0(JSMetadataTest, TestJsSharedSetMetadata)
3773 {
3774     JSMetadataTestHelper tester {};
3775     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_shared_set.json";
3776     JSMetadataTestHelper::Metadata metadata {};
3777 
3778     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3779     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3780     ASSERT_TRUE(tester.Test(JSType::JS_SHARED_SET, metadata));
3781 }
3782 
HWTEST_F_L0(JSMetadataTest,TestJsSharedSetIteratorMetadata)3783 HWTEST_F_L0(JSMetadataTest, TestJsSharedSetIteratorMetadata)
3784 {
3785     JSMetadataTestHelper tester {};
3786     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_shared_set_iterator.json";
3787     JSMetadataTestHelper::Metadata metadata {};
3788 
3789     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3790     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3791     ASSERT_TRUE(tester.Test(JSType::JS_SHARED_SET_ITERATOR, metadata));
3792 }
3793 
HWTEST_F_L0(JSMetadataTest,TestJsSharedTypedArrayMetadata)3794 HWTEST_F_L0(JSMetadataTest, TestJsSharedTypedArrayMetadata)
3795 {
3796     JSMetadataTestHelper tester {};
3797     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_shared_typed_array.json";
3798     JSMetadataTestHelper::Metadata metadata {};
3799 
3800     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3801     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3802     ASSERT_TRUE(tester.Test(JSType::JS_SHARED_TYPED_ARRAY, metadata));
3803 }
3804 
HWTEST_F_L0(JSMetadataTest,TestJsSharedUint16ArrayMetadata)3805 HWTEST_F_L0(JSMetadataTest, TestJsSharedUint16ArrayMetadata)
3806 {
3807     JSMetadataTestHelper tester {};
3808     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_shared_uint16_array.json";
3809     JSMetadataTestHelper::Metadata metadata {};
3810 
3811     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3812     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3813     ASSERT_TRUE(tester.Test(JSType::JS_SHARED_UINT16_ARRAY, metadata));
3814 }
3815 
HWTEST_F_L0(JSMetadataTest,TestJsSharedUint32ArrayMetadata)3816 HWTEST_F_L0(JSMetadataTest, TestJsSharedUint32ArrayMetadata)
3817 {
3818     JSMetadataTestHelper tester {};
3819     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_shared_uint32_array.json";
3820     JSMetadataTestHelper::Metadata metadata {};
3821 
3822     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3823     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3824     ASSERT_TRUE(tester.Test(JSType::JS_SHARED_UINT32_ARRAY, metadata));
3825 }
3826 
HWTEST_F_L0(JSMetadataTest,TestJsSharedUint8ArrayMetadata)3827 HWTEST_F_L0(JSMetadataTest, TestJsSharedUint8ArrayMetadata)
3828 {
3829     JSMetadataTestHelper tester {};
3830     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_shared_uint8_array.json";
3831     JSMetadataTestHelper::Metadata metadata {};
3832 
3833     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3834     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3835     ASSERT_TRUE(tester.Test(JSType::JS_SHARED_UINT8_ARRAY, metadata));
3836 }
3837 
HWTEST_F_L0(JSMetadataTest,TestJsSharedUint8ClampedArrayMetadata)3838 HWTEST_F_L0(JSMetadataTest, TestJsSharedUint8ClampedArrayMetadata)
3839 {
3840     JSMetadataTestHelper tester {};
3841     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_shared_uint8_clamped_array.json";
3842     JSMetadataTestHelper::Metadata metadata {};
3843 
3844     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3845     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3846     ASSERT_TRUE(tester.Test(JSType::JS_SHARED_UINT8_CLAMPED_ARRAY, metadata));
3847 }
3848 
HWTEST_F_L0(JSMetadataTest,TestJsStringIteratorMetadata)3849 HWTEST_F_L0(JSMetadataTest, TestJsStringIteratorMetadata)
3850 {
3851     JSMetadataTestHelper tester {};
3852     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_string_iterator.json";
3853     JSMetadataTestHelper::Metadata metadata {};
3854 
3855     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3856     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3857     ASSERT_TRUE(tester.Test(JSType::JS_STRING_ITERATOR, metadata));
3858 }
3859 
HWTEST_F_L0(JSMetadataTest,TestJsSyntaxErrorMetadata)3860 HWTEST_F_L0(JSMetadataTest, TestJsSyntaxErrorMetadata)
3861 {
3862     JSMetadataTestHelper tester {};
3863     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_syntax_error.json";
3864     JSMetadataTestHelper::Metadata metadata {};
3865 
3866     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3867     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3868     ASSERT_TRUE(tester.Test(JSType::JS_SYNTAX_ERROR, metadata));
3869 }
3870 
HWTEST_F_L0(JSMetadataTest,TestJsTerminationErrorMetadata)3871 HWTEST_F_L0(JSMetadataTest, TestJsTerminationErrorMetadata)
3872 {
3873     JSMetadataTestHelper tester {};
3874     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_termination_error.json";
3875     JSMetadataTestHelper::Metadata metadata {};
3876 
3877     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3878     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3879     ASSERT_TRUE(tester.Test(JSType::JS_TERMINATION_ERROR, metadata));
3880 }
3881 
HWTEST_F_L0(JSMetadataTest,TestJsTypedArrayMetadata)3882 HWTEST_F_L0(JSMetadataTest, TestJsTypedArrayMetadata)
3883 {
3884     JSMetadataTestHelper tester {};
3885     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_typed_array.json";
3886     JSMetadataTestHelper::Metadata metadata {};
3887 
3888     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3889     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3890     ASSERT_TRUE(tester.Test(JSType::JS_TYPED_ARRAY, metadata));
3891 }
3892 
HWTEST_F_L0(JSMetadataTest,TestJsTypeErrorMetadata)3893 HWTEST_F_L0(JSMetadataTest, TestJsTypeErrorMetadata)
3894 {
3895     JSMetadataTestHelper tester {};
3896     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_type_error.json";
3897     JSMetadataTestHelper::Metadata metadata {};
3898 
3899     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3900     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3901     ASSERT_TRUE(tester.Test(JSType::JS_TYPE_ERROR, metadata));
3902 }
3903 
HWTEST_F_L0(JSMetadataTest,TestJsUint16ArrayMetadata)3904 HWTEST_F_L0(JSMetadataTest, TestJsUint16ArrayMetadata)
3905 {
3906     JSMetadataTestHelper tester {};
3907     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_uint16_array.json";
3908     JSMetadataTestHelper::Metadata metadata {};
3909 
3910     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3911     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3912     ASSERT_TRUE(tester.Test(JSType::JS_UINT16_ARRAY, metadata));
3913 }
3914 
HWTEST_F_L0(JSMetadataTest,TestJsUint32ArrayMetadata)3915 HWTEST_F_L0(JSMetadataTest, TestJsUint32ArrayMetadata)
3916 {
3917     JSMetadataTestHelper tester {};
3918     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_uint32_array.json";
3919     JSMetadataTestHelper::Metadata metadata {};
3920 
3921     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3922     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3923     ASSERT_TRUE(tester.Test(JSType::JS_UINT32_ARRAY, metadata));
3924 }
3925 
HWTEST_F_L0(JSMetadataTest,TestJsUint8ArrayMetadata)3926 HWTEST_F_L0(JSMetadataTest, TestJsUint8ArrayMetadata)
3927 {
3928     JSMetadataTestHelper tester {};
3929     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_uint8_array.json";
3930     JSMetadataTestHelper::Metadata metadata {};
3931 
3932     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3933     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3934     ASSERT_TRUE(tester.Test(JSType::JS_UINT8_ARRAY, metadata));
3935 }
3936 
HWTEST_F_L0(JSMetadataTest,TestJsUint8ClampedArrayMetadata)3937 HWTEST_F_L0(JSMetadataTest, TestJsUint8ClampedArrayMetadata)
3938 {
3939     JSMetadataTestHelper tester {};
3940     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_uint8_clamped_array.json";
3941     JSMetadataTestHelper::Metadata metadata {};
3942 
3943     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3944     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3945     ASSERT_TRUE(tester.Test(JSType::JS_UINT8_CLAMPED_ARRAY, metadata));
3946 }
3947 
HWTEST_F_L0(JSMetadataTest,TestJsUriErrorMetadata)3948 HWTEST_F_L0(JSMetadataTest, TestJsUriErrorMetadata)
3949 {
3950     JSMetadataTestHelper tester {};
3951     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_uri_error.json";
3952     JSMetadataTestHelper::Metadata metadata {};
3953 
3954     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3955     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3956     ASSERT_TRUE(tester.Test(JSType::JS_URI_ERROR, metadata));
3957 }
3958 
HWTEST_F_L0(JSMetadataTest,TestJsWeakMapMetadata)3959 HWTEST_F_L0(JSMetadataTest, TestJsWeakMapMetadata)
3960 {
3961     JSMetadataTestHelper tester {};
3962     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_weak_map.json";
3963     JSMetadataTestHelper::Metadata metadata {};
3964 
3965     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3966     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3967     ASSERT_TRUE(tester.Test(JSType::JS_WEAK_MAP, metadata));
3968 }
3969 
HWTEST_F_L0(JSMetadataTest,TestJsWeakRefMetadata)3970 HWTEST_F_L0(JSMetadataTest, TestJsWeakRefMetadata)
3971 {
3972     JSMetadataTestHelper tester {};
3973     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_weak_ref.json";
3974     JSMetadataTestHelper::Metadata metadata {};
3975 
3976     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3977     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3978     ASSERT_TRUE(tester.Test(JSType::JS_WEAK_REF, metadata));
3979 }
3980 
HWTEST_F_L0(JSMetadataTest,TestJsWeakSetMetadata)3981 HWTEST_F_L0(JSMetadataTest, TestJsWeakSetMetadata)
3982 {
3983     JSMetadataTestHelper tester {};
3984     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"js_weak_set.json";
3985     JSMetadataTestHelper::Metadata metadata {};
3986 
3987     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3988     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
3989     ASSERT_TRUE(tester.Test(JSType::JS_WEAK_SET, metadata));
3990 }
3991 
HWTEST_F_L0(JSMetadataTest,TestLexicalEnvMetadata)3992 HWTEST_F_L0(JSMetadataTest, TestLexicalEnvMetadata)
3993 {
3994     JSMetadataTestHelper tester {};
3995     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"lexical_env.json";
3996     JSMetadataTestHelper::Metadata metadata {};
3997 
3998     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
3999     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
4000     ASSERT_TRUE(tester.Test(JSType::LEXICAL_ENV, metadata));
4001 }
4002 
HWTEST_F_L0(JSMetadataTest,TestLineStringMetadata)4003 HWTEST_F_L0(JSMetadataTest, TestLineStringMetadata)
4004 {
4005     JSMetadataTestHelper tester {};
4006     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"line_string.json";
4007     JSMetadataTestHelper::Metadata metadata {};
4008 
4009     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
4010     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
4011     ASSERT_TRUE(tester.Test(JSType::LINE_STRING, metadata));
4012 }
4013 
HWTEST_F_L0(JSMetadataTest,TestLinkedNodeMetadata)4014 HWTEST_F_L0(JSMetadataTest, TestLinkedNodeMetadata)
4015 {
4016     JSMetadataTestHelper tester {};
4017     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"linked_node.json";
4018     JSMetadataTestHelper::Metadata metadata {};
4019 
4020     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
4021     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
4022     ASSERT_TRUE(tester.Test(JSType::LINKED_NODE, metadata));
4023 }
4024 
HWTEST_F_L0(JSMetadataTest,TestLocalExportentryRecordMetadata)4025 HWTEST_F_L0(JSMetadataTest, TestLocalExportentryRecordMetadata)
4026 {
4027     JSMetadataTestHelper tester {};
4028     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"local_exportentry_record.json";
4029     JSMetadataTestHelper::Metadata metadata {};
4030 
4031     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
4032     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
4033     ASSERT_TRUE(tester.Test(JSType::LOCAL_EXPORTENTRY_RECORD, metadata));
4034 }
4035 
HWTEST_F_L0(JSMetadataTest,TestMachineCodeObjectMetadata)4036 HWTEST_F_L0(JSMetadataTest, TestMachineCodeObjectMetadata)
4037 {
4038 #if defined(PANDA_TARGET_AMD64) || defined(PANDA_TARGET_ARM64)
4039     JSMetadataTestHelper tester {};
4040     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"machine_code_object.json";
4041     JSMetadataTestHelper::Metadata metadata {};
4042 
4043     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
4044     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
4045     ASSERT_TRUE(tester.Test(JSType::MACHINE_CODE_OBJECT, metadata));
4046 #endif
4047 }
4048 
HWTEST_F_L0(JSMetadataTest,TestMarkerCellMetadata)4049 HWTEST_F_L0(JSMetadataTest, TestMarkerCellMetadata)
4050 {
4051     JSMetadataTestHelper tester {};
4052     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"marker_cell.json";
4053     JSMetadataTestHelper::Metadata metadata {};
4054 
4055     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
4056     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
4057     ASSERT_TRUE(tester.Test(JSType::MARKER_CELL, metadata));
4058 }
4059 
HWTEST_F_L0(JSMetadataTest,TestMethodMetadata)4060 HWTEST_F_L0(JSMetadataTest, TestMethodMetadata)
4061 {
4062 #if defined(PANDA_TARGET_AMD64) || defined(PANDA_TARGET_ARM64)
4063     JSMetadataTestHelper tester {};
4064     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"method.json";
4065     JSMetadataTestHelper::Metadata metadata {};
4066 
4067     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
4068     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
4069     ASSERT_TRUE(tester.Test(JSType::METHOD, metadata));
4070 #endif
4071 }
4072 
HWTEST_F_L0(JSMetadataTest,TestMicroJobQueueMetadata)4073 HWTEST_F_L0(JSMetadataTest, TestMicroJobQueueMetadata)
4074 {
4075     JSMetadataTestHelper tester {};
4076     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"micro_job_queue.json";
4077     JSMetadataTestHelper::Metadata metadata {};
4078 
4079     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
4080     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
4081     ASSERT_TRUE(tester.Test(JSType::MICRO_JOB_QUEUE, metadata));
4082 }
4083 
HWTEST_F_L0(JSMetadataTest,TestModuleRecordMetadata)4084 HWTEST_F_L0(JSMetadataTest, TestModuleRecordMetadata)
4085 {
4086     JSMetadataTestHelper tester {};
4087     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"module_record.json";
4088     JSMetadataTestHelper::Metadata metadata {};
4089 
4090     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
4091     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
4092     ASSERT_TRUE(tester.Test(JSType::MODULE_RECORD, metadata));
4093 }
4094 
HWTEST_F_L0(JSMetadataTest,TestMutantTaggedArrayMetadata)4095 HWTEST_F_L0(JSMetadataTest, TestMutantTaggedArrayMetadata)
4096 {
4097     JSMetadataTestHelper tester {};
4098     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"mutant_tagged_array.json";
4099     JSMetadataTestHelper::Metadata metadata {};
4100 
4101     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
4102     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
4103     ASSERT_TRUE(tester.Test(JSType::MUTANT_TAGGED_ARRAY, metadata));
4104 }
4105 
HWTEST_F_L0(JSMetadataTest,TestNativeModuleFailureInfoMetadata)4106 HWTEST_F_L0(JSMetadataTest, TestNativeModuleFailureInfoMetadata)
4107 {
4108     JSMetadataTestHelper tester {};
4109     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"native_module_failure_info.json";
4110     JSMetadataTestHelper::Metadata metadata {};
4111 
4112     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
4113     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
4114     ASSERT_TRUE(tester.Test(JSType::NATIVE_MODULE_FAILURE_INFO, metadata));
4115 }
4116 
HWTEST_F_L0(JSMetadataTest,TestProfileTypeInfoMetadata)4117 HWTEST_F_L0(JSMetadataTest, TestProfileTypeInfoMetadata)
4118 {
4119     JSMetadataTestHelper tester {};
4120     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"profile_type_info.json";
4121     JSMetadataTestHelper::Metadata metadata {};
4122 
4123     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
4124     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
4125     ASSERT_TRUE(tester.Test(JSType::PROFILE_TYPE_INFO, metadata));
4126 }
4127 
HWTEST_F_L0(JSMetadataTest,TestProfileTypeInfoCell0Metadata)4128 HWTEST_F_L0(JSMetadataTest, TestProfileTypeInfoCell0Metadata)
4129 {
4130     JSMetadataTestHelper tester {};
4131     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"profile_type_info_cell_0.json";
4132     JSMetadataTestHelper::Metadata metadata {};
4133 
4134     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
4135     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
4136     ASSERT_TRUE(tester.Test(JSType::PROFILE_TYPE_INFO_CELL_0, metadata));
4137 }
4138 
HWTEST_F_L0(JSMetadataTest,TestProfileTypeInfoCell1Metadata)4139 HWTEST_F_L0(JSMetadataTest, TestProfileTypeInfoCell1Metadata)
4140 {
4141     JSMetadataTestHelper tester {};
4142     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"profile_type_info_cell_1.json";
4143     JSMetadataTestHelper::Metadata metadata {};
4144 
4145     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
4146     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
4147     ASSERT_TRUE(tester.Test(JSType::PROFILE_TYPE_INFO_CELL_1, metadata));
4148 }
4149 
HWTEST_F_L0(JSMetadataTest,TestProfileTypeInfoCellNMetadata)4150 HWTEST_F_L0(JSMetadataTest, TestProfileTypeInfoCellNMetadata)
4151 {
4152     JSMetadataTestHelper tester {};
4153     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"profile_type_info_cell_n.json";
4154     JSMetadataTestHelper::Metadata metadata {};
4155 
4156     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
4157     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
4158     ASSERT_TRUE(tester.Test(JSType::PROFILE_TYPE_INFO_CELL_N, metadata));
4159 }
4160 
HWTEST_F_L0(JSMetadataTest,TestProgramMetadata)4161 HWTEST_F_L0(JSMetadataTest, TestProgramMetadata)
4162 {
4163     JSMetadataTestHelper tester {};
4164     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"program.json";
4165     JSMetadataTestHelper::Metadata metadata {};
4166 
4167     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
4168     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
4169     ASSERT_TRUE(tester.Test(JSType::PROGRAM, metadata));
4170 }
4171 
HWTEST_F_L0(JSMetadataTest,TestPromiseCapabilityMetadata)4172 HWTEST_F_L0(JSMetadataTest, TestPromiseCapabilityMetadata)
4173 {
4174     JSMetadataTestHelper tester {};
4175     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"promise_capability.json";
4176     JSMetadataTestHelper::Metadata metadata {};
4177 
4178     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
4179     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
4180     ASSERT_TRUE(tester.Test(JSType::PROMISE_CAPABILITY, metadata));
4181 }
4182 
HWTEST_F_L0(JSMetadataTest,TestPromiseIteratorRecordMetadata)4183 HWTEST_F_L0(JSMetadataTest, TestPromiseIteratorRecordMetadata)
4184 {
4185     JSMetadataTestHelper tester {};
4186     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"promise_iterator_record.json";
4187     JSMetadataTestHelper::Metadata metadata {};
4188 
4189     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
4190     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
4191     ASSERT_TRUE(tester.Test(JSType::PROMISE_ITERATOR_RECORD, metadata));
4192 }
4193 
HWTEST_F_L0(JSMetadataTest,TestPromiseReactionsMetadata)4194 HWTEST_F_L0(JSMetadataTest, TestPromiseReactionsMetadata)
4195 {
4196     JSMetadataTestHelper tester {};
4197     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"promise_reactions.json";
4198     JSMetadataTestHelper::Metadata metadata {};
4199 
4200     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
4201     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
4202     ASSERT_TRUE(tester.Test(JSType::PROMISE_REACTIONS, metadata));
4203 }
4204 
HWTEST_F_L0(JSMetadataTest,TestPromiseRecordMetadata)4205 HWTEST_F_L0(JSMetadataTest, TestPromiseRecordMetadata)
4206 {
4207     JSMetadataTestHelper tester {};
4208     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"promise_record.json";
4209     JSMetadataTestHelper::Metadata metadata {};
4210 
4211     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
4212     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
4213     ASSERT_TRUE(tester.Test(JSType::PROMISE_RECORD, metadata));
4214 }
4215 
HWTEST_F_L0(JSMetadataTest,TestPropertyBoxMetadata)4216 HWTEST_F_L0(JSMetadataTest, TestPropertyBoxMetadata)
4217 {
4218     JSMetadataTestHelper tester {};
4219     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"property_box.json";
4220     JSMetadataTestHelper::Metadata metadata {};
4221 
4222     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
4223     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
4224     ASSERT_TRUE(tester.Test(JSType::PROPERTY_BOX, metadata));
4225 }
4226 
HWTEST_F_L0(JSMetadataTest,TestPrototypeHandlerMetadata)4227 HWTEST_F_L0(JSMetadataTest, TestPrototypeHandlerMetadata)
4228 {
4229     JSMetadataTestHelper tester {};
4230     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"prototype_handler.json";
4231     JSMetadataTestHelper::Metadata metadata {};
4232 
4233     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
4234     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
4235     ASSERT_TRUE(tester.Test(JSType::PROTOTYPE_HANDLER, metadata));
4236 }
4237 
HWTEST_F_L0(JSMetadataTest,TestPrototypeInfoMetadata)4238 HWTEST_F_L0(JSMetadataTest, TestPrototypeInfoMetadata)
4239 {
4240     JSMetadataTestHelper tester {};
4241     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"prototype_info.json";
4242     JSMetadataTestHelper::Metadata metadata {};
4243 
4244     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
4245     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
4246     ASSERT_TRUE(tester.Test(JSType::PROTOTYPE_INFO, metadata));
4247 }
4248 
HWTEST_F_L0(JSMetadataTest,TestProtoChangeMarkerMetadata)4249 HWTEST_F_L0(JSMetadataTest, TestProtoChangeMarkerMetadata)
4250 {
4251     JSMetadataTestHelper tester {};
4252     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"proto_change_marker.json";
4253     JSMetadataTestHelper::Metadata metadata {};
4254 
4255     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
4256     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
4257     ASSERT_TRUE(tester.Test(JSType::PROTO_CHANGE_MARKER, metadata));
4258 }
4259 
HWTEST_F_L0(JSMetadataTest,TestRbTreenodeMetadata)4260 HWTEST_F_L0(JSMetadataTest, TestRbTreenodeMetadata)
4261 {
4262     JSMetadataTestHelper tester {};
4263     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"rb_treenode.json";
4264     JSMetadataTestHelper::Metadata metadata {};
4265 
4266     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
4267     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
4268     ASSERT_TRUE(tester.Test(JSType::RB_TREENODE, metadata));
4269 }
4270 
HWTEST_F_L0(JSMetadataTest,TestResolvedbindingRecordMetadata)4271 HWTEST_F_L0(JSMetadataTest, TestResolvedbindingRecordMetadata)
4272 {
4273     JSMetadataTestHelper tester {};
4274     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"resolvedbinding_record.json";
4275     JSMetadataTestHelper::Metadata metadata {};
4276 
4277     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
4278     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
4279     ASSERT_TRUE(tester.Test(JSType::RESOLVEDBINDING_RECORD, metadata));
4280 }
4281 
HWTEST_F_L0(JSMetadataTest,TestResolvedindexbindingRecordMetadata)4282 HWTEST_F_L0(JSMetadataTest, TestResolvedindexbindingRecordMetadata)
4283 {
4284     JSMetadataTestHelper tester {};
4285     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"resolvedindexbinding_record.json";
4286     JSMetadataTestHelper::Metadata metadata {};
4287 
4288     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
4289     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
4290     ASSERT_TRUE(tester.Test(JSType::RESOLVEDINDEXBINDING_RECORD, metadata));
4291 }
4292 
HWTEST_F_L0(JSMetadataTest,TestResolvedrecordbindingRecordMetadata)4293 HWTEST_F_L0(JSMetadataTest, TestResolvedrecordbindingRecordMetadata)
4294 {
4295     JSMetadataTestHelper tester {};
4296     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"resolvedrecordbinding_record.json";
4297     JSMetadataTestHelper::Metadata metadata {};
4298 
4299     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
4300     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
4301     ASSERT_TRUE(tester.Test(JSType::RESOLVEDRECORDBINDING_RECORD, metadata));
4302 }
4303 
HWTEST_F_L0(JSMetadataTest,TestResolvedrecordindexbindingRecordMetadata)4304 HWTEST_F_L0(JSMetadataTest, TestResolvedrecordindexbindingRecordMetadata)
4305 {
4306     JSMetadataTestHelper tester {};
4307     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"resolvedrecordindexbinding_record.json";
4308     JSMetadataTestHelper::Metadata metadata {};
4309 
4310     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
4311     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
4312     ASSERT_TRUE(tester.Test(JSType::RESOLVEDRECORDINDEXBINDING_RECORD, metadata));
4313 }
4314 
HWTEST_F_L0(JSMetadataTest,TestResolvingFunctionsRecordMetadata)4315 HWTEST_F_L0(JSMetadataTest, TestResolvingFunctionsRecordMetadata)
4316 {
4317     JSMetadataTestHelper tester {};
4318     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"resolving_functions_record.json";
4319     JSMetadataTestHelper::Metadata metadata {};
4320 
4321     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
4322     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
4323     ASSERT_TRUE(tester.Test(JSType::RESOLVING_FUNCTIONS_RECORD, metadata));
4324 }
4325 
HWTEST_F_L0(JSMetadataTest,TestSendableEnvMetadata)4326 HWTEST_F_L0(JSMetadataTest, TestSendableEnvMetadata)
4327 {
4328     JSMetadataTestHelper tester {};
4329     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"sendable_env.json";
4330     JSMetadataTestHelper::Metadata metadata {};
4331 
4332     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
4333     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
4334     ASSERT_TRUE(tester.Test(JSType::SENDABLE_ENV, metadata));
4335 }
4336 
HWTEST_F_L0(JSMetadataTest,TestSlicedStringMetadata)4337 HWTEST_F_L0(JSMetadataTest, TestSlicedStringMetadata)
4338 {
4339     JSMetadataTestHelper tester {};
4340     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"sliced_string.json";
4341     JSMetadataTestHelper::Metadata metadata {};
4342 
4343     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
4344     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
4345     ASSERT_TRUE(tester.Test(JSType::SLICED_STRING, metadata));
4346 }
4347 
HWTEST_F_L0(JSMetadataTest,TestSourceTextModuleRecordMetadata)4348 HWTEST_F_L0(JSMetadataTest, TestSourceTextModuleRecordMetadata)
4349 {
4350 #if defined(PANDA_TARGET_AMD64) || defined(PANDA_TARGET_ARM64)
4351     JSMetadataTestHelper tester {};
4352     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"source_text_module_record.json";
4353     JSMetadataTestHelper::Metadata metadata {};
4354 
4355     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
4356     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
4357     ASSERT_TRUE(tester.Test(JSType::SOURCE_TEXT_MODULE_RECORD, metadata));
4358 #endif
4359 }
4360 
HWTEST_F_L0(JSMetadataTest,TestStarExportentryRecordMetadata)4361 HWTEST_F_L0(JSMetadataTest, TestStarExportentryRecordMetadata)
4362 {
4363     JSMetadataTestHelper tester {};
4364     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"star_exportentry_record.json";
4365     JSMetadataTestHelper::Metadata metadata {};
4366 
4367     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
4368     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
4369     ASSERT_TRUE(tester.Test(JSType::STAR_EXPORTENTRY_RECORD, metadata));
4370 }
4371 
HWTEST_F_L0(JSMetadataTest,TestStoreAOTHandlerMetadata)4372 HWTEST_F_L0(JSMetadataTest, TestStoreAOTHandlerMetadata)
4373 {
4374     JSMetadataTestHelper tester {};
4375     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"store_ts_handler.json";
4376     JSMetadataTestHelper::Metadata metadata {};
4377 
4378     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
4379     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
4380     ASSERT_TRUE(tester.Test(JSType::STORE_TS_HANDLER, metadata));
4381 }
4382 
HWTEST_F_L0(JSMetadataTest,TestSymbolMetadata)4383 HWTEST_F_L0(JSMetadataTest, TestSymbolMetadata)
4384 {
4385     JSMetadataTestHelper tester {};
4386     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"symbol.json";
4387     JSMetadataTestHelper::Metadata metadata {};
4388 
4389     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
4390     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
4391     ASSERT_TRUE(tester.Test(JSType::SYMBOL, metadata));
4392 }
4393 
HWTEST_F_L0(JSMetadataTest,TestTaggedArrayMetadata)4394 HWTEST_F_L0(JSMetadataTest, TestTaggedArrayMetadata)
4395 {
4396     JSMetadataTestHelper tester {};
4397     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"tagged_array.json";
4398     JSMetadataTestHelper::Metadata metadata {};
4399 
4400     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
4401     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
4402     ASSERT_TRUE(tester.Test(JSType::TAGGED_ARRAY, metadata));
4403 }
4404 
HWTEST_F_L0(JSMetadataTest,TestTaggedDictionaryMetadata)4405 HWTEST_F_L0(JSMetadataTest, TestTaggedDictionaryMetadata)
4406 {
4407     JSMetadataTestHelper tester {};
4408     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"tagged_dictionary.json";
4409     JSMetadataTestHelper::Metadata metadata {};
4410 
4411     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
4412     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
4413     ASSERT_TRUE(tester.Test(JSType::TAGGED_DICTIONARY, metadata));
4414 }
4415 
HWTEST_F_L0(JSMetadataTest,TestTemplateMapMetadata)4416 HWTEST_F_L0(JSMetadataTest, TestTemplateMapMetadata)
4417 {
4418     JSMetadataTestHelper tester {};
4419     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"template_map.json";
4420     JSMetadataTestHelper::Metadata metadata {};
4421 
4422     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
4423     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
4424     ASSERT_TRUE(tester.Test(JSType::TEMPLATE_MAP, metadata));
4425 }
4426 
HWTEST_F_L0(JSMetadataTest,TestTrackInfoMetadata)4427 HWTEST_F_L0(JSMetadataTest, TestTrackInfoMetadata)
4428 {
4429     JSMetadataTestHelper tester {};
4430     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"track_info.json";
4431     JSMetadataTestHelper::Metadata metadata {};
4432 
4433     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
4434     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
4435     ASSERT_TRUE(tester.Test(JSType::TRACK_INFO, metadata));
4436 }
4437 
HWTEST_F_L0(JSMetadataTest,TestTransitionHandlerMetadata)4438 HWTEST_F_L0(JSMetadataTest, TestTransitionHandlerMetadata)
4439 {
4440     JSMetadataTestHelper tester {};
4441     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"transition_handler.json";
4442     JSMetadataTestHelper::Metadata metadata {};
4443 
4444     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
4445     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
4446     ASSERT_TRUE(tester.Test(JSType::TRANSITION_HANDLER, metadata));
4447 }
4448 
HWTEST_F_L0(JSMetadataTest,TestTransWithProtoHandlerMetadata)4449 HWTEST_F_L0(JSMetadataTest, TestTransWithProtoHandlerMetadata)
4450 {
4451     JSMetadataTestHelper tester {};
4452     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"trans_with_proto_handler.json";
4453     JSMetadataTestHelper::Metadata metadata {};
4454 
4455     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
4456     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
4457     ASSERT_TRUE(tester.Test(JSType::TRANS_WITH_PROTO_HANDLER, metadata));
4458 }
4459 
HWTEST_F_L0(JSMetadataTest,TestTreeStringMetadata)4460 HWTEST_F_L0(JSMetadataTest, TestTreeStringMetadata)
4461 {
4462     JSMetadataTestHelper tester {};
4463     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"tree_string.json";
4464     JSMetadataTestHelper::Metadata metadata {};
4465 
4466     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
4467     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
4468     ASSERT_TRUE(tester.Test(JSType::TREE_STRING, metadata));
4469 }
4470 
HWTEST_F_L0(JSMetadataTest,TestVtableMetadata)4471 HWTEST_F_L0(JSMetadataTest, TestVtableMetadata)
4472 {
4473     JSMetadataTestHelper tester {};
4474     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"vtable.json";
4475     JSMetadataTestHelper::Metadata metadata {};
4476 
4477     tester.ReadAndParseMetadataJson(metadataFilePath, metadata);
4478     ASSERT_TRUE(metadata.status == JSMetadataTestHelper::INITIALIZED);
4479     ASSERT_TRUE(tester.Test(JSType::VTABLE, metadata));
4480 }
4481 
HWTEST_F_L0(JSMetadataTest,TestDictionaryLayoutMetadata)4482 HWTEST_F_L0(JSMetadataTest, TestDictionaryLayoutMetadata)
4483 {
4484     JSMetadataTestHelper tester {};
4485     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"dictionary_layout.json";
4486     ASSERT_TRUE(tester.TestForDictionaryLayout(metadataFilePath));
4487 }
4488 
HWTEST_F_L0(JSMetadataTest,TestTypeRangeMetadata)4489 HWTEST_F_L0(JSMetadataTest, TestTypeRangeMetadata)
4490 {
4491     JSMetadataTestHelper tester {};
4492     std::string metadataFilePath = METADATA_SOURCE_FILE_DIR"type_range.json";
4493     ASSERT_TRUE(tester.TestForTypeRange(metadataFilePath));
4494 }
4495 }