V8 Project
v8::internal::HeapObject Class Reference

#include <objects.h>

+ Inheritance diagram for v8::internal::HeapObject:
+ Collaboration diagram for v8::internal::HeapObject:

Public Member Functions

Mapmap () const
 
void set_map (Map *value)
 
void set_map_no_write_barrier (Map *value)
 
Mapsynchronized_map ()
 
MapWord synchronized_map_word () const
 
void synchronized_set_map (Map *value)
 
void synchronized_set_map_no_write_barrier (Map *value)
 
void synchronized_set_map_word (MapWord map_word)
 
MapWord map_word () const
 
void set_map_word (MapWord map_word)
 
HeapGetHeap () const
 
IsolateGetIsolate () const
 
Address address ()
 
void Iterate (ObjectVisitor *v)
 
void IterateBody (InstanceType type, int object_size, ObjectVisitor *v)
 
int Size ()
 
bool MayContainRawValues ()
 
int SizeFromMap (Map *map)
 
WriteBarrierMode GetWriteBarrierMode (const DisallowHeapAllocation &promise)
 
void HeapObjectShortPrint (OStream &os)
 
 STATIC_ASSERT (kMapOffset==Internals::kHeapObjectMapOffset)
 
- Public Member Functions inherited from v8::internal::Object
bool IsObject () const
 
 INLINE (bool IsFixedArrayBase() const)
 
 INLINE (bool IsExternal() const)
 
 INLINE (bool IsAccessorInfo() const)
 
 INLINE (bool IsStruct() const)
 
 INLINE (bool IsSpecObject()) const
 
 INLINE (bool IsSpecFunction()) const
 
 INLINE (bool IsTemplateInfo()) const
 
 INLINE (bool IsNameDictionary() const)
 
 INLINE (bool IsSeededNumberDictionary() const)
 
 INLINE (bool IsUnseededNumberDictionary() const)
 
 INLINE (bool IsOrderedHashSet() const)
 
 INLINE (bool IsOrderedHashMap() const)
 
bool IsCallable () const
 
 INLINE (bool IsUndefined() const)
 
 INLINE (bool IsNull() const)
 
 INLINE (bool IsTheHole() const)
 
 INLINE (bool IsException() const)
 
 INLINE (bool IsUninitialized() const)
 
 INLINE (bool IsTrue() const)
 
 INLINE (bool IsFalse() const)
 
 INLINE (bool IsArgumentsMarker() const)
 
 INLINE (bool IsFiller() const)
 
double Number ()
 
 INLINE (bool IsNaN() const)
 
 INLINE (bool IsMinusZero() const)
 
bool ToInt32 (int32_t *value)
 
bool ToUint32 (uint32_t *value)
 
Representation OptimalRepresentation ()
 
bool FitsRepresentation (Representation representation)
 
Handle< HeapTypeOptimalType (Isolate *isolate, Representation representation)
 
bool HasValidElements ()
 
bool HasSpecificClassOf (String *name)
 
bool BooleanValue ()
 
ObjectGetHash ()
 
bool SameValue (Object *other)
 
bool SameValueZero (Object *other)
 
bool ToArrayIndex (uint32_t *index)
 
bool IsStringObjectWithCharacterAt (uint32_t index)
 
void VerifyApiCallResultType ()
 
void ShortPrint (FILE *out=stdout)
 
void ShortPrint (StringStream *accumulator)
 

Static Public Member Functions

static HeapObjectFromAddress (Address address)
 
static Object ** RawField (HeapObject *obj, int offset)
 
static void UpdateMapCodeCache (Handle< HeapObject > object, Handle< Name > name, Handle< Code > code)
 
- Static Public Member Functions inherited from v8::internal::Object
static Handle< ObjectNewStorageFor (Isolate *isolate, Handle< Object > object, Representation representation)
 
static Handle< ObjectWrapForRead (Isolate *isolate, Handle< Object > object, Representation representation)
 
static MaybeHandle< JSReceiverToObject (Isolate *isolate, Handle< Object > object)
 
static MaybeHandle< JSReceiverToObject (Isolate *isolate, Handle< Object > object, Handle< Context > context)
 
static MUST_USE_RESULT MaybeHandle< SmiToSmi (Isolate *isolate, Handle< Object > object)
 
static MUST_USE_RESULT MaybeHandle< ObjectGetProperty (LookupIterator *it)
 
static MUST_USE_RESULT MaybeHandle< ObjectSetProperty (Handle< Object > object, Handle< Name > key, Handle< Object > value, StrictMode strict_mode, StoreFromKeyed store_mode=MAY_BE_STORE_FROM_KEYED)
 
static MUST_USE_RESULT MaybeHandle< ObjectSetProperty (LookupIterator *it, Handle< Object > value, StrictMode strict_mode, StoreFromKeyed store_mode, StorePropertyMode data_store_mode=NORMAL_PROPERTY)
 
static MUST_USE_RESULT MaybeHandle< ObjectWriteToReadOnlyProperty (LookupIterator *it, Handle< Object > value, StrictMode strict_mode)
 
static Handle< ObjectSetDataProperty (LookupIterator *it, Handle< Object > value)
 
static MUST_USE_RESULT MaybeHandle< ObjectAddDataProperty (LookupIterator *it, Handle< Object > value, PropertyAttributes attributes, StrictMode strict_mode, StoreFromKeyed store_mode)
 
static MUST_USE_RESULT MaybeHandle< ObjectGetPropertyOrElement (Handle< Object > object, Handle< Name > key)
 
static MUST_USE_RESULT MaybeHandle< ObjectGetProperty (Isolate *isolate, Handle< Object > object, const char *key)
 
static MUST_USE_RESULT MaybeHandle< ObjectGetProperty (Handle< Object > object, Handle< Name > key)
 
static MUST_USE_RESULT MaybeHandle< ObjectGetPropertyWithAccessor (Handle< Object > receiver, Handle< Name > name, Handle< JSObject > holder, Handle< Object > structure)
 
static MUST_USE_RESULT MaybeHandle< ObjectSetPropertyWithAccessor (Handle< Object > receiver, Handle< Name > name, Handle< Object > value, Handle< JSObject > holder, Handle< Object > structure, StrictMode strict_mode)
 
static MUST_USE_RESULT MaybeHandle< ObjectGetPropertyWithDefinedGetter (Handle< Object > receiver, Handle< JSReceiver > getter)
 
static MUST_USE_RESULT MaybeHandle< ObjectSetPropertyWithDefinedSetter (Handle< Object > receiver, Handle< JSReceiver > setter, Handle< Object > value)
 
static MUST_USE_RESULT MaybeHandle< ObjectGetElement (Isolate *isolate, Handle< Object > object, uint32_t index)
 
static MUST_USE_RESULT MaybeHandle< ObjectGetElementWithReceiver (Isolate *isolate, Handle< Object > object, Handle< Object > receiver, uint32_t index)
 
static Handle< SmiGetOrCreateHash (Isolate *isolate, Handle< Object > object)
 

Static Public Attributes

static const int kMapOffset = Object::kHeaderSize
 
static const int kHeaderSize = kMapOffset + kPointerSize
 
- Static Public Attributes inherited from v8::internal::Object
static const int kHeaderSize = 0
 

Protected Member Functions

void IteratePointers (ObjectVisitor *v, int start, int end)
 
void IteratePointer (ObjectVisitor *v, int offset)
 
void IterateNextCodeLink (ObjectVisitor *v, int offset)
 

Private Member Functions

 DISALLOW_IMPLICIT_CONSTRUCTORS (HeapObject)
 

Additional Inherited Members

- Public Types inherited from v8::internal::Object
enum  StoreFromKeyed { MAY_BE_STORE_FROM_KEYED , CERTAINLY_NOT_STORE_FROM_KEYED }
 
enum  StorePropertyMode { NORMAL_PROPERTY , SUPER_PROPERTY }
 

Detailed Description

Definition at line 1328 of file objects.h.

Member Function Documentation

◆ address()

Address v8::internal::HeapObject::address ( )
inline

Definition at line 1470 of file objects-inl.h.

1470  {
1471  return reinterpret_cast<Address>(this) - kHeapObjectTag;
1472 }
byte * Address
Definition: globals.h:101
const int kHeapObjectTag
Definition: v8.h:5737

References v8::internal::kHeapObjectTag.

