v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
Loading...
Searching...
No Matches
v8::internal::WriteBarrier Class Referencefinal

#include <heap-write-barrier.h>

Collaboration diagram for v8::internal::WriteBarrier:

Static Public Member Functions

static void EphemeronKeyWriteBarrierFromCode (Address raw_object, Address key_slot_address, Isolate *isolate)
 
static int MarkingFromCode (Address raw_host, Address raw_slot)
 
static int IndirectPointerMarkingFromCode (Address raw_host, Address raw_slot, Address raw_tag)
 
static int SharedMarkingFromCode (Address raw_host, Address raw_slot)
 
static int SharedFromCode (Address raw_host, Address raw_slot)
 
static WriteBarrierMode GetWriteBarrierModeForObject (Tagged< HeapObject > object, const DisallowGarbageCollection &promise)
 
template<typename T >
static void ForValue (Tagged< HeapObject > host, MaybeObjectSlot slot, Tagged< T > value, WriteBarrierMode mode)
 
template<typename T >
static void ForValue (HeapObjectLayout *host, TaggedMemberBase *slot, Tagged< T > value, WriteBarrierMode mode)
 
static void ForEphemeronHashTable (Tagged< EphemeronHashTable > host, ObjectSlot slot, Tagged< Object > value, WriteBarrierMode mode)
 
static void ForRelocInfo (Tagged< InstructionStream > host, RelocInfo *rinfo, Tagged< HeapObject > value, WriteBarrierMode mode=UPDATE_WRITE_BARRIER)
 
static void ForDescriptorArray (Tagged< DescriptorArray >, int number_of_own_descriptors)
 
static void ForArrayBufferExtension (Tagged< JSArrayBuffer > host, ArrayBufferExtension *extension)
 
static void ForExternalPointer (Tagged< HeapObject > host, ExternalPointerSlot slot, WriteBarrierMode mode=UPDATE_WRITE_BARRIER)
 
static void ForIndirectPointer (Tagged< HeapObject > host, IndirectPointerSlot slot, Tagged< HeapObject > value, WriteBarrierMode mode=UPDATE_WRITE_BARRIER)
 
static void ForProtectedPointer (Tagged< TrustedObject > host, ProtectedPointerSlot slot, Tagged< TrustedObject > value, WriteBarrierMode mode=UPDATE_WRITE_BARRIER)
 
static void ForCppHeapPointer (Tagged< JSObject > host, CppHeapPointerSlot slot, void *value)
 
static void ForJSDispatchHandle (Tagged< HeapObject > host, JSDispatchHandle handle, WriteBarrierMode mode=UPDATE_WRITE_BARRIER)
 
template<typename TSlot >
static void ForRange (Heap *heap, Tagged< HeapObject > object, TSlot start, TSlot end)
 
static MarkingBarrierSetForThread (MarkingBarrier *marking_barrier)
 
static MarkingBarrierCurrentMarkingBarrier (Tagged< HeapObject > verification_candidate)
 
static void MarkingFromTracedHandle (Tagged< Object > value)
 
static void GenerationalForRelocInfo (Tagged< InstructionStream > host, RelocInfo *rinfo, Tagged< HeapObject > object)
 
static void SharedForRelocInfo (Tagged< InstructionStream > host, RelocInfo *, Tagged< HeapObject > value)
 
static void MarkingForTesting (Tagged< HeapObject > host, ObjectSlot, Tagged< Object > value)
 

Static Public Attributes

static constexpr bool kUninterestingPagesCanBeSkipped = true
 

Static Private Member Functions

static bool PageFlagsAreConsistent (Tagged< HeapObject > object)
 
static bool IsImmortalImmovableHeapObject (Tagged< HeapObject > object)
 
static bool IsMarking (Tagged< HeapObject > object)
 
static void Marking (Tagged< HeapObject > host, HeapObjectSlot, Tagged< HeapObject > value)
 
static void Marking (Tagged< HeapObject > host, MaybeObjectSlot, Tagged< MaybeObject > value)
 
static void MarkingForRelocInfo (Tagged< InstructionStream > host, RelocInfo *, Tagged< HeapObject > value)
 
static void Marking (Tagged< HeapObject > host, ExternalPointerSlot slot)
 
static void Marking (Tagged< HeapObject > host, IndirectPointerSlot slot)
 
static void Marking (Tagged< TrustedObject > host, ProtectedPointerSlot slot, Tagged< TrustedObject > value)
 
static void Marking (Tagged< HeapObject > host, JSDispatchHandle handle)
 
