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