Referenced by v8::internal::V8HeapExplorer::AddEntry(), v8::internal::FreeList::Allocate(), v8::internal::Deserializer::Allocate(), v8::internal::Heap::AllocateCode(), v8::internal::Heap::AllocateFillerObject(), v8::internal::Heap::AllocateOneByteInternalizedString(), v8::internal::LargeObjectSpace::AllocateRaw(), v8::internal::PagedSpace::AllocateRaw(), v8::internal::Heap::AllocateTwoByteInternalizedString(), v8::internal::AllocationTracker::AllocationEvent(), v8::internal::Heap::AllowedToBeMigrated(), v8::internal::AppendCodeCreateHeader(), v8::internal::IncrementalMarking::BlackToGreyAndUnshift(), v8::internal::Code::CanDeoptAt(), v8::internal::StoreBuffer::ClearDeadObject(), v8::internal::CloneCodeObject(), v8::internal::Logger::CodeCreateEvent(), v8::internal::CpuProfiler::CodeCreateEvent(), v8::internal::CpuProfiler::CodeDisableOptEvent(), v8::internal::Code::CodeIterateBody(), v8::internal::Code::contains(), v8::internal::PagedSpace::Contains(), v8::internal::Heap::Contains(), v8::internal::FreeListCategory::ContainsPageFreeListItemsInList(), v8::internal::Heap::CopyCode(), v8::internal::Heap::CopyConstantPoolArrayWithMap(), v8::internal::CopyDoubleToDoubleElements(), v8::internal::Heap::CopyFixedArrayWithMap(), v8::internal::Heap::CopyFixedDoubleArrayWithMap(), v8::internal::Heap::CopyJSObject(), v8::internal::CopyObjectToObjectElements(), v8::internal::MarkCompactCollector::DiscoverAndEvacuateBlackObjectsOnPage(), v8::internal::DiscoverGreyObjectsOnPage(), v8::internal::Heap::DoScavenge(), v8::internal::EnsureDoubleAligned(), v8::internal::ScavengingVisitor< marks_handling, logging_and_profiling_mode >::EvacuateJSFunction(), v8::internal::MarkCompactCollector::EvacuateNewSpaceAndCandidates(), v8::internal::ScavengingVisitor< marks_handling, logging_and_profiling_mode >::EvacuateObject(), v8::internal::Heap::FindAllocationMemento(), v8::internal::FreeList::FindNodeFor(), v8::internal::LargeObjectSpace::FreeUnmarkedObjects(), v8::internal::FreeListNode::FromAddress(), FromAddress(), v8::internal::ByteArray::FromDataStartAddress(), v8::internal::Code::GetCodeFromTargetAddress(), v8::internal::SerializationAddressMapper::Hash(), v8::internal::IncrementalMarking::Hurry(), v8::internal::IncrementalMarkingMarkingVisitor::INLINE(), v8::internal::ScavengingVisitor< marks_handling, logging_and_profiling_mode >::INLINE(), v8::internal::MarkingDeque::INLINE(), v8::internal::Heap::InSpace(), v8::internal::StoreBuffer::IteratePointersToNewSpace(), v8::internal::JSFunction::JSFunctionIterateBody(), v8::internal::SerializationAddressMapper::Key(), v8::internal::Heap::LeftTrimFixedArray(), v8::internal::CpuProfiler::LogBuiltins(), v8::internal::CodeAddressMap::LogRecordedBuffer(), v8::internal::PerfBasicLogger::LogRecordedBuffer(), v8::internal::LowLevelLogger::LogRecordedBuffer(), v8::internal::String::MakeExternal(), v8::internal::MarkBlackOrKeepBlack(), v8::internal::MarkBlackOrKeepGrey(), v8::internal::MarkCompactCollector::MarkLiveObjects(), v8::internal::MarkObjectGreyDoNotEnqueue(), v8::internal::IndexedReferencesExtractor::MarkVisitedField(), v8::internal::MarkCompactCollector::MigrateObject(), v8::internal::Heap::MoveElements(), v8::internal::FreeListNode::next(), v8::internal::BASE_EMBEDDED< Visitor >::next(), v8::internal::FreeListNode::next_address(), v8::internal::FixedArray::NoIncrementalWriteBarrierSet(), v8::internal::Heap::OnAllocationEvent(), v8::internal::Heap::OnMoveEvent(), v8::internal::Serializer::ObjectSerializer::OutputRawData(), v8::internal::FreeListCategory::PickNodeFromList(), v8::internal::anonymous_namespace{heap-snapshot-generator.cc}::HeapObjectInfo::Print(), v8::internal::CodeFlusher::ProcessJSFunctionCandidates(), v8::internal::MarkCompactCollector::ProcessWeakCollections(), v8::internal::IncrementalMarking::RecordWriteFromCode(), v8::internal::IncrementalMarking::RecordWrites(), v8::internal::CpuProfiler::RegExpCodeCreateEvent(), v8::internal::FreeListCategory::RepairFreeList(), v8::internal::MarkCompactCollector::ReportDeleteIfNeeded(), v8::internal::Heap::ReserveSpace(), v8::internal::Heap::RightTrimFixedArray(), v8::internal::Serializer::ObjectSerializer::Serialize(), v8::internal::FreeListNode::set_next(), v8::internal::SetMarkBitsUnderInvalidatedCode(), v8::internal::JavaScriptFrame::Summarize(), v8::internal::IncrementalMarking::UpdateMarkingDequeAfterScavenge(), v8::internal::UpdatePointer(), v8::internal::IncrementalMarkingMarkingVisitor::VisitFixedArrayIncremental(), and v8::internal::StaticMarkingVisitor< StaticVisitor >::VisitJSFunctionStrongCode().

+ Here is the caller graph for this function:

◆ DISALLOW_IMPLICIT_CONSTRUCTORS()

v8::internal::HeapObject::DISALLOW_IMPLICIT_CONSTRUCTORS ( HeapObject  )
private

◆ FromAddress()

HeapObject * v8::internal::HeapObject::FromAddress ( Address  address)
inlinestatic

Definition at line 1464 of file objects-inl.h.

1464  {
1466  return reinterpret_cast<HeapObject*>(address + kHeapObjectTag);
1467 }
#define DCHECK_TAG_ALIGNED(address)
Definition: checks.h:57

References address(), DCHECK_TAG_ALIGNED, and v8::internal::kHeapObjectTag.

Referenced by v8::internal::PagedSpace::AllocateLinearly(), v8::internal::AllocationTracker::AllocationEvent(), v8::internal::CloneCodeObject(), v8::internal::JitLogger::CodeDeleteEvent(), v8::internal::JitLogger::CodeMoveEvent(), v8::internal::Heap::CreateFillerObjectAt(), v8::internal::MarkCompactCollector::DiscoverAndEvacuateBlackObjectsOnPage(), v8::internal::DiscoverGreyObjectsOnPage(), v8::internal::Heap::DoScavenge(), v8::internal::EnsureDoubleAligned(), v8::internal::MarkCompactCollector::EvacuateLiveObjectsFromPage(), v8::internal::Heap::FindAllocationMemento(), v8::internal::FreeListNode::FromAddress(), v8::internal::HeapObjectIterator::FromCurrentPage(), v8::internal::InnerPointerToCodeCache::GcSafeFindCodeForInnerPointer(), v8::internal::Deserializer::GetAddressFromEnd(), v8::internal::Code::GetCodeFromTargetAddress(), v8::internal::LargePage::GetObject(), v8::internal::Code::GetObjectFromEntryAddress(), v8::internal::Heap::IterateAndMarkPointersToFromSpace(), v8::internal::Heap::LeftTrimFixedArray(), v8::internal::SemiSpaceIterator::Next(), v8::internal::Deserializer::ReadObject(), v8::internal::ProfileGenerator::RecordTickSample(), v8::internal::Sweep(), v8::internal::Marking::TransferMark(), v8::internal::UpdatePointer(), and v8::internal::UpdateSlot().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ GetHeap()

Heap * v8::internal::HeapObject::GetHeap ( ) const
inline

Definition at line 1379 of file objects-inl.h.

1379  {
1380  Heap* heap =
1381  MemoryChunk::FromAddress(reinterpret_cast<const byte*>(this))->heap();
1382  SLOW_DCHECK(heap != NULL);
1383  return heap;
1384 }
#define SLOW_DCHECK(condition)
Definition: checks.h:30
Heap * heap() const
Definition: spaces.h:603
static MemoryChunk * FromAddress(Address a)
Definition: spaces.h:276
enable harmony numeric enable harmony object literal extensions Optimize object Array DOM strings and string trace pretenuring decisions of HAllocate instructions Enables optimizations which favor memory size over execution speed maximum source size in bytes considered for a single inlining maximum cumulative number of AST nodes considered for inlining trace the tracking of allocation sites deoptimize every n garbage collections perform array bounds checks elimination analyze liveness of environment slots and zap dead values flushes the cache of optimized code for closures on every GC allow uint32 values on optimize frames if they are used only in safe operations track concurrent recompilation artificial compilation delay in ms do not emit check maps for constant values that have a leaf deoptimize the optimized code if the layout of the maps changes enable context specialization in TurboFan execution budget before interrupt is triggered max percentage of megamorphic generic ICs to allow optimization enable use of SAHF instruction if enable use of VFP3 instructions if available enable use of NEON instructions if enable use of SDIV and UDIV instructions if enable use of MLS instructions if enable loading bit constant by means of movw movt instruction enable unaligned accesses for enable use of d16 d31 registers on ARM this requires VFP3 force all emitted branches to be in long enable alignment of csp to bytes on platforms which prefer the register to always be NULL

References v8::internal::MemoryChunk::FromAddress(), v8::internal::MemoryChunk::heap(), NULL, and SLOW_DCHECK.

