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

#include <write-barrier.h>

Collaboration diagram for cppgc::internal::WriteBarrier:

Classes

class  FlagUpdater
 
struct  Params
 

Public Types

enum class  Type : uint8_t { kNone , kMarking , kGenerational }
 
enum class  GenerationalBarrierType : uint8_t { kPreciseSlot , kPreciseUncompressedSlot , kImpreciseSlot }
 
enum class  ValueMode { kValuePresent , kNoValuePresent }
 

Public Member Functions

template<typename MemberStorage >
WriteBarrier::Type GetWriteBarrierType (const void *slot, MemberStorage value, WriteBarrier::Params &params)
 
template<typename HeapHandleCallback >
WriteBarrier::Type GetWriteBarrierType (const void *slot, WriteBarrier::Params &params, HeapHandleCallback callback)
 

Static Public Member Functions

static V8_INLINE Type GetWriteBarrierType (const void *slot, const void *value, Params &params)
 
template<typename MemberStorage >
static V8_INLINE Type GetWriteBarrierType (const void *slot, MemberStorage, Params &params)
 
template<typename HeapHandleCallback >
static V8_INLINE Type GetWriteBarrierType (const void *slot, Params &params, HeapHandleCallback callback)
 
static V8_INLINE Type GetWriteBarrierType (const void *value, Params &params)
 
static V8_INLINE void DijkstraMarkingBarrier (const Params &params, const void *object)
 
static V8_INLINE void DijkstraMarkingBarrierRange (const Params &params, const void *first_element, size_t element_size, size_t number_of_elements, TraceCallback trace_callback)
 
static V8_INLINE void SteeleMarkingBarrier (const Params &params, const void *object)
 
template<GenerationalBarrierType >
static V8_INLINE void GenerationalBarrier (const Params &params, const void *slot)
 
static void CheckParams (Type expected_type, const Params &params)
 
static bool IsEnabled ()
 

Private Types

using WriteBarrierTypePolicy = WriteBarrierTypeForNonCagedHeapPolicy
 

Private Member Functions

 WriteBarrier ()=delete
 

Static Private Member Functions

static void DijkstraMarkingBarrierSlow (const void *value)
 
static void DijkstraMarkingBarrierSlowWithSentinelCheck (const void *value)
 
static void DijkstraMarkingBarrierRangeSlow (HeapHandle &heap_handle, const void *first_element, size_t element_size, size_t number_of_elements, TraceCallback trace_callback)
 
static void SteeleMarkingBarrierSlow (const void *value)
 
static void SteeleMarkingBarrierSlowWithSentinelCheck (const void *value)
 

Static Private Attributes

static AtomicEntryFlag write_barrier_enabled_
 

Detailed Description

Definition at line 39 of file write-barrier.h.

Member Typedef Documentation

◆ WriteBarrierTypePolicy

Member Enumeration Documentation

◆ GenerationalBarrierType

Enumerator
kPreciseSlot 
kPreciseUncompressedSlot 
kImpreciseSlot 

Definition at line 47 of file write-barrier.h.

◆ Type

enum class cppgc::internal::WriteBarrier::Type : uint8_t
strong
Enumerator
kNone 
kMarking 
kGenerational 

Definition at line 41 of file write-barrier.h.

◆ ValueMode

Enumerator
kValuePresent 
kNoValuePresent 

Definition at line 64 of file write-barrier.h.

Constructor & Destructor Documentation

◆ WriteBarrier()

cppgc::internal::WriteBarrier::WriteBarrier ( )
privatedelete

Member Function Documentation

◆ CheckParams()

static void cppgc::internal::WriteBarrier::CheckParams ( Type expected_type,
const Params & params )
inlinestatic

Definition at line 112 of file write-barrier.h.

Here is the caller graph for this function:

◆ DijkstraMarkingBarrier()

void cppgc::internal::WriteBarrier::DijkstraMarkingBarrier ( const Params & params,
const void * object )
static

Definition at line 419 of file write-barrier.h.

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

◆ DijkstraMarkingBarrierRange()