static void MarkingSlow (Tagged< HeapObject > host, HeapObjectSlot, Tagged< HeapObject > value)
 
static void MarkingSlow (Tagged< InstructionStream > host, RelocInfo *, Tagged< HeapObject > value)
 
static void MarkingSlow (Tagged< JSArrayBuffer > host, ArrayBufferExtension *)
 
static void MarkingSlow (Tagged< DescriptorArray >, int number_of_own_descriptors)
 
static void MarkingSlow (Tagged< HeapObject > host, ExternalPointerSlot slot)
 
static void MarkingSlow (Tagged< HeapObject > host, IndirectPointerSlot slot)
 
static void MarkingSlow (Tagged< TrustedObject > host, ProtectedPointerSlot slot, Tagged< TrustedObject > value)
 
static void MarkingSlow (Tagged< HeapObject > host, JSDispatchHandle handle)
 
static void MarkingSlowFromTracedHandle (Tagged< HeapObject > value)
 
static void MarkingSlowFromCppHeapWrappable (Heap *heap, Tagged< JSObject > host, CppHeapPointerSlot slot, void *object)
 
static void GenerationalBarrierSlow (Tagged< HeapObject > object, Address slot, Tagged< HeapObject > value)
 
static void GenerationalBarrierForCppHeapPointer (Tagged< JSObject > host, void *value)
 
static void SharedSlow (Tagged< TrustedObject > host, ProtectedPointerSlot slot, Tagged< TrustedObject > value)
 
static void SharedSlow (Tagged< InstructionStream > host, RelocInfo *, Tagged< HeapObject > value)
 
static void SharedHeapBarrierSlow (Tagged< HeapObject > object, Address slot)
 
static void CombinedWriteBarrierInternal (Tagged< HeapObject > host, HeapObjectSlot slot, Tagged< HeapObject > value, WriteBarrierMode mode)
 
static void CombinedGenerationalAndSharedBarrierSlow (Tagged< HeapObject > object, Address slot, Tagged< HeapObject > value)
 
static void CombinedGenerationalAndSharedEphemeronBarrierSlow (Tagged< EphemeronHashTable > table, Address slot, Tagged< HeapObject > value)
 
static void GenerationalBarrierForCodeSlow (Tagged< InstructionStream > host, RelocInfo *rinfo, Tagged< HeapObject > value)
 

Detailed Description

Definition at line 35 of file heap-write-barrier.h.

Member Function Documentation

◆ CombinedGenerationalAndSharedBarrierSlow()

void v8::internal::WriteBarrier::CombinedGenerationalAndSharedBarrierSlow ( Tagged< HeapObject > object,
Address slot,
Tagged< HeapObject > value )
staticprivate

Definition at line 359 of file heap-write-barrier.cc.

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

◆ CombinedGenerationalAndSharedEphemeronBarrierSlow()

void v8::internal::WriteBarrier::CombinedGenerationalAndSharedEphemeronBarrierSlow ( Tagged< EphemeronHashTable > table,
Address slot,
Tagged< HeapObject > value )
staticprivate

Definition at line 341 of file heap-write-barrier.cc.

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

◆ CombinedWriteBarrierInternal()

void v8::internal::WriteBarrier::CombinedWriteBarrierInternal ( Tagged< HeapObject > host,
HeapObjectSlot slot,
Tagged< HeapObject > value,
WriteBarrierMode mode )
inlinestaticprivate

Definition at line 24 of file heap-write-barrier-inl.h.

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

◆ CurrentMarkingBarrier()

MarkingBarrier * v8::internal::WriteBarrier::CurrentMarkingBarrier ( Tagged< HeapObject > verification_candidate)
static

Definition at line 26 of file heap-write-barrier.cc.

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

◆ EphemeronKeyWriteBarrierFromCode()

void v8::internal::WriteBarrier::EphemeronKeyWriteBarrierFromCode ( Address raw_object,
Address key_slot_address,
Isolate * isolate )
static

Definition at line 387 of file heap-write-barrier.cc.

Here is the call graph for this function:

◆ ForArrayBufferExtension()

void v8::internal::WriteBarrier::ForArrayBufferExtension ( Tagged< JSArrayBuffer > host,
ArrayBufferExtension * extension )
inlinestatic

Definition at line 296 of file heap-write-barrier-inl.h.

Here is the call graph for this function:

◆ ForCppHeapPointer()

void v8::internal::WriteBarrier::ForCppHeapPointer ( Tagged< JSObject > host,
CppHeapPointerSlot slot,
void * value )
inlinestatic

Definition at line 351 of file heap-write-barrier-inl.h.