Referenced by v8::internal::RecordWriteStub::Activate(), v8::internal::Context::AddOptimizedFunction(), v8::internal::JSFunctionResultCache::Clear(), v8::internal::SharedFunctionInfo::ClearOptimizedCodeMap(), v8::internal::SharedFunctionInfo::ClearTypeFeedbackInfo(), v8::internal::String::ComputeAndSetHash(), v8::internal::FixedArray::ContainsOnlySmisOrHoles(), v8::internal::CopyDictionaryToObjectElements(), v8::internal::CopyDoubleToObjectElements(), v8::internal::Map::CopyDropDescriptors(), v8::internal::CopyObjectToDoubleElements(), v8::internal::CopyObjectToObjectElements(), v8::internal::CopySmiToDoubleElements(), v8::internal::Deoptimizer::DeoptimizeGlobalObject(), v8::internal::Deoptimizer::DeoptimizeMarkedCodeForContext(), v8::internal::Map::DeprecateTarget(), v8::internal::Map::elements_transition_map(), v8::internal::Map::EnsureDescriptorSlack(), v8::internal::SharedFunctionInfo::EvictFromOptimizedCodeMap(), v8::internal::JSObject::FastPropertyAtPut(), v8::internal::Code::FindFirstAllocationSite(), v8::internal::Code::FindFirstMap(), v8::internal::Map::FindInCodeCache(), v8::internal::ConstantPoolArray::get_code_ptr_entry(), v8::internal::ConstantPoolArray::get_heap_ptr_entry(), v8::internal::ConstantPoolArray::get_int32_entry(), v8::internal::ConstantPoolArray::get_int64_entry(), v8::internal::ConstantPoolArray::get_int64_entry_as_double(), v8::internal::FixedDoubleArray::get_representation(), v8::internal::FixedDoubleArray::get_scalar(), v8::internal::TraversableMap::GetAndResetParent(), v8::internal::DebugInfo::GetBreakPointInfo(), v8::internal::DebugInfo::GetBreakPointObjects(), v8::internal::AccessorPair::GetComponent(), v8::internal::JSObject::GetElementsKind(), v8::internal::JSObject::GetHiddenPropertiesHashTable(), v8::internal::JSObject::GetHiddenProperty(), v8::internal::Map::GetInitialElements(), GetIsolate(), v8::internal::Map::GetPrototypeTransitions(), GetWriteBarrierMode(), v8::internal::JSObject::HasDictionaryArgumentsElements(), v8::internal::TransitionArray::HasElementsTransition(), v8::internal::JSObject::HasFastArgumentsElements(), v8::internal::OrderedHashTableIterator< Derived, TableType >::HasMore(), HeapObjectShortPrint(), v8::internal::AllocationSite::Initialize(), v8::internal::Struct::InitializeBody(), v8::internal::JSObject::InitializeBody(), v8::internal::MarkCompactMarkingVisitor::INLINE(), v8::internal::JSObject::InObjectPropertyAtPut(), v8::internal::Code::InvalidateEmbeddedObjects(), v8::internal::Code::InvalidateRelocation(), v8::internal::FixedArray::is_the_hole(), v8::internal::Context::IsBlockContext(), v8::internal::Context::IsCatchContext(), v8::internal::DescriptorArray::IsEmpty(), v8::internal::Context::IsFunctionContext(), v8::internal::Context::IsGlobalContext(), v8::internal::Context::IsModuleContext(), v8::internal::Context::IsNativeContext(), v8::internal::AllocationSite::IsNestedSite(), v8::internal::Context::IsWithContext(), v8::internal::JSObject::JSObjectShortPrint(), v8::internal::MapCache::Lookup(), v8::internal::ObjectHashTable::Lookup(), v8::internal::OrderedHashMap::Lookup(), v8::internal::WeakHashTable::Lookup(), v8::internal::PolymorphicCodeCacheHashTable::Lookup(), v8::internal::CodeCache::Lookup(), v8::internal::CodeCacheHashTable::Lookup(), v8::internal::CodeCache::LookupDefaultCache(), v8::internal::CodeCache::LookupNormalTypeCache(), v8::internal::String::MakeExternal(), v8::internal::String::MarkAsUndetectable(), v8::internal::JSTypedArray::Neuter(), v8::internal::FreeListNode::next(), v8::internal::FreeListNode::next_address(), v8::internal::FixedArray::NoIncrementalWriteBarrierSet(), v8::internal::FixedArray::NoWriteBarrierSet(), v8::internal::MarkCompactMarkingVisitor::ObjectStatsCountFixedArray(), v8::internal::JSObject::ReferencesObject(), v8::internal::CompilationCacheTable::Remove(), v8::internal::CodeCacheHashTable::RemoveByIndex(), v8::internal::Context::RemoveOptimizedFunction(), v8::internal::JSFunction::RemovePrototype(), v8::internal::SharedFunctionInfo::ReplaceCode(), v8::internal::MarkCompactWeakObjectRetainer::RetainAs(), v8::internal::Heap::ScavengeObject(), v8::internal::PartialSerializer::SerializeObject(), v8::internal::FixedDoubleArray::set(), v8::internal::ConstantPoolArray::set(), v8::internal::FixedArray::set(), v8::internal::ConstantPoolArray::set_at_offset(), v8::internal::TransitionArray::set_back_pointer_storage(), v8::internal::JSFunction::set_code(), v8::internal::JSFunction::set_code_no_write_barrier(), v8::internal::Code::set_constant_pool(), v8::internal::JSFunction::set_context(), v8::internal::ConsString::set_first(), v8::internal::JSFunction::set_function_bindings(), v8::internal::JSBuiltinsObject::set_javascript_builtin(), v8::internal::JSBuiltinsObject::set_javascript_builtin_code(), set_map(), v8::internal::AllocationSite::set_memento_found_count(), v8::internal::FreeListNode::set_next(), v8::internal::FixedArray::set_null(), v8::internal::SlicedString::set_parent(), v8::internal::ConsString::set_second(), v8::internal::FixedArray::set_the_hole(), v8::internal::FixedDoubleArray::set_the_hole(), v8::internal::Code::set_type_feedback_info(), v8::internal::FixedArray::set_undefined(), v8::internal::Map::SetBackPointer(), v8::internal::JSObject::SetInternalField(), v8::internal::DependentCode::SetMarkedForDeoptimization(), v8::internal::TransitionArray::SetPrototypeTransitions(), v8::internal::JSObject::ShouldConvertToFastElements(), v8::internal::JSObject::ShouldConvertToSlowElements(), v8::internal::FixedArray::Shrink(), v8::internal::JSObject::SlowReverseLookup(), v8::internal::Dictionary< Derived, Shape, Key >::SlowReverseLookup(), v8::internal::Serializer::SpaceOfObject(), synchronized_set_map(), v8::internal::String::ToCString(), v8::internal::String::ToWideCString(), v8::internal::SharedFunctionInfo::TrimOptimizedCodeMap(), v8::internal::Deoptimizer::VisitAllOptimizedFunctionsForContext(), v8::internal::Map::ZapPrototypeTransitions(), and v8::internal::Map::ZapTransitions().

+ Here is the call graph for this function:

◆ GetIsolate()

Isolate * v8::internal::HeapObject::GetIsolate ( ) const
inline

Definition at line 1387 of file objects-inl.h.

1387  {
1388  return GetHeap()->isolate();
1389 }
Heap * GetHeap() const
Definition: objects-inl.h:1379
Isolate * isolate()
Definition: heap-inl.h:589

References GetHeap(), and v8::internal::Heap::isolate().

Referenced by v8::internal::AddToWeakNativeContextList(), v8::internal::ExecutableAccessorInfo::clear_setter(), v8::internal::Code::ClearInlineCaches(), v8::internal::Code::CodeIterateBody(), v8::internal::CopyDoubleToObjectElements(), v8::internal::Map::CopyForFreeze(), v8::internal::Map::CopyForObserved(), v8::internal::DescriptorArray::CopyFrom(), v8::internal::Map::CopyGeneralizeAllRepresentations(), v8::internal::TransitionArray::CopyInsert(), v8::internal::CopyObjectToObjectElements(), v8::HandleScope::CreateHandle(), v8::internal::DebugReferencedBy(), v8::internal::DeoptimizeDependentFunctions(), v8::internal::Deoptimizer::DeoptimizeGlobalObject(), v8::internal::Map::DeprecateTransitionTree(), v8::internal::SharedFunctionInfo::DisableOptimization(), v8::internal::JSDate::DoGetField(), v8::internal::Context::ErrorMessageForCodeGenerationFromStrings(), v8::internal::HashTable< Derived, Shape, Key >::FindEntry(), v8::internal::Map::GeneralizeAllFieldRepresentations(), v8::internal::Map::GeneralizeFieldType(), v8::internal::DescriptorArray::Get(), v8::internal::JSTypedArray::GetBuffer(), v8::internal::Code::GetCodeAgeAndParity(), v8::internal::JSObject::GetHiddenPropertiesHashTable(), v8::internal::JSObject::GetHiddenProperty(), v8::internal::JSObject::GetIdentityHash(), v8::internal::Code::GetRawAge(), v8::internal::SharedFunctionInfo::GetSourceCode(), v8::internal::JSDate::GetUTCField(), v8::internal::Context::global_object(), v8::internal::Map::has_code_cache(), v8::internal::PromotionQueue::insert(), v8::internal::IC::InvalidateMaps(), v8::internal::SharedFunctionInfo::is_compiled(), v8::internal::JSFunction::is_compiled(), v8::internal::JSGlobalProxy::IsDetachedFrom(), v8::internal::IsInlined(), v8::internal::JSFunction::IsInOptimizationQueue(), v8::internal::Map::IsMapInArrayPrototypeChain(), v8::internal::JSFunction::IsMarkedForConcurrentOptimization(), v8::internal::JSFunction::IsMarkedForOptimization(), v8::internal::JSReceiver::IsSimpleEnum(), v8::internal::String::LooksValid(), v8::internal::Context::Lookup(), v8::internal::CompilationCacheTable::Lookup(), v8::internal::PolymorphicCodeCache::Lookup(), v8::internal::CompilationCacheTable::LookupEval(), v8::internal::CompilationCacheTable::LookupRegExp(), v8::internal::Code::MakeOlder(), v8::internal::JSFunction::MarkForConcurrentOptimization(), v8::internal::JSFunction::MarkForOptimization(), v8::internal::JSFunction::MarkInOptimizationQueue(), v8::internal::ModuleGetExport(), v8::internal::ModuleSetExport(), v8::internal::Context::native_context(), v8::internal::Map::NotifyLeafMapLayoutChange(), v8::internal::OwnPrototypeChainLength(), v8::internal::Map::PrepareForDataProperty(), v8::internal::Code::PrintDeoptLocation(), v8::internal::Map::PrintGeneralization(), v8::internal::Map::RawCopy(), v8::internal::RelocIterator::RelocIterator(), v8::internal::Heap::ScavengeObject(), v8::internal::Heap::ScavengeObjectSlow(), v8::internal::Code::set_marked_for_deoptimization(), v8::internal::SetAtomLastCapture(), v8::internal::JSFunction::SetInstancePrototype(), v8::internal::JSDate::SetValue(), v8::internal::Map::ShareDescriptor(), v8::internal::String::SlowEquals(), v8::internal::JSFunction::StartInobjectSlackTracking(), v8::internal::Map::TransitionElementsTo(), v8::internal::AllocationTracker::UnresolvedLocation::UnresolvedLocation(), v8::internal::Map::Update(), v8::internal::Map::UpdateCodeCache(), and v8::internal::VerifyPointersVisitor::VisitPointers().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ GetWriteBarrierMode()

WriteBarrierMode v8::internal::HeapObject::GetWriteBarrierMode ( const DisallowHeapAllocation promise)
inline

Definition at line 2660 of file objects-inl.h.

