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