Here is the call graph for this function:

◆ ForDescriptorArray()

void v8::internal::WriteBarrier::ForDescriptorArray ( Tagged< DescriptorArray > descriptor_array,
int number_of_own_descriptors )
inlinestatic

Definition at line 304 of file heap-write-barrier-inl.h.

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

◆ ForEphemeronHashTable()

void v8::internal::WriteBarrier::ForEphemeronHashTable ( Tagged< EphemeronHashTable > host,
ObjectSlot slot,
Tagged< Object > value,
WriteBarrierMode mode )
inlinestatic

Definition at line 137 of file heap-write-barrier-inl.h.

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

◆ ForExternalPointer()

void v8::internal::WriteBarrier::ForExternalPointer ( Tagged< HeapObject > host,
ExternalPointerSlot slot,
WriteBarrierMode mode = UPDATE_WRITE_BARRIER )
inlinestatic

Definition at line 170 of file heap-write-barrier-inl.h.

Here is the call graph for this function:

◆ ForIndirectPointer()

void v8::internal::WriteBarrier::ForIndirectPointer ( Tagged< HeapObject > host,
IndirectPointerSlot slot,
Tagged< HeapObject > value,
WriteBarrierMode mode = UPDATE_WRITE_BARRIER )
inlinestatic

Definition at line 181 of file heap-write-barrier-inl.h.

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

◆ ForJSDispatchHandle()

void v8::internal::WriteBarrier::ForJSDispatchHandle ( Tagged< HeapObject > host,
JSDispatchHandle handle,
WriteBarrierMode mode = UPDATE_WRITE_BARRIER )
inlinestatic

Definition at line 200 of file heap-write-barrier-inl.h.

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

◆ ForProtectedPointer()

void v8::internal::WriteBarrier::ForProtectedPointer ( Tagged< TrustedObject > host,
ProtectedPointerSlot slot,
Tagged< TrustedObject > value,
WriteBarrierMode mode = UPDATE_WRITE_BARRIER )
inlinestatic

Definition at line 213 of file heap-write-barrier-inl.h.

Here is the call graph for this function:

◆ ForRange()

template<typename TSlot >
void v8::internal::WriteBarrier::ForRange ( Heap * heap,
Tagged< HeapObject > object,
TSlot start,
TSlot end )
static

Definition at line 490 of file heap-write-barrier.cc.

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

◆ ForRelocInfo()

void v8::internal::WriteBarrier::ForRelocInfo ( Tagged< InstructionStream > host,
RelocInfo * rinfo,
Tagged< HeapObject > value,
WriteBarrierMode mode = UPDATE_WRITE_BARRIER )
inlinestatic

Definition at line 84 of file heap-write-barrier-inl.h.

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

◆ ForValue() [1/2]

template<typename T >
void v8::internal::WriteBarrier::ForValue ( HeapObjectLayout * host,
TaggedMemberBase * slot,
Tagged< T > value,
WriteBarrierMode mode )
inlinestatic

Definition at line 122 of file heap-write-barrier-inl.h.

Here is the call graph for this function:

◆ ForValue() [2/2]

template<typename T >
void v8::internal::WriteBarrier::ForValue ( Tagged< HeapObject > host,
MaybeObjectSlot slot,
Tagged< T > value,
WriteBarrierMode mode )
inlinestatic

Definition at line 107 of file heap-write-barrier-inl.h.

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

◆ GenerationalBarrierForCodeSlow()

void v8::internal::WriteBarrier::GenerationalBarrierForCodeSlow ( Tagged< InstructionStream > host,
RelocInfo * rinfo,
Tagged< HeapObject > value )
staticprivate

Definition at line 328 of file heap-write-barrier.cc.

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

◆ GenerationalBarrierForCppHeapPointer()

void v8::internal::WriteBarrier::GenerationalBarrierForCppHeapPointer ( Tagged< JSObject > host,
void * value )
inlinestaticprivate

Definition at line 378 of file heap-write-barrier-inl.h.

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

◆ GenerationalBarrierSlow()

void v8::internal::WriteBarrier::GenerationalBarrierSlow ( Tagged< HeapObject > object,
Address slot,
Tagged< HeapObject > value )
staticprivate

Definition at line 372 of file heap-write-barrier.cc.

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

◆ GenerationalForRelocInfo()

void v8::internal::WriteBarrier::GenerationalForRelocInfo ( Tagged< InstructionStream > host,
RelocInfo * rinfo,
Tagged< HeapObject > object )
inlinestatic

Definition at line 231 of file heap-write-barrier-inl.h.

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