2661  {
2662  Heap* heap = GetHeap();
2663  if (heap->incremental_marking()->IsMarking()) return UPDATE_WRITE_BARRIER;
2664  if (heap->InNewSpace(this)) return SKIP_WRITE_BARRIER;
2665  return UPDATE_WRITE_BARRIER;
2666 }
@ SKIP_WRITE_BARRIER
Definition: objects.h:235
@ UPDATE_WRITE_BARRIER
Definition: objects.h:235

References GetHeap(), v8::internal::Heap::incremental_marking(), v8::internal::Heap::InNewSpace(), v8::internal::SKIP_WRITE_BARRIER, and v8::internal::UPDATE_WRITE_BARRIER.

Referenced by v8::internal::Heap::CopyAndTenureFixedCOWArray(), v8::internal::CopyCachedOneByteCharsToArray(), v8::internal::Heap::CopyFixedArrayWithMap(), v8::internal::FixedArray::CopyTo(), v8::internal::Dictionary< Derived, Shape, Key >::CopyValuesTo(), v8::internal::JSObject::PrepareElementsForSort(), v8::internal::HashTable< Derived, Shape, Key >::Rehash(), and v8::internal::Dictionary< Derived, Shape, Key >::SetEntry().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ HeapObjectShortPrint()

void v8::internal::HeapObject::HeapObjectShortPrint ( OStream os)

Definition at line 1374 of file objects.cc.

1374  { // NOLINT
1375  Heap* heap = GetHeap();
1376  if (!heap->Contains(this)) {
1377  os << "!!!INVALID POINTER!!!";
1378  return;
1379  }
1380  if (!heap->Contains(map())) {
1381  os << "!!!INVALID MAP!!!";
1382  return;
1383  }
1384 
1385  os << this << " ";
1386 
1387  if (IsString()) {
1388  HeapStringAllocator allocator;
1389  StringStream accumulator(&allocator);
1390  String::cast(this)->StringShortPrint(&accumulator);
1391  os << accumulator.ToCString().get();
1392  return;
1393  }
1394  if (IsJSObject()) {
1395  HeapStringAllocator allocator;
1396  StringStream accumulator(&allocator);
1397  JSObject::cast(this)->JSObjectShortPrint(&accumulator);
1398  os << accumulator.ToCString().get();
1399  return;
1400  }
1401  switch (map()->instance_type()) {
1402  case MAP_TYPE:
1403  os << "<Map(elements=" << Map::cast(this)->elements_kind() << ")>";
1404  break;
1405  case FIXED_ARRAY_TYPE:
1406  os << "<FixedArray[" << FixedArray::cast(this)->length() << "]>";
1407  break;
1409  os << "<FixedDoubleArray[" << FixedDoubleArray::cast(this)->length()
1410  << "]>";
1411  break;
1412  case BYTE_ARRAY_TYPE:
1413  os << "<ByteArray[" << ByteArray::cast(this)->length() << "]>";
1414  break;
1415  case FREE_SPACE_TYPE:
1416  os << "<FreeSpace[" << FreeSpace::cast(this)->Size() << "]>";
1417  break;
1418 #define TYPED_ARRAY_SHORT_PRINT(Type, type, TYPE, ctype, size) \
1419  case EXTERNAL_##TYPE##_ARRAY_TYPE: \
1420  os << "<External" #Type "Array[" \
1421  << External##Type##Array::cast(this)->length() << "]>"; \
1422  break; \
1423  case FIXED_##TYPE##_ARRAY_TYPE: \
1424  os << "<Fixed" #Type "Array[" << Fixed##Type##Array::cast(this)->length() \
1425  << "]>"; \
1426  break;
1427 
1429 #undef TYPED_ARRAY_SHORT_PRINT
1430 
1432  SharedFunctionInfo* shared = SharedFunctionInfo::cast(this);
1433  SmartArrayPointer<char> debug_name =
1434  shared->DebugName()->ToCString();
1435  if (debug_name[0] != 0) {
1436  os << "<SharedFunctionInfo " << debug_name.get() << ">";
1437  } else {
1438  os << "<SharedFunctionInfo>";
1439  }
1440  break;
1441  }
1443  os << "<JSMessageObject>";
1444  break;
1445 #define MAKE_STRUCT_CASE(NAME, Name, name) \
1446  case NAME##_TYPE: \
1447  os << "<" #Name ">"; \
1448  break;
1450 #undef MAKE_STRUCT_CASE
1451  case CODE_TYPE: {
1452  Code* code = Code::cast(this);
1453  os << "<Code: " << Code::Kind2String(code->kind()) << ">";
1454  break;
1455  }
1456  case ODDBALL_TYPE: {
1457  if (IsUndefined()) {
1458  os << "<undefined>";
1459  } else if (IsTheHole()) {
1460  os << "<the hole>";
1461  } else if (IsNull()) {
1462  os << "<null>";
1463  } else if (IsTrue()) {
1464  os << "<true>";
1465  } else if (IsFalse()) {
1466  os << "<false>";
1467  } else {
1468  os << "<Odd Oddball>";
1469  }
1470  break;
1471  }
1472  case SYMBOL_TYPE: {
1473  Symbol* symbol = Symbol::cast(this);
1474  os << "<Symbol: " << symbol->Hash();
1475  if (!symbol->name()->IsUndefined()) {
1476  os << " ";
1477  HeapStringAllocator allocator;
1478  StringStream accumulator(&allocator);
1479  String::cast(symbol->name())->StringShortPrint(&accumulator);
1480  os << accumulator.ToCString().get();
1481  }
1482  os << ">";
1483  break;
1484  }
1485  case HEAP_NUMBER_TYPE: {
1486  os << "<Number: ";
1487  HeapNumber::cast(this)->HeapNumberPrint(os);
1488  os << ">";
1489  break;
1490  }
1491  case MUTABLE_HEAP_NUMBER_TYPE: {
1492  os << "<MutableNumber: ";
1493  HeapNumber::cast(this)->HeapNumberPrint(os);
1494  os << '>';
1495  break;
1496  }
1497  case JS_PROXY_TYPE:
1498  os << "<JSProxy>";
1499  break;
1500  case JS_FUNCTION_PROXY_TYPE:
1501  os << "<JSFunctionProxy>";
1502  break;
1503  case FOREIGN_TYPE:
1504  os << "<Foreign>";
1505  break;
1506  case CELL_TYPE: {
1507  os << "Cell for ";
1508  HeapStringAllocator allocator;
1509  StringStream accumulator(&allocator);
1510  Cell::cast(this)->value()->ShortPrint(&accumulator);
1511  os << accumulator.ToCString().get();
1512  break;
1513  }
1514  case PROPERTY_CELL_TYPE: {
1515  os << "PropertyCell for ";
1516  HeapStringAllocator allocator;
1517  StringStream accumulator(&allocator);
1518  PropertyCell::cast(this)->value()->ShortPrint(&accumulator);
1519  os << accumulator.ToCString().get();
1520  break;
1521  }
1522  default:
1523  os << "<Other heap object (" << map()->instance_type() << ")>";
1524  break;
1525  }
1526 }
static const char * Kind2String(Kind kind)
Definition: objects.cc:10627
IN DWORD64 OUT PDWORD64 OUT PIMAGEHLP_SYMBOL64 Symbol
@ FIXED_DOUBLE_ARRAY_TYPE
Definition: objects.h:692
@ FIXED_ARRAY_TYPE
Definition: objects.h:717
@ FREE_SPACE_TYPE
Definition: objects.h:673
@ BYTE_ARRAY_TYPE
Definition: objects.h:672
@ ODDBALL_TYPE
Definition: objects.h:663
@ MUTABLE_HEAP_NUMBER_TYPE
Definition: objects.h:670
@ HEAP_NUMBER_TYPE
Definition: objects.h:669
@ JS_MESSAGE_OBJECT_TYPE
Definition: objects.h:729
@ SHARED_FUNCTION_INFO_TYPE
Definition: objects.h:719
#define TYPED_ARRAY_SHORT_PRINT(Type, type, TYPE, ctype, size)
#define MAKE_STRUCT_CASE(NAME, Name, name)
#define STRUCT_LIST(V)
Definition: objects.h:515
#define TYPED_ARRAYS(V)
Definition: objects.h:4433

References v8::internal::BYTE_ARRAY_TYPE, v8::internal::CODE_TYPE, v8::internal::Heap::Contains(), v8::internal::SharedFunctionInfo::DebugName(), v8::internal::FIXED_ARRAY_TYPE, v8::internal::FIXED_DOUBLE_ARRAY_TYPE, v8::internal::FREE_SPACE_TYPE, v8::internal::SmartPointerBase< Deallocator, T >::get(), GetHeap(), v8::internal::Name::Hash(), v8::internal::HEAP_NUMBER_TYPE, v8::internal::JS_MESSAGE_OBJECT_TYPE, v8::internal::Code::kind(), v8::internal::Code::Kind2String(), MAKE_STRUCT_CASE, map(), v8::internal::MAP_TYPE, v8::internal::MUTABLE_HEAP_NUMBER_TYPE, v8::internal::ODDBALL_TYPE, v8::internal::SHARED_FUNCTION_INFO_TYPE, STRUCT_LIST, v8::internal::SYMBOL_TYPE, v8::internal::String::ToCString(), TYPED_ARRAY_SHORT_PRINT, and TYPED_ARRAYS.

Referenced by v8::internal::operator<<().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ Iterate()

void v8::internal::HeapObject::Iterate ( ObjectVisitor v)

Definition at line 1529 of file objects.cc.

1529  {
1530  // Handle header
1532  // Handle object body
1533  Map* m = map();
1534  IterateBody(m->instance_type(), SizeFromMap(m), v);
1535 }
static const int kMapOffset
Definition: objects.h:1427
void IterateBody(InstanceType type, int object_size, ObjectVisitor *v)
Definition: objects.cc:1538
void IteratePointer(ObjectVisitor *v, int offset)
Definition: objects-inl.h:1505
int SizeFromMap(Map *map)
Definition: objects-inl.h:4259

