5#ifndef V8_OBJECTS_OBJECT_LIST_MACROS_H_
6#define V8_OBJECTS_OBJECT_LIST_MACROS_H_
9#include "torque-generated/instance-types.h"
37#define SIMPLE_HEAP_OBJECT_LIST_GENERATOR(APPLY, V) \
38 APPLY(V, ArrayList, ARRAY_LIST) \
39 APPLY(V, ByteArray, BYTE_ARRAY) \
40 APPLY(V, ClosureFeedbackCellArray, CLOSURE_FEEDBACK_CELL_ARRAY) \
41 APPLY(V, FixedArray, FIXED_ARRAY) \
42 APPLY(V, FixedDoubleArray, FIXED_DOUBLE_ARRAY) \
43 APPLY(V, ObjectBoilerplateDescription, OBJECT_BOILERPLATE_DESCRIPTION) \
44 APPLY(V, RegExpMatchInfo, REG_EXP_MATCH_INFO) \
45 APPLY(V, ScriptContextTable, SCRIPT_CONTEXT_TABLE) \
46 APPLY(V, WeakFixedArray, WEAK_FIXED_ARRAY)
51#define SIMPLE_HEAP_OBJECT_LIST1_ADAPTER(V, Name, NAME) V(Name)
52#define SIMPLE_HEAP_OBJECT_LIST1(V) \
53 SIMPLE_HEAP_OBJECT_LIST_GENERATOR(SIMPLE_HEAP_OBJECT_LIST1_ADAPTER, V)
58#define SIMPLE_HEAP_OBJECT_LIST2_ADAPTER(V, Name, NAME) V(Name, NAME)
59#define SIMPLE_HEAP_OBJECT_LIST2(V) \
60 SIMPLE_HEAP_OBJECT_LIST_GENERATOR(SIMPLE_HEAP_OBJECT_LIST2_ADAPTER, V)
63#define DYNAMICALLY_SIZED_HEAP_OBJECT_LIST(V) \
68 V(ClosureFeedbackCellArray) \
77 V(InstructionStream) \
78 V(ObjectBoilerplateDescription) \
81 V(ProtectedFixedArray) \
82 V(ProtectedWeakFixedArray) \
85 V(ScriptContextTable) \
87 V(SloppyArgumentsElements) \
88 V(SwissNameDictionary) \
91 V(TrustedFixedArray) \
92 V(TrustedWeakFixedArray) \
93 V(UncompiledDataWithoutPreparseData) \
96 IF_WASM(V, WasmArray) \
97 IF_WASM(V, WasmDispatchTable) \
98 IF_WASM(V, WasmStruct)
101#define HEAP_OBJECT_ORDINARY_TYPE_LIST_BASE(V) \
109 V(CompilationCacheTable) \
111 V(ContextSidePropertyCell) \
115 V(DeoptimizationData) \
118 V(DictionaryTemplateInfo) \
119 V(EmbedderDataArray) \
120 V(EphemeronHashTable) \
121 V(ExternalOneByteString) \
123 V(ExternalTwoByteString) \
125 V(FeedbackMetadata) \
127 V(FunctionTemplateInfo) \
133 V(GlobalDictionary) \
136 V(InternalizedString) \
137 V(JSArgumentsObject) \
140 V(JSArrayBufferView) \
142 V(JSAsyncFromSyncIterator) \
143 V(JSAsyncFunctionObject) \
144 V(JSAsyncGeneratorObject) \
145 V(JSAtomicsCondition) \
149 V(JSCollectionIterator) \
150 V(JSCustomElementsObject) \
152 V(JSDataViewOrRabGsabDataView) \
154 V(JSDisposableStackBase) \
155 V(JSSyncDisposableStack) \
156 V(JSAsyncDisposableStack) \
157 V(JSExternalObject) \
158 V(JSFinalizationRegistry) \
160 V(JSFunctionOrBoundFunctionOrWrappedFunction) \
161 V(JSGeneratorObject) \
164 V(JSIteratorHelper) \
165 V(JSIteratorFilterHelper) \
166 V(JSIteratorMapHelper) \
167 V(JSIteratorTakeHelper) \
168 V(JSIteratorDropHelper) \
169 V(JSIteratorFlatMapHelper) \
173 V(JSModuleNamespace) \
175 V(JSAPIObjectWithEmbedderSlots) \
176 V(JSObjectWithEmbedderSlots) \
177 V(JSPrimitiveWrapper) \
180 V(JSRabGsabDataView) \
184 V(JSRegExpStringIterator) \
191 V(JSStringIterator) \
192 V(JSSynchronizationPrimitive) \
193 V(JSTemporalCalendar) \
194 V(JSTemporalDuration) \
195 V(JSTemporalInstant) \
196 V(JSTemporalPlainDate) \
197 V(JSTemporalPlainTime) \
198 V(JSTemporalPlainDateTime) \
199 V(JSTemporalPlainMonthDay) \
200 V(JSTemporalPlainYearMonth) \
201 V(JSTemporalTimeZone) \
202 V(JSTemporalZonedDateTime) \
204 V(JSValidIteratorWrapper) \
205 V(JSWeakCollection) \
209 V(JSWrappedFunction) \
217 V(NameToIndexHashTable) \
219 V(NormalizedMapCache) \
220 V(NumberDictionary) \
223 V(ObjectTemplateInfo) \
224 V(ObjectTwoHashTable) \
229 V(OrderedNameDictionary) \
231 V(PrimitiveHeapObject) \
232 V(PromiseReactionJobTask) \
236 V(SeqOneByteString) \
238 V(SeqTwoByteString) \
239 V(SharedFunctionInfo) \
240 V(SimpleNumberDictionary) \
242 V(SmallOrderedHashMap) \
243 V(SmallOrderedHashSet) \
244 V(SmallOrderedNameDictionary) \
245 V(SourceTextModule) \
246 V(SourceTextModuleInfo) \
250 V(RegisteredSymbolTable) \
252 V(SwissNameDictionary) \
256 V(TemplateInfoWithProperties) \
257 V(TemplateLiteralObject) \
260 V(TurboshaftFloat64RangeType) \
261 V(TurboshaftFloat64SetType) \
262 V(TurboshaftFloat64Type) \
264 V(TurboshaftWord32RangeType) \
265 V(TurboshaftWord32SetType) \
266 V(TurboshaftWord32Type) \
267 V(TurboshaftWord64RangeType) \
268 V(TurboshaftWord64SetType) \
269 V(TurboshaftWord64Type) \
270 IF_WASM(V, WasmArray) \
271 IF_WASM(V, WasmExceptionPackage) \
272 IF_WASM(V, WasmFuncRef) \
273 IF_WASM(V, WasmGlobalObject) \
274 IF_WASM(V, WasmInstanceObject) \
275 IF_WASM(V, WasmMemoryObject) \
276 IF_WASM(V, WasmMemoryMapDescriptor) \
277 IF_WASM(V, WasmModuleObject) \
278 IF_WASM(V, WasmNull) \
279 IF_WASM(V, WasmObject) \
280 IF_WASM(V, WasmResumeData) \
281 IF_WASM(V, WasmStruct) \
282 IF_WASM(V, WasmSuspenderObject) \
283 IF_WASM(V, WasmSuspendingObject) \
284 IF_WASM(V, WasmTableObject) \
285 IF_WASM(V, WasmTagObject) \
286 IF_WASM(V, WasmTypeInfo) \
287 IF_WASM(V, WasmValueObject) \
290 TORQUE_DEFINED_CLASS_LIST(V) \
291 SIMPLE_HEAP_OBJECT_LIST1(V)
295#define VIRTUAL_OBJECT_TYPE_LIST(V) \
296 V(AccessCheckNeeded) \
297 V(AlwaysSharedSpaceJSObject) \
304 V(JSContextExtensionObject) \
308 V(OSROptimizedCodeCache) \
315#ifdef V8_INTL_SUPPORT
316#define HEAP_OBJECT_ORDINARY_TYPE_LIST(V) \
317 HEAP_OBJECT_ORDINARY_TYPE_LIST_BASE(V) \
318 V(JSV8BreakIterator) \
320 V(JSDateTimeFormat) \
322 V(JSDurationFormat) \
327 V(JSRelativeTimeFormat) \
328 V(JSSegmentDataObject) \
329 V(JSSegmentDataObjectWithIsWordLike) \
330 V(JSSegmentIterator) \
334#define HEAP_OBJECT_ORDINARY_TYPE_LIST(V) HEAP_OBJECT_ORDINARY_TYPE_LIST_BASE(V)
344#define ABSTRACT_TRUSTED_OBJECT_LIST_GENERATOR(APPLY, V) \
345 APPLY(V, TrustedObject, TRUSTED_OBJECT) \
346 APPLY(V, ExposedTrustedObject, EXPOSED_TRUSTED_OBJECT) \
347 APPLY(V, UncompiledData, UNCOMPILED_DATA) \
348 IF_WASM(APPLY, V, WasmFunctionData, WASM_FUNCTION_DATA)
354#define CONCRETE_TRUSTED_OBJECT_LIST_GENERATOR(APPLY, V) \
355 APPLY(V, BytecodeArray, BYTECODE_ARRAY) \
356 APPLY(V, Code, CODE) \
357 APPLY(V, InstructionStream, INSTRUCTION_STREAM) \
358 APPLY(V, InterpreterData, INTERPRETER_DATA) \
359 APPLY(V, UncompiledDataWithPreparseData, UNCOMPILED_DATA_WITH_PREPARSE_DATA) \
360 APPLY(V, UncompiledDataWithoutPreparseData, \
361 UNCOMPILED_DATA_WITHOUT_PREPARSE_DATA) \
362 APPLY(V, UncompiledDataWithPreparseDataAndJob, \
363 UNCOMPILED_DATA_WITH_PREPARSE_DATA_AND_JOB) \
364 APPLY(V, UncompiledDataWithoutPreparseDataWithJob, \
365 UNCOMPILED_DATA_WITHOUT_PREPARSE_DATA_WITH_JOB) \
366 APPLY(V, SharedFunctionInfoWrapper, SHARED_FUNCTION_INFO_WRAPPER) \
367 APPLY(V, ProtectedFixedArray, PROTECTED_FIXED_ARRAY) \
368 APPLY(V, ProtectedWeakFixedArray, PROTECTED_WEAK_FIXED_ARRAY) \
369 APPLY(V, TrustedByteArray, TRUSTED_BYTE_ARRAY) \
370 APPLY(V, TrustedFixedArray, TRUSTED_FIXED_ARRAY) \
371 APPLY(V, TrustedForeign, TRUSTED_FOREIGN) \
372 APPLY(V, TrustedWeakFixedArray, TRUSTED_WEAK_FIXED_ARRAY) \
373 APPLY(V, AtomRegExpData, ATOM_REG_EXP_DATA) \
374 APPLY(V, IrRegExpData, IR_REG_EXP_DATA) \
375 APPLY(V, RegExpData, REG_EXP_DATA) \
376 IF_WASM(APPLY, V, WasmImportData, WASM_IMPORT_DATA) \
377 IF_WASM(APPLY, V, WasmCapiFunctionData, WASM_CAPI_FUNCTION_DATA) \
378 IF_WASM(APPLY, V, WasmDispatchTable, WASM_DISPATCH_TABLE) \
379 IF_WASM(APPLY, V, WasmExportedFunctionData, WASM_EXPORTED_FUNCTION_DATA) \
380 IF_WASM(APPLY, V, WasmJSFunctionData, WASM_JS_FUNCTION_DATA) \
381 IF_WASM(APPLY, V, WasmInternalFunction, WASM_INTERNAL_FUNCTION) \
382 IF_WASM(APPLY, V, WasmTrustedInstanceData, WASM_TRUSTED_INSTANCE_DATA)
384#define TRUSTED_OBJECT_LIST1_ADAPTER(V, Name, NAME) V(Name)
385#define TRUSTED_OBJECT_LIST2_ADAPTER(V, Name, NAME) V(Name, NAME)
389#define CONCRETE_TRUSTED_OBJECT_TYPE_LIST1(V) \
390 CONCRETE_TRUSTED_OBJECT_LIST_GENERATOR(TRUSTED_OBJECT_LIST1_ADAPTER, V)
393#define CONCRETE_TRUSTED_OBJECT_TYPE_LIST2(V) \
394 CONCRETE_TRUSTED_OBJECT_LIST_GENERATOR(TRUSTED_OBJECT_LIST2_ADAPTER, V)
398#define HEAP_OBJECT_TRUSTED_TYPE_LIST(V) \
399 ABSTRACT_TRUSTED_OBJECT_LIST_GENERATOR(TRUSTED_OBJECT_LIST1_ADAPTER, V) \
400 CONCRETE_TRUSTED_OBJECT_LIST_GENERATOR(TRUSTED_OBJECT_LIST1_ADAPTER, V)
402#define HEAP_OBJECT_TEMPLATE_TYPE_LIST(V) V(HashTable)
406#define HEAP_OBJECT_SPECIALIZED_TYPE_LIST(V) \
409 V(CallableApiObject) \
410 V(CallableJSFunction) \
413 V(DebugEvaluateContext) \
415 V(FreeSpaceOrFiller) \
418 V(JSClassConstructor) \
419 V(JSLastDummyApiObject) \
420 V(JSPromiseConstructor) \
421 V(JSArrayConstructor) \
422 V(JSRegExpConstructor) \
423 V(JSMapKeyIterator) \
424 V(JSMapKeyValueIterator) \
425 V(JSMapValueIterator) \
426 V(JSSetKeyValueIterator) \
427 V(JSSetValueIterator) \
428 V(JSSpecialApiObject) \
429 V(MaybeReadOnlyJSObject) \
434 V(JSInternalPrototypeBase) \
435 V(JSObjectPrototype) \
436 V(JSRegExpPrototype) \
437 V(JSPromisePrototype) \
439 V(JSIteratorPrototype) \
440 V(JSArrayIteratorPrototype) \
441 V(JSMapIteratorPrototype) \
442 V(JSTypedArrayPrototype) \
443 V(JSSetIteratorPrototype) \
444 V(JSStringIteratorPrototype) \
445 V(TypedArrayConstructor) \
446 V(Uint8TypedArrayConstructor) \
447 V(Int8TypedArrayConstructor) \
448 V(Uint16TypedArrayConstructor) \
449 V(Int16TypedArrayConstructor) \
450 V(Uint32TypedArrayConstructor) \
451 V(Int32TypedArrayConstructor) \
452 V(Float16TypedArrayConstructor) \
453 V(Float32TypedArrayConstructor) \
454 V(Float64TypedArrayConstructor) \
455 V(Uint8ClampedTypedArrayConstructor) \
456 V(Biguint64TypedArrayConstructor) \
457 V(Bigint64TypedArrayConstructor)
459#define HEAP_OBJECT_TYPE_LIST(V) \
460 HEAP_OBJECT_ORDINARY_TYPE_LIST(V) \
461 VIRTUAL_OBJECT_TYPE_LIST(V) \
462 HEAP_OBJECT_TRUSTED_TYPE_LIST(V) \
463 HEAP_OBJECT_TEMPLATE_TYPE_LIST(V) \
464 HEAP_OBJECT_SPECIALIZED_TYPE_LIST(V)
466#define ODDBALL_LIST(V) \
467 V(Undefined, undefined_value, UndefinedValue) \
468 V(Null, null_value, NullValue) \
469 V(True, true_value, TrueValue) \
470 V(False, false_value, FalseValue)
472#define HOLE_LIST(V) \
473 V(TheHole, the_hole_value, TheHoleValue) \
474 V(PropertyCellHole, property_cell_hole_value, PropertyCellHoleValue) \
475 V(HashTableHole, hash_table_hole_value, HashTableHoleValue) \
476 V(PromiseHole, promise_hole_value, PromiseHoleValue) \
477 V(Exception, exception, Exception) \
478 V(TerminationException, termination_exception, TerminationException) \
479 V(Uninitialized, uninitialized_value, UninitializedValue) \
480 V(ArgumentsMarker, arguments_marker, ArgumentsMarker) \
481 V(OptimizedOut, optimized_out, OptimizedOut) \
482 V(StaleRegister, stale_register, StaleRegister) \
483 V(SelfReferenceMarker, self_reference_marker, SelfReferenceMarker) \
484 V(BasicBlockCountersMarker, basic_block_counters_marker, \
485 BasicBlockCountersMarker)
487#define OBJECT_TYPE_LIST(V) \
493#define DEF_FWD_DECLARATION(Type) class Type;
498#undef DEF_FWD_DECLARATION
#define DEF_FWD_DECLARATION(Type)
#define HEAP_OBJECT_TRUSTED_TYPE_LIST(V)
#define VIRTUAL_OBJECT_TYPE_LIST(V)
#define HEAP_OBJECT_SPECIALIZED_TYPE_LIST(V)
#define HEAP_OBJECT_ORDINARY_TYPE_LIST(V)