void cppgc::internal::WriteBarrier::DijkstraMarkingBarrierRange ( const Params & params,
const void * first_element,
size_t element_size,
size_t number_of_elements,
TraceCallback trace_callback )
static

Definition at line 431 of file write-barrier.h.

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

◆ DijkstraMarkingBarrierRangeSlow()

void cppgc::internal::WriteBarrier::DijkstraMarkingBarrierRangeSlow ( HeapHandle & heap_handle,
const void * first_element,
size_t element_size,
size_t number_of_elements,
TraceCallback trace_callback )
staticprivate

Definition at line 53 of file write-barrier.cc.

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

◆ DijkstraMarkingBarrierSlow()

void cppgc::internal::WriteBarrier::DijkstraMarkingBarrierSlow ( const void * value)
staticprivate

Definition at line 36 of file write-barrier.cc.

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

◆ DijkstraMarkingBarrierSlowWithSentinelCheck()

void cppgc::internal::WriteBarrier::DijkstraMarkingBarrierSlowWithSentinelCheck ( const void * value)
staticprivate

Definition at line 28 of file write-barrier.cc.

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

◆ GenerationalBarrier()

static V8_INLINE void cppgc::internal::WriteBarrier::GenerationalBarrier ( const Params & params,
const void * slot )
inlinestatic

Definition at line 105 of file write-barrier.h.

Here is the caller graph for this function:

◆ GetWriteBarrierType() [1/6]

WriteBarrier::Type cppgc::internal::WriteBarrier::GetWriteBarrierType ( const void * slot,
const void * value,
WriteBarrier::Params & params )
static

Definition at line 388 of file write-barrier.h.

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

◆ GetWriteBarrierType() [2/6]

template<typename MemberStorage >
WriteBarrier::Type cppgc::internal::WriteBarrier::GetWriteBarrierType ( const void * slot,
MemberStorage value,
WriteBarrier::Params & params )

Definition at line 396 of file write-barrier.h.

Here is the call graph for this function:

◆ GetWriteBarrierType() [3/6]

template<typename MemberStorage >
static V8_INLINE Type cppgc::internal::WriteBarrier::GetWriteBarrierType ( const void * slot,
MemberStorage ,
Params & params )
static

◆ GetWriteBarrierType() [4/6]

template<typename HeapHandleCallback >
static V8_INLINE Type cppgc::internal::WriteBarrier::GetWriteBarrierType ( const void * slot,
Params & params,
HeapHandleCallback callback )
static

◆ GetWriteBarrierType() [5/6]

template<typename HeapHandleCallback >
WriteBarrier::Type cppgc::internal::WriteBarrier::GetWriteBarrierType ( const void * slot,
WriteBarrier::Params & params,
HeapHandleCallback callback )

Definition at line 404 of file write-barrier.h.

Here is the call graph for this function:

◆ GetWriteBarrierType() [6/6]

WriteBarrier::Type cppgc::internal::WriteBarrier::GetWriteBarrierType ( const void * value,
WriteBarrier::Params & params )
static

Definition at line 412 of file write-barrier.h.

Here is the call graph for this function:

◆ IsEnabled()

static bool cppgc::internal::WriteBarrier::IsEnabled ( )
inlinestatic

Definition at line 118 of file write-barrier.h.

Here is the caller graph for this function:

◆ SteeleMarkingBarrier()

void cppgc::internal::WriteBarrier::SteeleMarkingBarrier ( const Params & params,
const void * object )
static

Definition at line 442 of file write-barrier.h.

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

◆ SteeleMarkingBarrierSlow()

void cppgc::internal::WriteBarrier::SteeleMarkingBarrierSlow ( const void * value)
staticprivate

Definition at line 80 of file write-barrier.cc.

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

◆ SteeleMarkingBarrierSlowWithSentinelCheck()

void cppgc::internal::WriteBarrier::SteeleMarkingBarrierSlowWithSentinelCheck ( const void * value)
staticprivate

Definition at line 72 of file write-barrier.cc.

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

Member Data Documentation

◆ write_barrier_enabled_

AtomicEntryFlag cppgc::internal::WriteBarrier::write_barrier_enabled_
staticprivate

Definition at line 153 of file write-barrier.h.


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