Referenced by v8::internal::MarkCompactCollector::EvacuateNewSpaceAndCandidates(), v8::internal::MarkCompactCollector::ProcessInvalidatedCode(), and v8::internal::UnreachableObjectsFilter::MarkingVisitor::TransitiveClosure().

+ Here is the caller graph for this function:

◆ IterateBody()

void v8::internal::HeapObject::IterateBody ( InstanceType  type,
int  object_size,
ObjectVisitor v 
)

Definition at line 1538 of file objects.cc.

1539  {
1540  // Avoiding <Type>::cast(this) because it accesses the map pointer field.
1541  // During GC, the map pointer field is encoded.
1542  if (type < FIRST_NONSTRING_TYPE) {
1543  switch (type & kStringRepresentationMask) {
1544  case kSeqStringTag:
1545  break;
1546  case kConsStringTag:
1548  break;
1549  case kSlicedStringTag:
1551  break;
1552  case kExternalStringTag:
1553  if ((type & kStringEncodingMask) == kOneByteStringTag) {
1554  reinterpret_cast<ExternalOneByteString*>(this)
1555  ->ExternalOneByteStringIterateBody(v);
1556  } else {
1557  reinterpret_cast<ExternalTwoByteString*>(this)->
1558  ExternalTwoByteStringIterateBody(v);
1559  }
1560  break;
1561  }
1562  return;
1563  }
1564 
1565  switch (type) {
1566  case FIXED_ARRAY_TYPE:
1567  FixedArray::BodyDescriptor::IterateBody(this, object_size, v);
1568  break;
1570  reinterpret_cast<ConstantPoolArray*>(this)->ConstantPoolIterateBody(v);
1571  break;
1573  break;
1574  case JS_OBJECT_TYPE:
1577  case JS_MODULE_TYPE:
1578  case JS_VALUE_TYPE:
1579  case JS_DATE_TYPE:
1580  case JS_ARRAY_TYPE:
1581  case JS_ARRAY_BUFFER_TYPE:
1582  case JS_TYPED_ARRAY_TYPE:
1583  case JS_DATA_VIEW_TYPE:
1584  case JS_SET_TYPE:
1585  case JS_MAP_TYPE:
1586  case JS_SET_ITERATOR_TYPE:
1587  case JS_MAP_ITERATOR_TYPE:
1588  case JS_WEAK_MAP_TYPE:
1589  case JS_WEAK_SET_TYPE:
1590  case JS_REGEXP_TYPE:
1591  case JS_GLOBAL_PROXY_TYPE:
1592  case JS_GLOBAL_OBJECT_TYPE:
1595  JSObject::BodyDescriptor::IterateBody(this, object_size, v);
1596  break;
1597  case JS_FUNCTION_TYPE:
1598  reinterpret_cast<JSFunction*>(this)
1599  ->JSFunctionIterateBody(object_size, v);
1600  break;
1601  case ODDBALL_TYPE:
1603  break;
1604  case JS_PROXY_TYPE:
1606  break;
1609  break;
1610  case FOREIGN_TYPE:
1611  reinterpret_cast<Foreign*>(this)->ForeignIterateBody(v);
1612  break;
1613  case MAP_TYPE:
1615  break;
1616  case CODE_TYPE:
1617  reinterpret_cast<Code*>(this)->CodeIterateBody(v);
1618  break;
1619  case CELL_TYPE:
1621  break;
1622  case PROPERTY_CELL_TYPE:
1624  break;
1625  case SYMBOL_TYPE:
1627  break;
1628 
1629  case HEAP_NUMBER_TYPE:
1631  case FILLER_TYPE:
1632  case BYTE_ARRAY_TYPE:
1633  case FREE_SPACE_TYPE:
1634  break;
1635 
1636 #define TYPED_ARRAY_CASE(Type, type, TYPE, ctype, size) \
1637  case EXTERNAL_##TYPE##_ARRAY_TYPE: \
1638  case FIXED_##TYPE##_ARRAY_TYPE: \
1639  break;
1640 
1642 #undef TYPED_ARRAY_CASE
1643 
1646  break;
1647  }
1648 
1649 #define MAKE_STRUCT_CASE(NAME, Name, name) \
1650  case NAME##_TYPE:
1652 #undef MAKE_STRUCT_CASE
1653  if (type == ALLOCATION_SITE_TYPE) {
1655  } else {
1656  StructBodyDescriptor::IterateBody(this, object_size, v);
1657  }
1658  break;
1659  default:
1660  PrintF("Unknown type: %d\n", type);
1661  UNREACHABLE();
1662  }
1663 }
static void IterateBody(HeapObject *obj, ObjectVisitor *v)
Definition: objects-inl.h:7162
static void IterateBody(HeapObject *obj, int object_size, ObjectVisitor *v)
Definition: objects-inl.h:7171
#define UNREACHABLE()
Definition: logging.h:30
const uint32_t kStringEncodingMask
Definition: objects.h:555
@ kSeqStringTag
Definition: objects.h:563
@ kConsStringTag
Definition: objects.h:564
@ kSlicedStringTag
Definition: objects.h:566
@ kExternalStringTag
Definition: objects.h:565
@ JS_REGEXP_TYPE
Definition: objects.h:748
@ JS_VALUE_TYPE
Definition: objects.h:728
@ JS_DATE_TYPE
Definition: objects.h:730
@ JS_GLOBAL_PROXY_TYPE
Definition: objects.h:737
@ JS_ARRAY_TYPE
Definition: objects.h:738
@ JS_MODULE_TYPE
Definition: objects.h:734
@ JS_OBJECT_TYPE
Definition: objects.h:731
@ JS_TYPED_ARRAY_TYPE
Definition: objects.h:740
@ FIRST_NONSTRING_TYPE
Definition: objects.h:758
@ JS_DATA_VIEW_TYPE
Definition: objects.h:741
@ PROPERTY_CELL_TYPE
Definition: objects.h:665
@ JS_GENERATOR_OBJECT_TYPE
Definition: objects.h:733
@ JS_WEAK_SET_TYPE
Definition: objects.h:747
@ ALLOCATION_SITE_TYPE
Definition: objects.h:707
@ JS_CONTEXT_EXTENSION_OBJECT_TYPE
Definition: objects.h:732
@ JS_MAP_ITERATOR_TYPE
Definition: objects.h:745
@ JS_FUNCTION_TYPE
Definition: objects.h:749
@ JS_FUNCTION_PROXY_TYPE
Definition: objects.h:726
@ JS_SET_ITERATOR_TYPE
Definition: objects.h:744
@ JS_GLOBAL_OBJECT_TYPE
Definition: objects.h:735
@ JS_ARRAY_BUFFER_TYPE
Definition: objects.h:739
@ JS_PROXY_TYPE
Definition: objects.h:727
@ JS_BUILTINS_OBJECT_TYPE
Definition: objects.h:736
@ CONSTANT_POOL_ARRAY_TYPE
Definition: objects.h:718
@ FOREIGN_TYPE
Definition: objects.h:671
@ JS_WEAK_MAP_TYPE
Definition: objects.h:746
const uint32_t kOneByteStringTag
Definition: objects.h:557
const uint32_t kStringRepresentationMask
Definition: objects.h:561
void PrintF(const char *format,...)
Definition: utils.cc:80
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype, size)

Referenced by v8::internal::Serializer::ObjectSerializer::Serialize(), and v8::internal::Sweep().

+ Here is the caller graph for this function:

◆ IterateNextCodeLink()

void v8::internal::HeapObject::IterateNextCodeLink ( ObjectVisitor v,
int  offset 
)
inlineprotected

Definition at line 1510 of file objects-inl.h.

1510  {
1511  v->VisitNextCodeLink(reinterpret_cast<Object**>(FIELD_ADDR(this, offset)));
1512 }
kSerializedDataOffset Object
Definition: objects-inl.h:5322
#define FIELD_ADDR(p, offset)
Definition: objects-inl.h:1173

References FIELD_ADDR.

Referenced by v8::internal::Code::CodeIterateBody().

+ Here is the caller graph for this function:

◆ IteratePointer()

void v8::internal::HeapObject::IteratePointer ( ObjectVisitor v,
int  offset 
)
inlineprotected

Definition at line 1505 of file objects-inl.h.

1505  {
1506  v->VisitPointer(reinterpret_cast<Object**>(FIELD_ADDR(this, offset)));
1507 }

References FIELD_ADDR.

Referenced by v8::internal::Code::CodeIterateBody().

+ Here is the caller graph for this function:

◆ IteratePointers()

void v8::internal::HeapObject::IteratePointers ( ObjectVisitor v,
int  start,
int  end 
)
inlineprotected

Definition at line 1499 of file objects-inl.h.

1499  {
1500  v->VisitPointers(reinterpret_cast<Object**>(FIELD_ADDR(this, start)),
1501  reinterpret_cast<Object**>(FIELD_ADDR(this, end)));
1502 }

References FIELD_ADDR.

Referenced by v8::internal::HashTable< Derived, Shape, Key >::IterateElements(), v8::internal::HashTable< Derived, Shape, Key >::IteratePrefix(), and v8::internal::JSFunction::JSFunctionIterateBody().

+ Here is the caller graph for this function:

◆ map()

Map * v8::internal::HeapObject::map ( ) const
inline

Definition at line 1392 of file objects-inl.h.

1392  {
1393 #ifdef DEBUG
1394  // Clear mark potentially added by PathTracer.
1395  uintptr_t raw_value =
1396  map_word().ToRawValue() & ~static_cast<uintptr_t>(PathTracer::kMarkTag);
1397  return MapWord::FromRawValue(raw_value).ToMap();
1398 #else
1399  return map_word().ToMap();
1400 #endif
1401 }
MapWord map_word() const
Definition: objects-inl.h:1440

References map_word().

