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