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