|  | // 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_ |