// Copyright 2019 the V8 project authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef V8_OBJECTS_OBJECT_LIST_MACROS_H_ #define V8_OBJECTS_OBJECT_LIST_MACROS_H_ #include "torque-generated/instance-types.h" namespace v8 { namespace internal { class AbstractCode; class AccessorPair; class AccessCheckInfo; class AllocationSite; class ByteArray; class CachedTemplateObject; class Cell; class ClosureFeedbackCellArray; class ConsString; class DependentCode; class ElementsAccessor; class EnumCache; class FixedArrayBase; class FixedDoubleArray; class FreeSpace; class FunctionLiteral; class FunctionTemplateInfo; class JSAsyncGeneratorObject; class JSGlobalProxy; class SourceTextModule; class JSPromise; class JSProxy; class JSProxyRevocableResult; class KeyAccumulator; class LayoutDescriptor; class LookupIterator; class FieldType; class Module; class SourceTextModuleInfoEntry; class HeapNumber; class ObjectHashTable; class ObjectTemplateInfo; class ObjectVisitor; class OSROptimizedCodeCache; class PreparseData; class PropertyArray; class PropertyCell; class PropertyDescriptor; class PrototypeInfo; class ReadOnlyRoots; class RegExpMatchInfo; class RootVisitor; class SafepointEntry; class ScriptContextTable; class SharedFunctionInfo; class StringStream; class Symbol; class SyntheticModule; class FeedbackCell; class FeedbackMetadata; class FeedbackVector; class UncompiledData; class TemplateInfo; class TransitionArray; class TemplateList; class WasmInstanceObject; class WasmMemoryObject; template <typename T> class ZoneForwardList; #define OBJECT_TYPE_LIST(V) \ V(LayoutDescriptor) \ V(Primitive) \ V(Number) \ V(Numeric) #define HEAP_OBJECT_ORDINARY_TYPE_LIST_BASE(V) \ V(AbstractCode) \ V(AccessCheckNeeded) \ V(AllocationSite) \ V(ArrayList) \ V(BigInt) \ V(BigIntBase) \ V(BigIntWrapper) \ V(ObjectBoilerplateDescription) \ V(Boolean) \ V(BooleanWrapper) \ V(ByteArray) \ V(BytecodeArray) \ V(CallHandlerInfo) \ V(Callable) \ V(Cell) \ V(ClassBoilerplate) \ V(Code) \ V(CodeDataContainer) \ V(CompilationCacheTable) \ V(ConsString) \ V(Constructor) \ V(Context) \ V(CoverageInfo) \ V(ClosureFeedbackCellArray) \ V(DataHandler) \ V(DeoptimizationData) \ V(DependentCode) \ V(EmbedderDataArray) \ V(EphemeronHashTable) \ V(ExternalOneByteString) \ V(ExternalString) \ V(ExternalTwoByteString) \ V(FeedbackCell) \ V(FeedbackMetadata) \ V(FeedbackVector) \ V(Filler) \ V(FixedArray) \ V(FixedArrayBase) \ V(FixedArrayExact) \ V(FixedDoubleArray) \ V(Foreign) \ V(FrameArray) \ V(FreeSpace) \ V(Function) \ V(GlobalDictionary) \ V(HandlerTable) \ V(HeapNumber) \ V(InternalizedString) \ V(JSArgumentsObject) \ V(JSArray) \ V(JSArrayBuffer) \ V(JSArrayBufferView) \ V(JSArrayIterator) \ V(JSAsyncFromSyncIterator) \ V(JSAsyncFunctionObject) \ V(JSAsyncGeneratorObject) \ V(JSBoundFunction) \ V(JSCollection) \ V(JSCollectionIterator) \ V(JSContextExtensionObject) \ V(JSCustomElementsObject) \ V(JSDataView) \ V(JSDate) \ V(JSError) \ V(JSFinalizationRegistry) \ V(JSFunction) \ V(JSFunctionOrBoundFunction) \ V(JSGeneratorObject) \ V(JSGlobalObject) \ V(JSGlobalProxy) \ V(JSMap) \ V(JSMapIterator) \ V(JSMessageObject) \ V(JSModuleNamespace) \ V(JSObject) \ V(JSPrimitiveWrapper) \ V(JSPromise) \ V(JSProxy) \ V(JSReceiver) \ V(JSRegExp) \ V(JSRegExpStringIterator) \ V(JSSet) \ V(JSSetIterator) \ V(JSSpecialObject) \ V(JSStringIterator) \ V(JSTypedArray) \ V(JSWeakCollection) \ V(JSWeakRef) \ V(JSWeakMap) \ V(JSWeakSet) \ V(LoadHandler) \ V(Map) \ V(MapCache) \ V(Module) \ V(Microtask) \ V(Name) \ V(NameDictionary) \ V(NativeContext) \ V(NormalizedMapCache) \ V(NumberDictionary) \ V(NumberWrapper) \ V(ObjectHashSet) \ V(ObjectHashTable) \ V(OrderedHashMap) \ V(OrderedHashSet) \ V(OrderedNameDictionary) \ V(OSROptimizedCodeCache) \ V(PreparseData) \ V(PrimitiveHeapObject) \ V(PromiseReactionJobTask) \ V(PropertyArray) \ V(PropertyCell) \ V(RegExpMatchInfo) \ V(ScopeInfo) \ V(ScriptContextTable) \ V(ScriptWrapper) \ V(SeqOneByteString) \ V(SeqString) \ V(SeqTwoByteString) \ V(SharedFunctionInfo) \ V(SimpleNumberDictionary) \ V(SlicedString) \ V(SmallOrderedHashMap) \ V(SmallOrderedHashSet) \ V(SmallOrderedNameDictionary) \ V(SourceTextModule) \ V(SourceTextModuleInfo) \ V(StoreHandler) \ V(String) \ V(StringSet) \ V(StringWrapper) \ V(Struct) \ V(Symbol) \ V(SymbolWrapper) \ V(SyntheticModule) \ V(TemplateInfo) \ V(TemplateList) \ V(ThinString) \ V(TransitionArray) \ V(UncompiledData) \ V(UncompiledDataWithPreparseData) \ V(UncompiledDataWithoutPreparseData) \ V(Undetectable) \ V(UniqueName) \ V(WasmArray) \ V(WasmExceptionObject) \ V(WasmExceptionPackage) \ V(WasmGlobalObject) \ V(WasmInstanceObject) \ V(WasmMemoryObject) \ V(WasmModuleObject) \ V(WasmStruct) \ V(WasmTypeInfo) \ V(WasmTableObject) \ V(WeakFixedArray) \ V(WeakArrayList) \ V(WeakCell) \ TORQUE_DEFINED_CLASS_LIST(V) #ifdef V8_INTL_SUPPORT #define HEAP_OBJECT_ORDINARY_TYPE_LIST(V) \ HEAP_OBJECT_ORDINARY_TYPE_LIST_BASE(V) \ V(JSV8BreakIterator) \ V(JSCollator) \ V(JSDateTimeFormat) \ V(JSDisplayNames) \ V(JSListFormat) \ V(JSLocale) \ V(JSNumberFormat) \ V(JSPluralRules) \ V(JSRelativeTimeFormat) \ V(JSSegmentIterator) \ V(JSSegmenter) \ V(JSSegments) #else #define HEAP_OBJECT_ORDINARY_TYPE_LIST(V) HEAP_OBJECT_ORDINARY_TYPE_LIST_BASE(V) #endif // V8_INTL_SUPPORT #define HEAP_OBJECT_TEMPLATE_TYPE_LIST(V) V(HashTable) // Logical sub-types of heap objects that don't correspond to a C++ class but // represent some specialization in terms of additional constraints. #define HEAP_OBJECT_SPECIALIZED_TYPE_LIST(V) \ V(AwaitContext) \ V(BlockContext) \ V(CallableApiObject) \ V(CallableJSProxy) \ V(CatchContext) \ V(DebugEvaluateContext) \ V(EvalContext) \ V(FreeSpaceOrFiller) \ V(FunctionContext) \ V(JSApiObject) \ V(JSMapKeyIterator) \ V(JSMapKeyValueIterator) \ V(JSMapValueIterator) \ V(JSSetKeyValueIterator) \ V(JSSetValueIterator) \ V(JSSpecialApiObject) \ V(ModuleContext) \ V(NonNullForeign) \ V(ScriptContext) \ V(WithContext) #define HEAP_OBJECT_TYPE_LIST(V) \ HEAP_OBJECT_ORDINARY_TYPE_LIST(V) \ HEAP_OBJECT_TEMPLATE_TYPE_LIST(V) \ HEAP_OBJECT_SPECIALIZED_TYPE_LIST(V) #define ODDBALL_LIST(V) \ V(Undefined, undefined_value) \ V(Null, null_value) \ V(TheHole, the_hole_value) \ V(Exception, exception) \ V(Uninitialized, uninitialized_value) \ V(True, true_value) \ V(False, false_value) \ V(ArgumentsMarker, arguments_marker) \ V(OptimizedOut, optimized_out) \ V(StaleRegister, stale_register) } // namespace internal } // namespace v8 #endif // V8_OBJECTS_OBJECT_LIST_MACROS_H_