◆ GetWriteBarrierModeForObject()

WriteBarrierMode v8::internal::WriteBarrier::GetWriteBarrierModeForObject ( Tagged< HeapObject > object,
const DisallowGarbageCollection & promise )
inlinestatic

Definition at line 61 of file heap-write-barrier-inl.h.

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

◆ IndirectPointerMarkingFromCode()

int v8::internal::WriteBarrier::IndirectPointerMarkingFromCode ( Address raw_host,
Address raw_slot,
Address raw_tag )
static

Definition at line 230 of file heap-write-barrier.cc.

Here is the call graph for this function:

◆ IsImmortalImmovableHeapObject()

bool v8::internal::WriteBarrier::IsImmortalImmovableHeapObject ( Tagged< HeapObject > object)
inlinestaticprivate

Definition at line 78 of file heap-write-barrier-inl.h.

Here is the call graph for this function:

◆ IsMarking()

bool v8::internal::WriteBarrier::IsMarking ( Tagged< HeapObject > object)
inlinestaticprivate

Definition at line 241 of file heap-write-barrier-inl.h.

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

◆ Marking() [1/6]

void v8::internal::WriteBarrier::Marking ( Tagged< HeapObject > host,
ExternalPointerSlot slot )
inlinestaticprivate

Definition at line 312 of file heap-write-barrier-inl.h.

Here is the call graph for this function:

◆ Marking() [2/6]

void v8::internal::WriteBarrier::Marking ( Tagged< HeapObject > host,
HeapObjectSlot slot,
Tagged< HeapObject > value )
inlinestaticprivate

Definition at line 269 of file heap-write-barrier-inl.h.

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

◆ Marking() [3/6]

void v8::internal::WriteBarrier::Marking ( Tagged< HeapObject > host,
IndirectPointerSlot slot )
inlinestaticprivate

Definition at line 319 of file heap-write-barrier-inl.h.

Here is the call graph for this function:

◆ Marking() [4/6]

void v8::internal::WriteBarrier::Marking ( Tagged< HeapObject > host,
JSDispatchHandle handle )
inlinestaticprivate

Definition at line 335 of file heap-write-barrier-inl.h.

Here is the call graph for this function:

◆ Marking() [5/6]

void v8::internal::WriteBarrier::Marking ( Tagged< HeapObject > host,
MaybeObjectSlot slot,
Tagged< MaybeObject > value )
inlinestaticprivate

Definition at line 255 of file heap-write-barrier-inl.h.

Here is the call graph for this function:

◆ Marking() [6/6]

void v8::internal::WriteBarrier::Marking ( Tagged< TrustedObject > host,
ProtectedPointerSlot slot,
Tagged< TrustedObject > value )
inlinestaticprivate

Definition at line 326 of file heap-write-barrier-inl.h.

Here is the call graph for this function:

◆ MarkingForRelocInfo()

void v8::internal::WriteBarrier::MarkingForRelocInfo ( Tagged< InstructionStream > host,
RelocInfo * reloc_info,
Tagged< HeapObject > value )
inlinestaticprivate

Definition at line 277 of file heap-write-barrier-inl.h.

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

◆ MarkingForTesting()

void v8::internal::WriteBarrier::MarkingForTesting ( Tagged< HeapObject > host,
ObjectSlot slot,
Tagged< Object > value )
inlinestatic

Definition at line 245 of file heap-write-barrier-inl.h.

Here is the call graph for this function:

◆ MarkingFromCode()

int v8::internal::WriteBarrier::MarkingFromCode ( Address raw_host,
Address raw_slot )
static

Definition at line 198 of file heap-write-barrier.cc.

Here is the call graph for this function:

◆ MarkingFromTracedHandle()

void v8::internal::WriteBarrier::MarkingFromTracedHandle ( Tagged< Object > value)
inlinestatic

Definition at line 343 of file heap-write-barrier-inl.h.

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

◆ MarkingSlow() [1/8]

void v8::internal::WriteBarrier::MarkingSlow ( Tagged< DescriptorArray > descriptor_array,
int number_of_own_descriptors )
staticprivate

Definition at line 134 of file heap-write-barrier.cc.

Here is the call graph for this function:

◆ MarkingSlow() [2/8]

void v8::internal::WriteBarrier::MarkingSlow ( Tagged< HeapObject > host,
ExternalPointerSlot slot )
staticprivate

Definition at line 140 of file heap-write-barrier.cc.

Here is the call graph for this function:

◆ MarkingSlow() [3/8]