Referenced by v8::internal::Map::AddDependentCode(), v8::internal::Map::AddDependentCompilationInfo(), v8::internal::Map::AddDependentIC(), v8::internal::JSObject::AllocateStorageForMap(), v8::internal::Heap::AllowedToBeMigrated(), v8::internal::Map::AppendCallbackDescriptors(), v8::internal::Map::AsElementsKind(), v8::internal::InternalizedStringKey::AsHandle(), v8::internal::JSFunction::CloneClosure(), v8::internal::CompareNilIC::CompareNil(), v8::internal::JSFunction::CompleteInobjectSlackTracking(), v8::internal::ComputeReceiverForNonGlobal(), v8::internal::ContainsMap(), v8::internal::Map::Copy(), v8::internal::Map::CopyAddDescriptor(), v8::internal::Map::CopyAsElementsKind(), v8::internal::Heap::CopyConstantPoolArray(), v8::internal::Map::CopyDropDescriptors(), v8::internal::Heap::CopyFixedArray(), v8::internal::Heap::CopyFixedDoubleArray(), v8::internal::Map::CopyForFreeze(), v8::internal::Map::CopyForObserved(), v8::internal::Map::CopyGeneralizeAllRepresentations(), v8::internal::TransitionArray::CopyInsert(), v8::internal::Map::CopyInsertDescriptor(), v8::internal::Map::CopyInstallDescriptors(), v8::internal::Heap::CopyJSObject(), v8::internal::Map::CopyNormalized(), v8::internal::CopyObjectToObjectElements(), v8::internal::Map::CopyReplaceDescriptor(), v8::internal::Map::CopyReplaceDescriptors(), v8::internal::FixedTypedArrayBase::DataSize(), v8::internal::DebugConstructedBy(), v8::internal::DebugReferencedBy(), v8::internal::Heap::DoScavenge(), v8::internal::JSTypedArray::element_size(), v8::internal::ElementsKindForArray(), v8::internal::Map::EnsureDescriptorSlack(), v8::internal::JSFunction::EnsureHasInitialMap(), v8::internal::ScavengingVisitor< marks_handling, logging_and_profiling_mode >::EvacuateShortcutCandidate(), v8::internal::Map::ExpectedTransitionKey(), v8::internal::Map::ExpectedTransitionTarget(), v8::internal::V8HeapExplorer::ExtractPropertyReferences(), v8::internal::Heap::FindAllocationMemento(), v8::internal::Code::FindAndReplace(), v8::internal::FindClosestElementsTransition(), v8::internal::Code::FindHandlerForMap(), v8::internal::Code::FindNthObject(), v8::internal::Map::FindTransitionToField(), v8::internal::Heap::GcSafeSizeOfOldObject(), v8::internal::Map::GeneralizeAllFieldRepresentations(), v8::internal::Map::GeneralizeFieldType(), v8::internal::ConstantPoolArray::get_code_ptr_entry(), v8::internal::ConstantPoolArray::get_heap_ptr_entry(), v8::internal::ConstantPoolArray::get_int32_entry(), v8::internal::ConstantPoolArray::get_int64_entry(), v8::internal::ConstantPoolArray::get_int64_entry_as_double(), v8::internal::FixedDoubleArray::get_representation(), v8::internal::FixedDoubleArray::get_scalar(), v8::internal::TraversableMap::GetAndResetParent(), v8::internal::JSTypedArray::GetBuffer(), v8::internal::JSReceiver::GetConstructor(), v8::internal::JSObject::GetElementsKind(), v8::internal::JSObject::GetElementsTransitionMap(), v8::internal::GetEnumPropertyKeys(), v8::internal::JSObject::GetHeaderSize(), v8::internal::JSObject::GetHiddenPropertiesHashTable(), v8::internal::NormalizedMapCache::GetIndex(), v8::internal::JSObject::GetIndexedInterceptor(), v8::internal::JSObject::GetInObjectPropertyOffset(), v8::internal::JSObject::GetInternalFieldCount(), v8::internal::JSObject::GetNamedInterceptor(), v8::internal::JSObject::GetOwnPropertyNames(), v8::internal::Map::GetPrototypeTransition(), v8::internal::Object::GetRootMap(), v8::internal::V8HeapExplorer::GetSystemEntryName(), v8::internal::TransitionArray::GetTargetDetails(), v8::internal::HandleApiCallAsFunctionOrConstructor(), v8::internal::JSFunction::has_prototype(), v8::internal::JSObject::HasDictionaryArgumentsElements(), v8::internal::JSObject::HasFastArgumentsElements(), v8::internal::JSObject::HasFastProperties(), v8::internal::JSObject::HasIndexedInterceptor(), v8::internal::JSObject::HasNamedInterceptor(), v8::internal::String::HasOnlyOneByteChars(), HeapObjectShortPrint(), v8::internal::JSObject::initialize_elements(), v8::internal::Heap::InitializeAllocationMemento(), v8::internal::JSObject::InitializeBody(), v8::internal::MarkCompactMarkingVisitor::INLINE(), v8::internal::Context::IsBlockContext(), v8::internal::Context::IsCatchContext(), v8::internal::AccessorInfo::IsCompatibleReceiver(), v8::internal::AccessorInfo::IsCompatibleReceiverType(), v8::internal::JSObject::IsDirty(), v8::internal::FreeListNode::IsFreeListNode(), v8::internal::Context::IsFunctionContext(), v8::internal::Context::IsGlobalContext(), v8::internal::Context::IsModuleContext(), v8::internal::Context::IsNativeContext(), v8::internal::String::IsOneByteRepresentation(), v8::internal::String::IsOneByteRepresentationUnderneath(), v8::internal::JSReceiver::IsSimpleEnum(), v8::internal::FunctionTemplateInfo::IsTemplateFor(), v8::internal::String::IsTwoByteRepresentation(), v8::internal::String::IsTwoByteRepresentationUnderneath(), v8::internal::Context::IsWithContext(), v8::internal::JSObject::JSObjectShortPrint(), v8::internal::Heap::LeftTrimFixedArray(), v8::internal::String::MarkAsUndetectable(), v8::internal::MarkCompactCollector::MarkLiveObjects(), v8::internal::JSTypedArray::MaterializeArrayBuffer(), MayContainRawValues(), v8::internal::JSObject::MigrateFastToSlow(), v8::internal::JSObject::MigrateInstance(), v8::internal::JSObject::MigrateToNewProperty(), v8::internal::Heap::MoveElements(), v8::internal::JSTypedArray::Neuter(), v8::internal::HashTable< MapCache, MapCacheShape, HashTableKey * >::New(), v8::internal::TransitionArray::NewWith(), v8::internal::FreeListNode::next(), v8::internal::FreeListNode::next_address(), v8::internal::ConsStringIteratorOp::NextLeaf(), v8::internal::FixedArray::NoIncrementalWriteBarrierSet(), v8::internal::JSObject::NormalizeProperties(), v8::internal::FixedArray::NoWriteBarrierSet(), v8::internal::JSObject::NumberOfOwnProperties(), v8::internal::MarkCompactMarkingVisitor::ObjectStatsCountFixedArray(), v8::internal::Map::PrepareForDataProperty(), v8::internal::JSObject::PrintInstanceMigration(), v8::internal::JSFunction::prototype(), v8::internal::Map::PutPrototypeTransition(), v8::internal::Map::RawCopy(), v8::internal::Map::ReconfigureDataProperty(), v8::internal::NewSpace::RecordAllocation(), v8::internal::NewSpace::RecordPromotion(), v8::internal::JSObject::ReferencesObject(), v8::internal::HashTable< MapCache, MapCacheShape, HashTableKey * >::Rehash(), v8::internal::RelocIterator::RelocIterator(), v8::internal::JSFunction::RemovePrototype(), v8::internal::Heap::RightTrimFixedArray(), v8::internal::RUNTIME_FUNCTION(), v8::internal::Heap::ScavengeObject(), v8::internal::ConsStringIteratorOp::Search(), v8::internal::Serializer::ObjectSerializer::Serialize(), v8::internal::FixedDoubleArray::set(), v8::internal::ConstantPoolArray::set(), v8::internal::FixedArray::set(), v8::internal::ConstantPoolArray::set_at_offset(), v8::internal::JSFunction::set_function_bindings(), v8::internal::FreeListNode::set_next(), v8::internal::FixedArray::set_the_hole(), v8::internal::FixedDoubleArray::set_the_hole(), v8::internal::FixedArray::set_undefined(), v8::internal::JSFunction::SetInitialMap(), v8::internal::JSObject::SetPrototype(), v8::internal::Map::SetPrototypeTransitions(), v8::internal::Map::ShareDescriptor(), v8::internal::JSFunction::should_have_prototype(), v8::internal::PartialSerializer::ShouldBeInThePartialSnapshotCache(), v8::internal::JSObject::ShouldConvertToFastElements(), v8::internal::HashTable< MapCache, MapCacheShape, HashTableKey * >::Shrink(), Size(), SizeFromMap(), v8::internal::JSObject::BodyDescriptor::SizeOf(), v8::internal::JSObject::SlowReverseLookup(), v8::internal::JSFunction::StartInobjectSlackTracking(), v8::internal::Sweep(), v8::internal::Map::TransitionElementsTo(), v8::internal::Map::TransitionElementsToSlow(), v8::internal::Map::TransitionToAccessorProperty(), v8::internal::Map::TransitionToDataProperty(), v8::internal::Map::TransitionToPrototype(), v8::internal::Map::TryUpdate(), v8::internal::JSTypedArray::type(), v8::internal::Map::Update(), v8::internal::Heap::UpdateAllocationSiteFeedback(), v8::internal::Map::UpdateCodeCache(), UpdateMapCodeCache(), v8::internal::IncrementalMarking::UpdateMarkingDequeAfterScavenge(), v8::internal::GlobalObjectsEnumerator::VisitPointers(), v8::internal::VerifyPointersVisitor::VisitPointers(), and v8::internal::JSObject::WriteToField().

+ Here is the call graph for this function:

◆ map_word()

◆ MayContainRawValues()

