5#ifndef V8_OBJECTS_MAP_H_
6#define V8_OBJECTS_MAP_H_
22#include "torque-generated/bit-fields.h"
23#include "torque-generated/visitor-lists.h"
34#define DATA_ONLY_VISITOR_ID_LIST(V) \
44#define POINTER_VISITOR_ID_LIST(V) \
52 V(ContextSidePropertyCell) \
55 V(EmbedderDataArray) \
56 V(EphemeronHashTable) \
61 V(FunctionTemplateInfo) \
66 V(JSDataViewOrRabGsabDataView) \
69 V(JSFinalizationRegistry) \
74 V(JSSynchronizationPrimitive) \
85 V(RegExpBoilerplateDescription) \
86 V(RegExpDataWrapper) \
87 V(SharedFunctionInfo) \
88 V(ShortcutCandidate) \
90 V(SloppyArgumentsElements) \
91 V(SmallOrderedHashMap) \
92 V(SmallOrderedHashSet) \
93 V(SmallOrderedNameDictionary) \
96 V(SwissNameDictionary) \
101 IF_WASM(V, WasmArray) \
102 IF_WASM(V, WasmFuncRef) \
103 IF_WASM(V, WasmGlobalObject) \
104 IF_WASM(V, WasmInstanceObject) \
105 IF_WASM(V, WasmMemoryMapDescriptor) \
106 IF_WASM(V, WasmMemoryObject) \
107 IF_WASM(V, WasmResumeData) \
108 IF_WASM(V, WasmStruct) \
109 IF_WASM(V, WasmSuspenderObject) \
110 IF_WASM(V, WasmSuspendingObject) \
111 IF_WASM(V, WasmTableObject) \
112 IF_WASM(V, WasmTagObject) \
113 IF_WASM(V, WasmTypeInfo) \
115 SIMPLE_HEAP_OBJECT_LIST1(V)
117#define TORQUE_VISITOR_ID_LIST(V) \
118 TORQUE_DATA_ONLY_VISITOR_ID_LIST(V) \
119 TORQUE_POINTER_VISITOR_ID_LIST(V)
121#define TRUSTED_VISITOR_ID_LIST(V) CONCRETE_TRUSTED_OBJECT_TYPE_LIST1(V)
128#define VISITOR_ID_ENUM_DECL(id) kVisit##id,
138#undef VISITOR_ID_ENUM_DECL
150#include "torque-generated/src/objects/map-tq.inc"
234class Map :
public TorqueGeneratedMap<Map, HeapObject> {
290 int unused_in_property_array);
306 DEFINE_TORQUE_GENERATED_MAP_BIT_FIELDS1()
316 DEFINE_TORQUE_GENERATED_MAP_BIT_FIELDS2()
336 DEFINE_TORQUE_GENERATED_MAP_BIT_FIELDS3()
341 static_assert(Bits3::NumberOfOwnDescriptorsBits::kSize ==
344 static_assert(Bits3::NumberOfOwnDescriptorsBits::kMax >=
351 Bits3::ConstructionCounterBits::kMax);
535 : mutable_count_(mutable_count), const_count_(const_count) {}
537 int GetTotal()
const {
return mutable_count() + const_count(); }
553 int target_inobject,
int target_unused,
554 int* old_number_of_fields,
580 bool use_cache,
const char* reason);
584 const char* reason) {
585 const bool kUseCache =
true;
586 return Normalize(isolate, map, new_elements_kind, new_prototype, mode,
611 bool enable_prototype_setup_mode =
true);
670 int number_of_own_descriptors,
673#if V8_ENABLE_WEBASSEMBLY
680 int number_of_own_descriptors);
769 int in_object_properties,
int unused_property_fields);
818 bool old_map_is_dictionary_elements_kind = false);
853 int inobject_properties);
894#define MAKE_CASE(TYPE, Name, name) \
896 return RootIndex::k##Name##Map;
898 TORQUE_DEFINED_INSTANCE_TYPE_LIST(
MAKE_CASE)
914 void DictionaryMapVerify(
Isolate* isolate);
937 class BodyDescriptor;
1012 bool force_connect =
false);
1020 int instance_size,
int inobject_properties);
1034 bool force_connect =
false);
1070 template <typename ConcreteVisitor>
1108#define DECL_TESTER(Type, ...) inline bool Is##Type##Map(Tagged<Map> map);
static const int kMapInstanceTypeOffset
int mutable_count() const
FieldCounts(int mutable_count, int const_count)
static V8_INLINE bool ConcurrentIsHeapObjectWithMap(PtrComprCageBase cage_base, Tagged< Object > object, Tagged< Map > meta_map)
static Handle< Map > CopyForElementsTransition(Isolate *isolate, DirectHandle< Map > map)
static V8_EXPORT_PRIVATE Handle< Map > Create(Isolate *isolate, int inobject_properties)
static bool IsPrototypeChainInvalidated(Tagged< Map > map)
int NumberOfEnumerableProperties() const
InternalIndex::Range IterateOwnDescriptors() const
static std::optional< Tagged< JSFunction > > GetConstructorFunction(Tagged< Map > map, Tagged< Context > native_context)
void SetEnumLength(int length)
int NumberOfFields(ConcurrencyMode cmode) const
static DirectHandle< PrototypeInfo > GetOrCreatePrototypeInfo(DirectHandle< Map > prototype_map, Isolate *isolate)
bool IsPrototypeValidityCellValid() const
bool has_sealed_elements() const
Tagged< Map > ElementsTransitionMap(Isolate *isolate, ConcurrencyMode cmode)
static V8_EXPORT_PRIVATE Handle< Map > TransitionToUpdatePrototype(Isolate *isolate, DirectHandle< Map > map, DirectHandle< JSPrototype > prototype)
static V8_EXPORT_PRIVATE void EnsureDescriptorSlack(Isolate *isolate, DirectHandle< Map > map, int slack)
bool EquivalentToForTransition(const Tagged< Map > other, ConcurrencyMode cmode, DirectHandle< HeapObject > new_prototype={}) const
void CopyUnusedPropertyFieldsAdjustedForInstanceSize(Tagged< Map > map)
bool HasOutOfObjectProperties() const
uint8_t WasmByte1() const
static constexpr Tagged< Smi > kPrototypeChainValidSmi
void SetWasmByte2(uint8_t value)
static Handle< Map > CopyForPrototypeTransition(Isolate *isolate, DirectHandle< Map > map, DirectHandle< JSPrototype > prototype)
void AccountAddedOutOfObjectPropertyField(int unused_in_property_array)
V8_EXPORT_PRIVATE static V8_WARN_UNUSED_RESULT MaybeHandle< Map > CopyWithConstant(Isolate *isolate, DirectHandle< Map > map, DirectHandle< Name > name, DirectHandle< Object > constant, PropertyAttributes attributes, TransitionFlag flag)
static V8_EXPORT_PRIVATE Handle< Map > CopyInsertDescriptor(Isolate *isolate, DirectHandle< Map > map, Descriptor *descriptor, TransitionFlag flag)
static DirectHandle< Map > GetObjectCreateMap(Isolate *isolate, DirectHandle< JSPrototype > prototype)
void SetBackPointer(Tagged< HeapObject > value, WriteBarrierMode mode=UPDATE_WRITE_BARRIER)
void MapPrint(std::ostream &os)
bool has_prototype_info() const
DECL_ACCESSORS(raw_transitions, Tagged< UnionOf< Smi, MaybeWeak< Map >, TransitionArray > >) DECL_RELEASE_ACQUIRE_ACCESSORS(raw_transitions
static const int kSlackTrackingCounterStart
static const int kNoSlackTracking
void SetConstructorFunctionIndex(int value)
static Handle< Map > CopyDropDescriptors(Isolate *isolate, DirectHandle< Map > map)
static void SetShouldBeFastPrototypeMap(DirectHandle< Map > map, bool value, Isolate *isolate)
static Handle< UnionOf< Smi, Cell > > GetOrCreatePrototypeChainValidityCell(DirectHandle< Map > map, Isolate *isolate)
static constexpr ObjectFields ObjectFieldsFrom(VisitorId visitor_id)
int UsedInstanceSize() const
static Handle< Map > Copy(Isolate *isolate, DirectHandle< Map > map, const char *reason, TransitionKindFlag kind=SPECIAL_TRANSITION)
bool IsDetached(Isolate *isolate) const
Tagged< Name > GetLastDescriptorName(Isolate *isolate) const
bool IsInobjectSlackTrackingInProgress() const
bool EquivalentToForNormalization(const Tagged< Map > other, ElementsKind elements_kind, Tagged< HeapObject > prototype, PropertyNormalizationMode mode) const
static V8_EXPORT_PRIVATE DirectHandle< Map > TransitionToDataProperty(Isolate *isolate, DirectHandle< Map > map, DirectHandle< Name > name, DirectHandle< Object > value, PropertyAttributes attributes, PropertyConstness constness, StoreOrigin store_origin)
int GetInObjectPropertiesStartInWords() const
bool should_be_fast_prototype_map() const
static void InstallDescriptors(Isolate *isolate, DirectHandle< Map > parent_map, DirectHandle< Map > child_map, InternalIndex new_descriptor, DirectHandle< DescriptorArray > descriptors, bool force_connect=false)
static DirectHandle< Map > AsLanguageMode(Isolate *isolate, DirectHandle< Map > initial_map, DirectHandle< SharedFunctionInfo > shared_info)
static V8_EXPORT_PRIVATE MaybeHandle< Map > TryUpdate(Isolate *isolate, Handle< Map > map) V8_WARN_UNUSED_RESULT
static MaybeObjectDirectHandle WrapFieldType(DirectHandle< FieldType > type)
bool CanHaveFastTransitionableElementsKind() const
bool has_fast_double_elements() const
static V8_EXPORT_PRIVATE DirectHandle< Map > PrepareForDataProperty(Isolate *isolate, DirectHandle< Map > old_map, InternalIndex descriptor_number, PropertyConstness constness, DirectHandle< Object > value)
int GetInObjectPropertyOffset(int index) const
void SetOutOfObjectUnusedPropertyFields(int unused_property_fields)
PropertyDetails GetLastDescriptorDetails(Isolate *isolate) const
void StartInobjectSlackTracking()
int InstanceSizeFromSlack(int slack) const
static Tagged< Map > GetMapFor(ReadOnlyRoots roots, InstanceType type)
bool has_fast_object_elements() const
bool has_dictionary_elements() const
bool has_any_typed_array_or_wasm_array_elements() const
Tagged< Map > LookupElementsTransitionMap(Isolate *isolate, ElementsKind elements_kind, ConcurrencyMode cmode)
V8_EXPORT_PRIVATE Tagged< Map > FindRootMap(PtrComprCageBase cage_base) const
static V8_EXPORT_PRIVATE Handle< Map > TransitionRootMapToPrototypeForNewObject(Isolate *isolate, DirectHandle< Map > map, DirectHandle< JSPrototype > prototype)
static const int kSlackTrackingCounterEnd
static void ConnectTransition(Isolate *isolate, DirectHandle< Map > parent, DirectHandle< Map > child, DirectHandle< Name > name, TransitionKindFlag transition_kind, bool force_connect=false)
void SetNumberOfOwnDescriptors(int number)
void SetWasmByte1(uint8_t value)
bool CanTransition() const
bool IsMapInArrayPrototypeChain(Isolate *isolate) const
bool has_typed_array_or_rab_gsab_typed_array_elements() const
FieldCounts GetFieldCounts() const
void PrintMapDetails(std::ostream &os)
static bool IsMostGeneralFieldType(Representation representation, Tagged< FieldType > field_type)
Tagged< Map > GetPrototypeChainRootMap(Isolate *isolate) const
static constexpr int kPrototypeChainInvalid
int GetInObjectProperties() const
bool OnlyHasSimpleProperties() const
bool has_fast_smi_elements() const
static constexpr std::optional< RootIndex > TryGetMapRootIdxFor(InstanceType type)
void ReplaceDescriptors(Isolate *isolate, Tagged< DescriptorArray > new_descriptors)
static Handle< Map > CopyAsElementsKind(Isolate *isolate, DirectHandle< Map > map, ElementsKind kind, TransitionFlag flag)
bool has_any_nonextensible_elements() const
static Handle< Map > CopyAddDescriptor(Isolate *isolate, DirectHandle< Map > map, Descriptor *descriptor, TransitionFlag flag)
void DeprecateTransitionTree(Isolate *isolate)
static V8_EXPORT_PRIVATE Handle< Map > Normalize(Isolate *isolate, DirectHandle< Map > map, ElementsKind new_elements_kind, DirectHandle< JSPrototype > new_prototype, PropertyNormalizationMode mode, const char *reason)
InternalIndex LastAdded() const
static V8_EXPORT_PRIVATE void SetPrototype(Isolate *isolate, DirectHandle< Map > map, DirectHandle< JSPrototype > prototype, bool enable_prototype_setup_mode=true)
void InobjectSlackTrackingStep(Isolate *isolate)
Tagged< FixedArrayBase > GetInitialElements() const
int ComputeMinObjectSlack(Isolate *isolate)
bool ShouldCheckForReadOnlyElementsInPrototypeChain(Isolate *isolate)
void AppendDescriptor(Isolate *isolate, Descriptor *desc)
bool has_sloppy_arguments_elements() const
static const int kGenerousAllocationCount
bool has_fast_packed_elements() const
V8_EXPORT_PRIVATE void SetInstanceDescriptors(Isolate *isolate, Tagged< DescriptorArray > descriptors, int number_of_own_descriptors, WriteBarrierMode barrier_mode=UPDATE_WRITE_BARRIER)
void CopyUnusedPropertyFields(Tagged< Map > map)
bool has_frozen_elements() const
bool has_fast_smi_or_object_elements() const
bool EquivalentToForElementsKindTransition(const Tagged< Map > other, ConcurrencyMode cmode) const
V8_EXPORT_PRIVATE Tagged< Map > FindElementsKindTransitionedMap(Isolate *isolate, MapHandlesSpan candidates, ConcurrencyMode cmode)
bool TooManyFastProperties(StoreOrigin store_origin) const
bool has_nonextensible_elements() const
static V8_EXPORT_PRIVATE Handle< Map > Normalize(Isolate *isolate, DirectHandle< Map > map, ElementsKind new_elements_kind, DirectHandle< JSPrototype > new_prototype, PropertyNormalizationMode mode, bool use_cache, const char *reason)
Tagged< Cell > RetrieveDescriptorsPointer()
int Hash(Isolate *isolate, Tagged< HeapObject > prototype)
static DirectHandle< Map > AddMissingTransitionsForTesting(Isolate *isolate, DirectHandle< Map > split_map, DirectHandle< DescriptorArray > descriptors)
bool has_fast_sloppy_arguments_elements() const
void AccountAddedPropertyField()
static V8_EXPORT_PRIVATE DirectHandle< Map > Update(Isolate *isolate, DirectHandle< Map > map)
static std::optional< Tagged< Map > > TryAsElementsKind(Isolate *isolate, DirectHandle< Map > map, ElementsKind kind, ConcurrencyMode cmode)
int UnusedInObjectProperties() const
static V8_EXPORT_PRIVATE Tagged< FieldType > UnwrapFieldType(Tagged< MaybeObject > wrapped_type)
void SetInObjectUnusedPropertyFields(int unused_property_fields)
static V8_EXPORT_PRIVATE Handle< Map > CopyForPreventExtensions(Isolate *isolate, DirectHandle< Map > map, PropertyAttributes attrs_to_add, DirectHandle< Symbol > transition_marker, const char *reason, bool old_map_is_dictionary_elements_kind=false)
bool has_shared_array_elements() const
bool BelongsToSameNativeContextAs(Tagged< Map > other_map) const
static Handle< Map > GetDerivedMap(Isolate *isolate, DirectHandle< Map > from, DirectHandle< JSReceiver > prototype)
bool TryGetBackPointer(PtrComprCageBase cage_base, Tagged< Map > *back_pointer) const
void UpdateDescriptors(Isolate *isolate, Tagged< DescriptorArray > descriptors, int number_of_own_descriptors)
static Handle< Map > CopyReplaceDescriptors(Isolate *isolate, DirectHandle< Map > map, DirectHandle< DescriptorArray > descriptors, TransitionFlag flag, MaybeDirectHandle< Name > maybe_name, const char *reason, TransitionKindFlag transition_kind)
static void GeneralizeIfCanHaveTransitionableFastElementsKind(Isolate *isolate, InstanceType instance_type, Representation *representation, DirectHandle< FieldType > *field_type)
static V8_EXPORT_PRIVATE VisitorId GetVisitorId(Tagged< Map > map)
void InitializeDescriptors(Isolate *isolate, Tagged< DescriptorArray > descriptors)
V8_INLINE void clear_padding()
static V8_EXPORT_PRIVATE Handle< Map > AsElementsKind(Isolate *isolate, DirectHandle< Map > map, ElementsKind kind)
static V8_EXPORT_PRIVATE Handle< Map > AddMissingTransitions(Isolate *isolate, DirectHandle< Map > map, DirectHandle< DescriptorArray > descriptors)
void SetConstructor(Tagged< Object > constructor, WriteBarrierMode mode=UPDATE_WRITE_BARRIER)
int NumberOfOwnDescriptors() const
static Handle< Map > CopyReplaceDescriptor(Isolate *isolate, DirectHandle< Map > map, DirectHandle< DescriptorArray > descriptors, Descriptor *descriptor, InternalIndex index, TransitionFlag flag)
static int SlackForArraySize(int old_size, int size_limit)
static Handle< Map > ShareDescriptor(Isolate *isolate, DirectHandle< Map > map, DirectHandle< DescriptorArray > descriptors, Descriptor *descriptor)
static Handle< Map > RawCopy(Isolate *isolate, DirectHandle< Map > map, int instance_size, int inobject_properties)
int GetConstructorFunctionIndex() const
static constexpr int kPrototypeChainValid
V8_EXPORT_PRIVATE Tagged< Map > FindFieldOwner(PtrComprCageBase cage_base, InternalIndex descriptor) const
void SetInObjectPropertiesStartInWords(int value)
static Handle< Map > CopyNormalized(Isolate *isolate, DirectHandle< Map > map, PropertyNormalizationMode mode)
static DirectHandle< Map > TransitionElementsTo(Isolate *isolate, DirectHandle< Map > map, ElementsKind to_kind)
bool has_fast_elements() const
uint8_t WasmByte2() const
static DirectHandle< Map > CopyInitialMapNormalized(Isolate *isolate, DirectHandle< Map > map, PropertyNormalizationMode mode=CLEAR_INOBJECT_PROPERTIES)
V8_EXPORT_PRIVATE static V8_WARN_UNUSED_RESULT MaybeHandle< Map > CopyWithField(Isolate *isolate, DirectHandle< Map > map, DirectHandle< Name > name, DirectHandle< FieldType > type, PropertyAttributes attributes, PropertyConstness constness, Representation representation, TransitionFlag flag)
Tagged< Map > TryReplayPropertyTransitions(Isolate *isolate, Tagged< Map > map, ConcurrencyMode cmode)
void init_prototype_and_constructor_or_back_pointer(ReadOnlyRoots roots)
bool InstancesNeedRewriting(Tagged< Map > target, ConcurrencyMode cmode) const
bool CanBeDeprecated() const
int UnusedPropertyFields() const
bool is_abandoned_prototype_map() const
bool has_fast_string_wrapper_elements() const
static DirectHandle< Map > TransitionToImmutableProto(Isolate *isolate, DirectHandle< Map > map)
int NextFreePropertyIndex() const
static V8_EXPORT_PRIVATE DirectHandle< Map > TransitionToAccessorProperty(Isolate *isolate, DirectHandle< Map > map, DirectHandle< Name > name, InternalIndex descriptor, DirectHandle< Object > getter, DirectHandle< Object > setter, PropertyAttributes attributes)
Tagged< Object > TryGetConstructor(PtrComprCageBase cage_base, int max_steps)
static const int kNoConstructorFunctionIndex
bool TryGetPrototypeInfo(Tagged< PrototypeInfo > *result) const
static Handle< Map > CopyInitialMap(Isolate *isolate, DirectHandle< Map > map)
void NotifyLeafMapLayoutChange(Isolate *isolate)
friend bool IsNormalizedMapCache(Tagged< HeapObject > obj, PtrComprCageBase cage_base)
void set(int index, Tagged< Object > value)
Tagged< Object > get(int index)
ZoneVector< OpIndex > candidates
#define INSTANCE_TYPE_CHECKERS(V)
ZoneVector< RpoNumber > & result
#define VISITOR_ID_ENUM_DECL(id)
#define MAKE_CASE(TYPE, Name, name)
#define DATA_ONLY_VISITOR_ID_LIST(V)
#define TRUSTED_VISITOR_ID_LIST(V)
#define POINTER_VISITOR_ID_LIST(V)
#define DECL_TESTER(Type,...)
V8_INLINE const Operation & Get(const Graph &graph, OpIndex index)
bool IsPrimitiveMap(Tagged< Map > map)
Map::Bits1::HasPrototypeSlotBit Map::Bits1::HasNamedInterceptorBit Map::Bits1::IsUndetectableBit Map::Bits1::IsConstructorBit Map::Bits2::IsImmutablePrototypeBit Map::Bits3::IsDeprecatedBit is_prototype_map
Map::Bits1::HasPrototypeSlotBit Map::Bits1::HasNamedInterceptorBit Map::Bits1::IsUndetectableBit Map::Bits1::IsConstructorBit bit_field2
bool IsCustomElementsReceiverMap(Tagged< Map > map)
bool IsSpecialReceiverMap(Tagged< Map > map)
Map::Bits1::HasPrototypeSlotBit Map::Bits1::HasNamedInterceptorBit Map::Bits1::IsUndetectableBit Map::Bits1::IsConstructorBit is_immutable_proto
Map::Bits1::HasPrototypeSlotBit Map::Bits1::HasNamedInterceptorBit Map::Bits1::IsUndetectableBit Map::Bits1::IsConstructorBit Map::Bits2::IsImmutablePrototypeBit Map::Bits3::IsDeprecatedBit Map::Bits3::IsPrototypeMapBit Map::Bits3::IsExtensibleBit construction_counter
Map::Bits1::HasPrototypeSlotBit Map::Bits1::HasNamedInterceptorBit is_undetectable
Map::Bits1::HasPrototypeSlotBit has_named_interceptor
!IsContextMap !IsContextMap IsContextMap this IsMapMap this raw_native_context_or_null
bool IsBooleanMap(Tagged< Map > map)
kInstanceDescriptorsOffset raw_transitions
Map::Bits1::HasPrototypeSlotBit Map::Bits1::HasNamedInterceptorBit Map::Bits1::IsUndetectableBit Map::Bits1::IsConstructorBit Map::Bits2::IsImmutablePrototypeBit is_deprecated
bool IsNullOrUndefinedMap(Tagged< Map > map)
typename detail::FlattenUnionHelper< Union<>, Ts... >::type UnionOf
static const int kMaxNumberOfDescriptors
Map::Bits1::HasPrototypeSlotBit Map::Bits1::HasNamedInterceptorBit Map::Bits1::IsUndetectableBit Map::Bits1::IsConstructorBit Map::Bits2::IsImmutablePrototypeBit Map::Bits3::IsDeprecatedBit Map::Bits3::IsPrototypeMapBit bit_field3
static const int kDescriptorIndexBitCount
Map::Bits1::HasPrototypeSlotBit Map::Bits1::HasNamedInterceptorBit Map::Bits1::IsUndetectableBit Map::Bits1::IsConstructorBit Map::Bits2::IsImmutablePrototypeBit Map::Bits3::IsDeprecatedBit Map::Bits3::IsPrototypeMapBit is_extensible
constructor_or_back_pointer
Map::Bits1::HasPrototypeSlotBit Map::Bits1::HasNamedInterceptorBit Map::Bits1::IsUndetectableBit Map::Bits1::IsConstructorBit Map::Bits2::IsImmutablePrototypeBit Map::Bits3::IsDeprecatedBit Map::Bits3::IsPrototypeMapBit relaxed_bit_field3
@ kDataOnlyVisitorIdCount
!IsContextMap !IsContextMap native_context
Map::Bits1::HasPrototypeSlotBit Map::Bits1::HasNamedInterceptorBit Map::Bits1::IsUndetectableBit Map::Bits1::IsConstructorBit Map::Bits2::IsImmutablePrototypeBit release_acquire_bit_field3
PropertyNormalizationMode
@ CLEAR_INOBJECT_PROPERTIES
#define DECL_ACCESSORS(name,...)
#define DECL_GETTER(name,...)
#define DECL_ACQUIRE_GETTER(name,...)
#define DECL_VERIFIER(Name)
#define DECL_BOOLEAN_ACCESSORS(name)
#define DECL_RELEASE_SETTER(name,...)
#define DECL_RELAXED_ACCESSORS(name,...)
#define NEVER_READ_ONLY_SPACE
#define DECL_PRIMITIVE_ACCESSORS(name, type)
#define DECL_RELEASE_ACQUIRE_ACCESSORS(name,...)
#define DECL_INT_ACCESSORS(name)
#define TQ_OBJECT_CONSTRUCTORS(Type)
#define V8_EXPORT_PRIVATE
#define V8_WARN_UNUSED_RESULT