void v8::internal::WriteBarrier::MarkingSlow ( Tagged< HeapObject > host,
HeapObjectSlot slot,
Tagged< HeapObject > value )
staticprivate

Definition at line 49 of file heap-write-barrier.cc.

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

◆ MarkingSlow() [4/8]

void v8::internal::WriteBarrier::MarkingSlow ( Tagged< HeapObject > host,
IndirectPointerSlot slot )
staticprivate

Definition at line 158 of file heap-write-barrier.cc.

Here is the call graph for this function:

◆ MarkingSlow() [5/8]

void v8::internal::WriteBarrier::MarkingSlow ( Tagged< HeapObject > host,
JSDispatchHandle handle )
staticprivate

Definition at line 171 of file heap-write-barrier.cc.

Here is the call graph for this function:

◆ MarkingSlow() [6/8]

void v8::internal::WriteBarrier::MarkingSlow ( Tagged< InstructionStream > host,
RelocInfo * reloc_info,
Tagged< HeapObject > value )
staticprivate

Definition at line 88 of file heap-write-barrier.cc.

Here is the call graph for this function:

◆ MarkingSlow() [7/8]

void v8::internal::WriteBarrier::MarkingSlow ( Tagged< JSArrayBuffer > host,
ArrayBufferExtension * extension )
staticprivate

Definition at line 128 of file heap-write-barrier.cc.

Here is the call graph for this function:

◆ MarkingSlow() [8/8]

void v8::internal::WriteBarrier::MarkingSlow ( Tagged< TrustedObject > host,
ProtectedPointerSlot slot,
Tagged< TrustedObject > value )
staticprivate

Definition at line 164 of file heap-write-barrier.cc.

Here is the call graph for this function:

◆ MarkingSlowFromCppHeapWrappable()

void v8::internal::WriteBarrier::MarkingSlowFromCppHeapWrappable ( Heap * heap,
Tagged< JSObject > host,
CppHeapPointerSlot slot,
void * object )
staticprivate

Definition at line 65 of file heap-write-barrier.cc.

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

◆ MarkingSlowFromTracedHandle()

void v8::internal::WriteBarrier::MarkingSlowFromTracedHandle ( Tagged< HeapObject > value)
staticprivate

Definition at line 59 of file heap-write-barrier.cc.

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

◆ PageFlagsAreConsistent()

bool v8::internal::WriteBarrier::PageFlagsAreConsistent ( Tagged< HeapObject > object)
staticprivate

Definition at line 290 of file heap-write-barrier.cc.

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

◆ SetForThread()

MarkingBarrier * v8::internal::WriteBarrier::SetForThread ( MarkingBarrier * marking_barrier)
static

Definition at line 43 of file heap-write-barrier.cc.

Here is the caller graph for this function:

◆ SharedForRelocInfo()

void v8::internal::WriteBarrier::SharedForRelocInfo ( Tagged< InstructionStream > host,
RelocInfo * reloc_info,
Tagged< HeapObject > value )
inlinestatic

Definition at line 286 of file heap-write-barrier-inl.h.

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

◆ SharedFromCode()

int v8::internal::WriteBarrier::SharedFromCode ( Address raw_host,
Address raw_slot )
static

Definition at line 278 of file heap-write-barrier.cc.

Here is the call graph for this function:

◆ SharedHeapBarrierSlow()

void v8::internal::WriteBarrier::SharedHeapBarrierSlow ( Tagged< HeapObject > object,
Address slot )
staticprivate

Definition at line 107 of file heap-write-barrier.cc.

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

◆ SharedMarkingFromCode()

int v8::internal::WriteBarrier::SharedMarkingFromCode ( Address raw_host,
Address raw_slot )
static

Definition at line 251 of file heap-write-barrier.cc.

Here is the call graph for this function:

◆ SharedSlow() [1/2]

void v8::internal::WriteBarrier::SharedSlow ( Tagged< InstructionStream > host,
RelocInfo * reloc_info,
Tagged< HeapObject > value )
staticprivate

Definition at line 96 of file heap-write-barrier.cc.

Here is the call graph for this function:

◆ SharedSlow() [2/2]

void v8::internal::WriteBarrier::SharedSlow ( Tagged< TrustedObject > host,
ProtectedPointerSlot slot,
Tagged< TrustedObject > value )
staticprivate

Definition at line 116 of file heap-write-barrier.cc.

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

Member Data Documentation

◆ kUninterestingPagesCanBeSkipped

bool v8::internal::WriteBarrier::kUninterestingPagesCanBeSkipped = true
staticconstexpr

Definition at line 120 of file heap-write-barrier.h.


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