bool v8::internal::HeapObject::MayContainRawValues ( )
inline

Definition at line 1480 of file objects-inl.h.

1480  {
1481  InstanceType type = map()->instance_type();
1482  if (type <= LAST_NAME_TYPE) {
1483  if (type == SYMBOL_TYPE) {
1484  return false;
1485  }
1486  DCHECK(type < FIRST_NONSTRING_TYPE);
1487  // There are four string representations: sequential strings, external
1488  // strings, cons strings, and sliced strings.
1489  // Only the former two contain raw values and no heap pointers (besides the
1490  // map-word).
1491  return ((type & kIsIndirectStringMask) != kIsIndirectStringTag);
1492  }
1493  // The ConstantPoolArray contains heap pointers, but also raw values.
1494  if (type == CONSTANT_POOL_ARRAY_TYPE) return true;
1495  return (type <= LAST_DATA_TYPE);
1496 }
InstanceType instance_type()
Definition: objects-inl.h:4323
#define DCHECK(condition)
Definition: logging.h:205
@ LAST_NAME_TYPE
Definition: objects.h:755
@ LAST_DATA_TYPE
Definition: objects.h:766
const uint32_t kIsIndirectStringTag
Definition: objects.h:569
const uint32_t kIsIndirectStringMask
Definition: objects.h:568

References v8::internal::CONSTANT_POOL_ARRAY_TYPE, DCHECK, v8::internal::FIRST_NONSTRING_TYPE, v8::internal::Map::instance_type(), v8::internal::kIsIndirectStringMask, v8::internal::kIsIndirectStringTag, v8::internal::LAST_DATA_TYPE, v8::internal::LAST_NAME_TYPE, map(), and v8::internal::SYMBOL_TYPE.

Referenced by v8::internal::MarkCompactCollector::MigrateObject().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ RawField()

Object ** v8::internal::HeapObject::RawField ( HeapObject obj,
int  offset 
)
inlinestatic

Definition at line 1311 of file objects-inl.h.

1311  {
1312  return reinterpret_cast<Object**>(FIELD_ADDR(obj, byte_offset));
1313 }

References FIELD_ADDR.

Referenced by v8::internal::MarkCompactCollector::ClearNonLiveReferences(), v8::internal::ConstantPoolArray::ClearPtrEntries(), v8::internal::FixedArray::data_start(), v8::internal::WeakListVisitor< Context >::DoWeakList(), v8::internal::DescriptorArray::GetEnumCacheSlot(), v8::internal::CodeFlusher::GetNextCandidateSlot(), v8::internal::TransitionArray::GetPrototypeTransitionsSlot(), v8::internal::StaticNewSpaceVisitor< StaticVisitor >::INLINE(), v8::internal::FlexibleBodyDescriptor< start_offset >::IterateBody(), v8::internal::FixedBodyDescriptor< start_offset, end_offset, size >::IterateBody(), v8::internal::IntrusiveMapTransitionIterator::IteratorField(), v8::internal::IntrusivePrototypeTransitionIterator::IteratorField(), v8::internal::Heap::LeftTrimFixedArray(), v8::internal::StaticMarkingVisitor< IncrementalMarkingMarkingVisitor >::MarkInlinedFunctionsCode(), v8::internal::StaticMarkingVisitor< StaticVisitor >::MarkMapContents(), v8::internal::CodeFlusher::ProcessJSFunctionCandidates(), v8::internal::CodeFlusher::ProcessSharedFunctionInfoCandidates(), v8::internal::FixedArray::RawFieldOfElementAt(), v8::internal::ConstantPoolArray::RawFieldOfElementAt(), v8::internal::IncrementalMarking::RecordWriteSlow(), v8::internal::RUNTIME_FUNCTION(), v8::internal::JSFunction::set_code(), v8::internal::IncrementalMarkingMarkingVisitor::VisitFixedArrayIncremental(), v8::internal::StaticMarkingVisitor< StaticVisitor >::VisitJSFunctionStrongCode(), v8::internal::StaticMarkingVisitor< StaticVisitor >::VisitJSFunctionWeakCode(), v8::internal::WeakListVisitor< JSArrayBuffer >::VisitLiveObject(), v8::internal::StaticMarkingVisitor< StaticVisitor >::VisitSharedFunctionInfoStrongCode(), v8::internal::StaticMarkingVisitor< StaticVisitor >::VisitSharedFunctionInfoWeakCode(), and v8::internal::VisitWeakList().

+ Here is the caller graph for this function:

◆ set_map()

void v8::internal::HeapObject::set_map ( Map value)
inline

Definition at line 1404 of file objects-inl.h.

1404  {
1405  set_map_word(MapWord::FromMap(value));
1406  if (value != NULL) {
1407  // TODO(1600) We are passing NULL as a slot because maps can never be on
1408  // evacuation candidate.
1409  value->GetHeap()->incremental_marking()->RecordWrite(this, NULL, value);
1410  }
1411 }
void set_map_word(MapWord map_word)
Definition: objects-inl.h:1446

References GetHeap(), v8::internal::Heap::incremental_marking(), NULL, and set_map_word().

Referenced by v8::internal::Heap::AllocateTwoByteInternalizedString(), v8::internal::Heap::CreateInitialMaps(), v8::internal::String::MarkAsUndetectable(), and v8::internal::JSFunction::RemovePrototype().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ set_map_no_write_barrier()

void v8::internal::HeapObject::set_map_no_write_barrier ( Map value)
inline

Definition at line 1435 of file objects-inl.h.

1435  {
1436  set_map_word(MapWord::FromMap(value));
1437 }

References set_map_word().

Referenced by v8::internal::Heap::Allocate(), v8::internal::Heap::AllocateByteArray(), v8::internal::Heap::AllocateCell(), v8::internal::Heap::AllocateCode(), v8::internal::Heap::AllocateEmptyConstantPoolArray(), v8::internal::Heap::AllocateEmptyFixedArray(), v8::internal::Heap::AllocateExternalArray(), v8::internal::Heap::AllocateFixedArrayWithFiller(), v8::internal::Heap::AllocateInternalizedStringImpl(), v8::internal::Heap::AllocateMap(), v8::internal::Heap::AllocateOneByteInternalizedString(), v8::internal::Heap::AllocatePropertyCell(), v8::internal::Heap::AllocateRawOneByteString(), v8::internal::Heap::AllocateRawTwoByteString(), v8::internal::Heap::AllocateSymbol(), v8::internal::Heap::AllocateUninitializedFixedArray(), v8::internal::Heap::AllocateUninitializedFixedDoubleArray(), v8::internal::InternalizedStringKey::AsHandle(), v8::internal::Heap::CopyAndTenureFixedCOWArray(), v8::internal::Heap::CopyConstantPoolArrayWithMap(), v8::internal::Heap::CopyFixedArrayWithMap(), v8::internal::Heap::CopyFixedDoubleArrayWithMap(), v8::internal::Heap::CreateFillerObjectAt(), v8::internal::TraversableMap::GetAndResetParent(), v8::internal::Heap::InitializeAllocationMemento(), v8::internal::FreeListNode::set_size(), and v8::internal::TraversableMap::SetParent().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ set_map_word()

void v8::internal::HeapObject::set_map_word ( MapWord  map_word)
inline

Definition at line 1446 of file objects-inl.h.

1446  {
1448  this, kMapOffset, reinterpret_cast<Object*>(map_word.value_));
1449 }
#define NOBARRIER_WRITE_FIELD(p, offset, value)
Definition: objects-inl.h:1198

References kMapOffset, map_word(), and NOBARRIER_WRITE_FIELD.

Referenced by v8::internal::ScavengingVisitor< marks_handling, logging_and_profiling_mode >::EvacuateShortcutCandidate(), v8::internal::ScavengingVisitor< marks_handling, logging_and_profiling_mode >::INLINE(), set_map(), and set_map_no_write_barrier().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ Size()

int v8::internal::HeapObject::Size ( )
inline

Definition at line 1475 of file objects-inl.h.

1475  {
1476  return SizeFromMap(map());
1477 }

References map(), and SizeFromMap().

Referenced by v8::internal::V8HeapExplorer::AddEntry(), v8::internal::Heap::AllocateInternalizedStringImpl(), v8::internal::Heap::AllocateOneByteInternalizedString(), v8::internal::Heap::AllocateTwoByteInternalizedString(), v8::internal::AllocationTracker::AllocationEvent(), v8::internal::IncrementalMarking::BlackToGreyAndUnshift(), v8::internal::CloneCodeObject(), v8::internal::Code::contains(), v8::internal::Heap::CopyCode(), v8::internal::DiscoverGreyObjectsOnPage(), v8::internal::ScavengingVisitor< marks_handling, logging_and_profiling_mode >::EvacuateObject(), v8::internal::HeapObjectIterator::FromCurrentPage(), v8::internal::JSObject::GetInternalFieldCount(), v8::internal::IncrementalMarking::Hurry(), v8::internal::IncrementalMarkingMarkingVisitor::INLINE(), v8::internal::MarkingDeque::INLINE(), v8::internal::anonymous_namespace{heap-snapshot-generator.cc}::HeapObjectInfo::IsValid(), v8::internal::StoreBuffer::IteratePointersToNewSpace(), v8::internal::Heap::LeftTrimFixedArray(), v8::internal::String::MakeExternal(), v8::internal::IncrementalMarkingRootMarkingVisitor::MarkObjectByPointer(), v8::internal::MarkObjectGreyDoNotEnqueue(), v8::internal::FreeListNode::next(), v8::internal::SemiSpaceIterator::Next(), v8::internal::FreeListNode::next_address(), v8::internal::MarkCompactMarkingVisitor::ObjectStatsCountFixedArray(), v8::internal::MarkCompactMarkingVisitor::ObjectStatsVisitBase(), v8::internal::anonymous_namespace{heap-snapshot-generator.cc}::HeapObjectInfo::Print(), v8::internal::NewSpace::RecordAllocation(), v8::internal::NewSpace::RecordPromotion(), v8::internal::Heap::RightTrimFixedArray(), v8::internal::Serializer::ObjectSerializer::Serialize(), v8::internal::FreeListNode::set_next(), v8::internal::SetMarkBitsUnderInvalidatedCode(), v8::internal::MarkCompactMarkingVisitor::ObjectStatsTracker< MarkCompactMarkingVisitor::kVisitMap >::Visit(), v8::internal::MarkCompactMarkingVisitor::ObjectStatsTracker< MarkCompactMarkingVisitor::kVisitCode >::Visit(), and v8::internal::MarkCompactMarkingVisitor::ObjectStatsTracker< MarkCompactMarkingVisitor::kVisitFixedArray >::Visit().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ SizeFromMap()

int v8::internal::HeapObject::SizeFromMap ( Map map)
inline

Definition at line 4259 of file objects-inl.h.

4259  {
4260  int instance_size = map->instance_size();
4261  if (instance_size != kVariableSizeSentinel) return instance_size;
4262  // Only inline the most frequent cases.
4263  InstanceType instance_type = map->instance_type();
4264  if (instance_type == FIXED_ARRAY_TYPE) {
4266  }
4267  if (instance_type == ONE_BYTE_STRING_TYPE ||
4268  instance_type == ONE_BYTE_INTERNALIZED_STRING_TYPE) {
4270  reinterpret_cast<SeqOneByteString*>(this)->length());
4271  }
4272  if (instance_type == BYTE_ARRAY_TYPE) {
4273  return reinterpret_cast<ByteArray*>(this)->ByteArraySize();
4274  }
4275  if (instance_type == FREE_SPACE_TYPE) {
4276  return reinterpret_cast<FreeSpace*>(this)->nobarrier_size();
4277  }
4278  if (instance_type == STRING_TYPE ||
4279  instance_type == INTERNALIZED_STRING_TYPE) {
4281  reinterpret_cast<SeqTwoByteString*>(this)->length());
4282  }
4283  if (instance_type == FIXED_DOUBLE_ARRAY_TYPE) {
4285  reinterpret_cast<FixedDoubleArray*>(this)->length());
4286  }
4287  if (instance_type == CONSTANT_POOL_ARRAY_TYPE) {
4288  return reinterpret_cast<ConstantPoolArray*>(this)->size();
4289  }
4290  if (instance_type >= FIRST_FIXED_TYPED_ARRAY_TYPE &&
4291  instance_type <= LAST_FIXED_TYPED_ARRAY_TYPE) {
4292  return reinterpret_cast<FixedTypedArrayBase*>(
4293  this)->TypedArraySize(instance_type);
4294  }
4295  DCHECK(instance_type == CODE_TYPE);
4296  return reinterpret_cast<Code*>(this)->CodeSize();
4297 }
static int SizeOf(Map *map, HeapObject *object)
Definition: objects.h:2491
static int SizeFor(int length)
Definition: objects.h:2531
static int SizeFor(int length)
Definition: objects.h:8976
static int SizeFor(int length)
Definition: objects.h:9015
enable harmony numeric enable harmony object literal extensions Optimize object size
@ FIRST_FIXED_TYPED_ARRAY_TYPE
Definition: objects.h:763
@ ONE_BYTE_STRING_TYPE
Definition: objects.h:633
@ INTERNALIZED_STRING_TYPE
Definition: objects.h:612
@ LAST_FIXED_TYPED_ARRAY_TYPE
Definition: objects.h:764
@ ONE_BYTE_INTERNALIZED_STRING_TYPE
Definition: objects.h:614
const int kVariableSizeSentinel
Definition: objects.h:309

References v8::internal::BYTE_ARRAY_TYPE, v8::internal::CODE_TYPE, v8::internal::CONSTANT_POOL_ARRAY_TYPE, DCHECK, v8::internal::FIRST_FIXED_TYPED_ARRAY_TYPE, v8::internal::FIXED_ARRAY_TYPE, v8::internal::FIXED_DOUBLE_ARRAY_TYPE, v8::internal::FREE_SPACE_TYPE, v8::internal::Map::instance_size(), v8::internal::Map::instance_type(), v8::internal::INTERNALIZED_STRING_TYPE, v8::internal::kVariableSizeSentinel, v8::internal::LAST_FIXED_TYPED_ARRAY_TYPE, map(), v8::internal::ONE_BYTE_INTERNALIZED_STRING_TYPE, v8::internal::ONE_BYTE_STRING_TYPE, size, v8::internal::FixedDoubleArray::SizeFor(), v8::internal::SeqOneByteString::SizeFor(), v8::internal::SeqTwoByteString::SizeFor(), v8::internal::FixedArray::BodyDescriptor::SizeOf(), and v8::internal::STRING_TYPE.

Referenced by v8::internal::String::MakeExternal(), Size(), and v8::internal::Sweep().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ STATIC_ASSERT()

v8::internal::HeapObject::STATIC_ASSERT ( kMapOffset  = =Internals::kHeapObjectMapOffset)

Referenced by v8::internal::ConstantPoolArray::get_int64_entry_as_double(), v8::internal::Map::Normalize(), and v8::internal::ConstantPoolArray::set().

+ Here is the caller graph for this function:

◆ synchronized_map()

Map * v8::internal::HeapObject::synchronized_map ( )
inline

Definition at line 1414 of file objects-inl.h.

1414  {
1415  return synchronized_map_word().ToMap();
1416 }
MapWord synchronized_map_word() const
Definition: objects-inl.h:1452

References synchronized_map_word().

+ Here is the call graph for this function:

◆ synchronized_map_word()

MapWord v8::internal::HeapObject::synchronized_map_word ( ) const
inline

Definition at line 1452 of file objects-inl.h.

1452  {
1453  return MapWord(
1454  reinterpret_cast<uintptr_t>(ACQUIRE_READ_FIELD(this, kMapOffset)));
1455 }
#define ACQUIRE_READ_FIELD(p, offset)
Definition: objects-inl.h:1182

References ACQUIRE_READ_FIELD, and kMapOffset.

Referenced by synchronized_map().

+ Here is the caller graph for this function:

◆ synchronized_set_map()

void v8::internal::HeapObject::synchronized_set_map ( Map value)
inline

Definition at line 1419 of file objects-inl.h.

1419  {
1420  synchronized_set_map_word(MapWord::FromMap(value));
1421  if (value != NULL) {
1422  // TODO(1600) We are passing NULL as a slot because maps can never be on
1423  // evacuation candidate.
1424  value->GetHeap()->incremental_marking()->RecordWrite(this, NULL, value);
1425  }
1426 }
void synchronized_set_map_word(MapWord map_word)
Definition: objects-inl.h:1458

References GetHeap(), v8::internal::Heap::incremental_marking(), NULL, and synchronized_set_map_word().

Referenced by v8::internal::String::MakeExternal().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ synchronized_set_map_no_write_barrier()

void v8::internal::HeapObject::synchronized_set_map_no_write_barrier ( Map value)
inline

Definition at line 1429 of file objects-inl.h.

1429  {
1430  synchronized_set_map_word(MapWord::FromMap(value));
1431 }

References synchronized_set_map_word().

Referenced by v8::internal::FreeListNode::set_size().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ synchronized_set_map_word()

void v8::internal::HeapObject::synchronized_set_map_word ( MapWord  map_word)
inline

Definition at line 1458 of file objects-inl.h.

1458  {
1460  this, kMapOffset, reinterpret_cast<Object*>(map_word.value_));
1461 }
#define RELEASE_WRITE_FIELD(p, offset, value)
Definition: objects-inl.h:1193

References kMapOffset, map_word(), and RELEASE_WRITE_FIELD.

Referenced by synchronized_set_map(), and synchronized_set_map_no_write_barrier().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ UpdateMapCodeCache()

void v8::internal::HeapObject::UpdateMapCodeCache ( Handle< HeapObject object,
Handle< Name name,
Handle< Code code 
)
static

Definition at line 4158 of file objects.cc.

4160  {
4161  Handle<Map> map(object->map());
4162  Map::UpdateCodeCache(map, name, code);
4163 }
static void UpdateCodeCache(Handle< Map > map, Handle< Name > name, Handle< Code > code)
Definition: objects.cc:7030
enable harmony numeric enable harmony object literal extensions Optimize object Array DOM strings and string trace pretenuring decisions of HAllocate instructions Enables optimizations which favor memory size over execution speed maximum source size in bytes considered for a single inlining maximum cumulative number of AST nodes considered for inlining trace the tracking of allocation sites deoptimize every n garbage collections perform array bounds checks elimination analyze liveness of environment slots and zap dead values flushes the cache of optimized code for closures on every GC allow uint32 values on optimize frames if they are used only in safe operations track concurrent recompilation artificial compilation delay in ms do not emit check maps for constant values that have a leaf deoptimize the optimized code if the layout of the maps changes enable context specialization in TurboFan execution budget before interrupt is triggered max percentage of megamorphic generic ICs to allow optimization enable use of SAHF instruction if enable use of VFP3 instructions if available enable use of NEON instructions if enable use of SDIV and UDIV instructions if enable use of MLS instructions if enable loading bit constant by means of movw movt instruction enable unaligned accesses for enable use of d16 d31 registers on ARM this requires VFP3 force all emitted branches to be in long enable alignment of csp to bytes on platforms which prefer the register to always be expose gc extension under the specified name show built in functions in stack traces use random jit cookie to mask large constants minimum length for automatic enable preparsing CPU profiler sampling interval in microseconds trace out of bounds accesses to external arrays default size of stack region v8 is allowed to maximum length of function source code printed in a stack trace min size of a semi the new space consists of two semi spaces print one trace line following each garbage collection do not print trace line after scavenger collection print cumulative GC statistics in name

References map(), name, and v8::internal::Map::UpdateCodeCache().

Referenced by v8::internal::StoreIC::CompileHandler().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Member Data Documentation

◆ kHeaderSize

◆ kMapOffset


The documentation for this class was generated from the following files: