webkit  2cdf99a9e3038c7e01b3c37e8ad903ecbe5eecf1
https://github.com/WebKit/webkit
Public Types | Public Member Functions | Public Attributes | Friends | List of all members
JSC::SlotVisitor Class Reference

#include <SlotVisitor.h>

Public Types

enum  SharedDrainMode { SlaveDrain, MasterDrain, SlaveDrain, MasterDrain }
 
enum  SharedDrainResult { SharedDrainResult::Done, SharedDrainResult::TimedOut, SharedDrainResult::Done, SharedDrainResult::TimedOut }
 
enum  SharedDrainMode { SlaveDrain, MasterDrain, SlaveDrain, MasterDrain }
 
enum  SharedDrainResult { SharedDrainResult::Done, SharedDrainResult::TimedOut, SharedDrainResult::Done, SharedDrainResult::TimedOut }
 

Public Member Functions

 SlotVisitor (Heap &, CString codeName)
 
 ~SlotVisitor ()
 
MarkStackArraycollectorMarkStack ()
 
MarkStackArraymutatorMarkStack ()
 
const MarkStackArraycollectorMarkStack () const
 
const MarkStackArraymutatorMarkStack () const
 
VMvm ()
 
const VMvm () const
 
Heapheap () const
 
void append (ConservativeRoots &)
 
template<typename T >
void append (const WriteBarrierBase< T > &)
 
template<typename T >
void appendHidden (const WriteBarrierBase< T > &)
 
template<typename Iterator >
void append (Iterator begin, Iterator end)
 
void appendValues (const WriteBarrierBase< Unknown > *, size_t count)
 
void appendValuesHidden (const WriteBarrierBase< Unknown > *, size_t count)
 
JS_EXPORT_PRIVATE void appendUnbarriered (JSValue)
 
void appendUnbarriered (JSValue *, size_t)
 
void appendUnbarriered (JSCell *)
 
template<typename T >
void append (const Weak< T > &weak)
 
JS_EXPORT_PRIVATE void addOpaqueRoot (void *)
 
JS_EXPORT_PRIVATE bool containsOpaqueRoot (void *) const
 
TriState containsOpaqueRootTriState (void *) const
 
bool isEmpty ()
 
void didStartMarking ()
 
void reset ()
 
void clearMarkStacks ()
 
size_t bytesVisited () const
 
size_t visitCount () const
 
void addToVisitCount (size_t value)
 
void donate ()
 
void drain (MonotonicTime timeout=MonotonicTime::infinity())
 
void donateAndDrain (MonotonicTime timeout=MonotonicTime::infinity())
 
SharedDrainResult drainFromShared (SharedDrainMode, MonotonicTime timeout=MonotonicTime::infinity())
 
SharedDrainResult drainInParallel (MonotonicTime timeout=MonotonicTime::infinity())
 
SharedDrainResult drainInParallelPassively (MonotonicTime timeout=MonotonicTime::infinity())
 
size_t performIncrementOfDraining (size_t bytes)
 
JS_EXPORT_PRIVATE void mergeIfNecessary ()
 
void markAuxiliary (const void *base)
 
void reportExtraMemoryVisited (size_t)
 
void addWeakReferenceHarvester (WeakReferenceHarvester *)
 
void addUnconditionalFinalizer (UnconditionalFinalizer *)
 
void dump (PrintStream &) const
 
bool isBuildingHeapSnapshot () const
 
HeapVersion markingVersion () const
 
bool mutatorIsStopped () const
 
Lock & rightToRun ()
 
void updateMutatorIsStopped (const AbstractLocker &)
 
void updateMutatorIsStopped ()
 
bool hasAcknowledgedThatTheMutatorIsResumed () const
 
bool mutatorIsStoppedIsUpToDate () const
 
void optimizeForStoppedMutator ()
 
void didRace (const VisitRaceKey &)
 
void didRace (JSCell *cell, const char *reason)
 
void visitAsConstraint (const JSCell *)
 
bool didReachTermination ()
 
void setIgnoreNewOpaqueRoots (bool value)
 
void donateAll ()
 
const char * codeName () const
 
 SlotVisitor (Heap &, CString codeName)
 
 ~SlotVisitor ()
 
MarkStackArraycollectorMarkStack ()
 
MarkStackArraymutatorMarkStack ()
 
const MarkStackArraycollectorMarkStack () const
 
const MarkStackArraymutatorMarkStack () const
 
VMvm ()
 
const VMvm () const
 
Heapheap () const
 
void append (ConservativeRoots &)
 
template<typename T >
void append (const WriteBarrierBase< T > &)
 
template<typename T >
void appendHidden (const WriteBarrierBase< T > &)
 
template<typename Iterator >
void append (Iterator begin, Iterator end)
 
void appendValues (const WriteBarrierBase< Unknown > *, size_t count)
 
void appendValuesHidden (const WriteBarrierBase< Unknown > *, size_t count)
 
JS_EXPORT_PRIVATE void appendUnbarriered (JSValue)
 
void appendUnbarriered (JSValue *, size_t)
 
void appendUnbarriered (JSCell *)
 
template<typename T >
void append (const Weak< T > &weak)
 
JS_EXPORT_PRIVATE void addOpaqueRoot (void *)
 
JS_EXPORT_PRIVATE bool containsOpaqueRoot (void *) const
 
TriState containsOpaqueRootTriState (void *) const
 
bool isEmpty ()
 
void didStartMarking ()
 
void reset ()
 
void clearMarkStacks ()
 
size_t bytesVisited () const
 
size_t visitCount () const
 
void addToVisitCount (size_t value)
 
void donate ()
 
void drain (MonotonicTime timeout=MonotonicTime::infinity())
 
void donateAndDrain (MonotonicTime timeout=MonotonicTime::infinity())
 
SharedDrainResult drainFromShared (SharedDrainMode, MonotonicTime timeout=MonotonicTime::infinity())
 
SharedDrainResult drainInParallel (MonotonicTime timeout=MonotonicTime::infinity())
 
SharedDrainResult drainInParallelPassively (MonotonicTime timeout=MonotonicTime::infinity())
 
size_t performIncrementOfDraining (size_t bytes)
 
JS_EXPORT_PRIVATE void mergeIfNecessary ()
 
void markAuxiliary (const void *base)
 
void reportExtraMemoryVisited (size_t)
 
void addWeakReferenceHarvester (WeakReferenceHarvester *)
 
void addUnconditionalFinalizer (UnconditionalFinalizer *)
 
void dump (PrintStream &) const
 
bool isBuildingHeapSnapshot () const
 
HeapVersion markingVersion () const
 
bool mutatorIsStopped () const
 
Lock & rightToRun ()
 
void updateMutatorIsStopped (const AbstractLocker &)
 
void updateMutatorIsStopped ()
 
bool hasAcknowledgedThatTheMutatorIsResumed () const
 
bool mutatorIsStoppedIsUpToDate () const
 
void optimizeForStoppedMutator ()
 
void didRace (const VisitRaceKey &)
 
void didRace (JSCell *cell, const char *reason)
 
void visitAsConstraint (const JSCell *)
 
bool didReachTermination ()
 
void setIgnoreNewOpaqueRoots (bool value)
 
void donateAll ()
 
const char * codeName () const
 
template<typename ContainerType >
ALWAYS_INLINE void setMarkedAndAppendToMarkStack (ContainerType &container, JSCell *cell)
 
template<typename ContainerType >
ALWAYS_INLINE void appendToMarkStack (ContainerType &container, JSCell *cell)
 

Public Attributes

bool m_isCheckingForDefaultMarkViolation
 
bool m_isDraining
 

Friends

class SetCurrentCellScope
 
class Heap
 
class ParallelModeEnabler
 

Member Enumeration Documentation

◆ SharedDrainMode [1/2]

Enumerator
SlaveDrain 
MasterDrain 
SlaveDrain 
MasterDrain 

◆ SharedDrainMode [2/2]

Enumerator
SlaveDrain 
MasterDrain 
SlaveDrain 
MasterDrain 

◆ SharedDrainResult [1/2]

Enumerator
Done 
TimedOut 
Done 
TimedOut 

◆ SharedDrainResult [2/2]

Enumerator
Done 
TimedOut 
Done 
TimedOut 

Constructor & Destructor Documentation

◆ SlotVisitor() [1/2]

JSC::SlotVisitor::SlotVisitor ( Heap heap,
CString  codeName 
)

◆ ~SlotVisitor() [1/2]

JSC::SlotVisitor::~SlotVisitor ( )

◆ SlotVisitor() [2/2]

JSC::SlotVisitor::SlotVisitor ( Heap ,
CString  codeName 
)

◆ ~SlotVisitor() [2/2]

JSC::SlotVisitor::~SlotVisitor ( )

Member Function Documentation

◆ addOpaqueRoot() [1/2]

void JSC::SlotVisitor::addOpaqueRoot ( void root)

◆ addOpaqueRoot() [2/2]

JS_EXPORT_PRIVATE void JSC::SlotVisitor::addOpaqueRoot ( void )

◆ addToVisitCount() [1/2]

void JSC::SlotVisitor::addToVisitCount ( size_t  value)
inline

◆ addToVisitCount() [2/2]

void JSC::SlotVisitor::addToVisitCount ( size_t  value)
inline

◆ addUnconditionalFinalizer() [1/2]

void JSC::SlotVisitor::addUnconditionalFinalizer ( UnconditionalFinalizer unconditionalFinalizer)

◆ addUnconditionalFinalizer() [2/2]

void JSC::SlotVisitor::addUnconditionalFinalizer ( UnconditionalFinalizer )

◆ addWeakReferenceHarvester() [1/2]

void JSC::SlotVisitor::addWeakReferenceHarvester ( WeakReferenceHarvester weakReferenceHarvester)

◆ addWeakReferenceHarvester() [2/2]

void JSC::SlotVisitor::addWeakReferenceHarvester ( WeakReferenceHarvester )

◆ append() [1/8]

void JSC::SlotVisitor::append ( ConservativeRoots )

◆ append() [2/8]

void JSC::SlotVisitor::append ( ConservativeRoots conservativeRoots)

◆ append() [3/8]

template<typename T >
void JSC::SlotVisitor::append ( const WriteBarrierBase< T > &  )

◆ append() [4/8]

template<typename T >
void JSC::SlotVisitor::append ( const WriteBarrierBase< T > &  slot)
inline

◆ append() [5/8]

template<typename Iterator >
void JSC::SlotVisitor::append ( Iterator  begin,
Iterator  end 
)

◆ append() [6/8]

template<typename Iterator >
void JSC::SlotVisitor::append ( Iterator  begin,
Iterator  end 
)
inline

◆ append() [7/8]

template<typename T >
void JSC::SlotVisitor::append ( const Weak< T > &  weak)

◆ append() [8/8]

template<typename T >
void JSC::SlotVisitor::append ( const Weak< T > &  weak)
inline

◆ appendHidden() [1/2]

template<typename T >
void JSC::SlotVisitor::appendHidden ( const WriteBarrierBase< T > &  )

◆ appendHidden() [2/2]

template<typename T >
void JSC::SlotVisitor::appendHidden ( const WriteBarrierBase< T > &  slot)
inline

◆ appendToMarkStack()

template<typename ContainerType >
ALWAYS_INLINE void JSC::SlotVisitor::appendToMarkStack ( ContainerType &  container,
JSCell cell 
)

◆ appendUnbarriered() [1/6]

JS_EXPORT_PRIVATE void JSC::SlotVisitor::appendUnbarriered ( JSValue  )

◆ appendUnbarriered() [2/6]

void JSC::SlotVisitor::appendUnbarriered ( JSValue  value)

◆ appendUnbarriered() [3/6]

void JSC::SlotVisitor::appendUnbarriered ( JSValue ,
size_t   
)

◆ appendUnbarriered() [4/6]

void JSC::SlotVisitor::appendUnbarriered ( JSValue slot,
size_t  count 
)
inline

◆ appendUnbarriered() [5/6]

void JSC::SlotVisitor::appendUnbarriered ( JSCell cell)
inline

◆ appendUnbarriered() [6/6]

void JSC::SlotVisitor::appendUnbarriered ( JSCell )

◆ appendValues() [1/2]

void JSC::SlotVisitor::appendValues ( const WriteBarrierBase< Unknown > *  ,
size_t  count 
)

◆ appendValues() [2/2]

void JSC::SlotVisitor::appendValues ( const WriteBarrierBase< Unknown > *  barriers,
size_t  count 
)
inline

◆ appendValuesHidden() [1/2]

void JSC::SlotVisitor::appendValuesHidden ( const WriteBarrierBase< Unknown > *  ,
size_t  count 
)

◆ appendValuesHidden() [2/2]

void JSC::SlotVisitor::appendValuesHidden ( const WriteBarrierBase< Unknown > *  barriers,
size_t  count 
)
inline

◆ bytesVisited() [1/2]

size_t JSC::SlotVisitor::bytesVisited ( ) const
inline

◆ bytesVisited() [2/2]

size_t JSC::SlotVisitor::bytesVisited ( ) const
inline

◆ clearMarkStacks() [1/2]

void JSC::SlotVisitor::clearMarkStacks ( )

◆ clearMarkStacks() [2/2]

void JSC::SlotVisitor::clearMarkStacks ( )

◆ codeName() [1/2]

const char* JSC::SlotVisitor::codeName ( ) const
inline

◆ codeName() [2/2]

const char* JSC::SlotVisitor::codeName ( ) const
inline

◆ collectorMarkStack() [1/4]

MarkStackArray& JSC::SlotVisitor::collectorMarkStack ( )
inline

◆ collectorMarkStack() [2/4]

MarkStackArray& JSC::SlotVisitor::collectorMarkStack ( )
inline

◆ collectorMarkStack() [3/4]

const MarkStackArray& JSC::SlotVisitor::collectorMarkStack ( ) const
inline

◆ collectorMarkStack() [4/4]

const MarkStackArray& JSC::SlotVisitor::collectorMarkStack ( ) const
inline

◆ containsOpaqueRoot() [1/2]

JS_EXPORT_PRIVATE bool JSC::SlotVisitor::containsOpaqueRoot ( void ) const

◆ containsOpaqueRoot() [2/2]

bool JSC::SlotVisitor::containsOpaqueRoot ( void root) const

◆ containsOpaqueRootTriState() [1/2]

TriState JSC::SlotVisitor::containsOpaqueRootTriState ( void ) const

◆ containsOpaqueRootTriState() [2/2]

TriState JSC::SlotVisitor::containsOpaqueRootTriState ( void root) const

◆ didRace() [1/4]

void JSC::SlotVisitor::didRace ( const VisitRaceKey race)

◆ didRace() [2/4]

void JSC::SlotVisitor::didRace ( const VisitRaceKey )

◆ didRace() [3/4]

void JSC::SlotVisitor::didRace ( JSCell cell,
const char *  reason 
)
inline

◆ didRace() [4/4]

void JSC::SlotVisitor::didRace ( JSCell cell,
const char *  reason 
)
inline

◆ didReachTermination() [1/2]

bool JSC::SlotVisitor::didReachTermination ( )

◆ didReachTermination() [2/2]

bool JSC::SlotVisitor::didReachTermination ( )

◆ didStartMarking() [1/2]

void JSC::SlotVisitor::didStartMarking ( )

◆ didStartMarking() [2/2]

void JSC::SlotVisitor::didStartMarking ( )

◆ donate() [1/2]

void JSC::SlotVisitor::donate ( )

◆ donate() [2/2]

void JSC::SlotVisitor::donate ( )

◆ donateAll() [1/2]

void JSC::SlotVisitor::donateAll ( )

◆ donateAll() [2/2]

void JSC::SlotVisitor::donateAll ( )

◆ donateAndDrain() [1/2]

void JSC::SlotVisitor::donateAndDrain ( MonotonicTime  timeout = MonotonicTime::infinity())

◆ donateAndDrain() [2/2]

void JSC::SlotVisitor::donateAndDrain ( MonotonicTime  timeout = MonotonicTime::infinity())

◆ drain() [1/2]

void JSC::SlotVisitor::drain ( MonotonicTime  timeout = MonotonicTime::infinity())

◆ drain() [2/2]

NEVER_INLINE void JSC::SlotVisitor::drain ( MonotonicTime  timeout = MonotonicTime::infinity())

◆ drainFromShared() [1/2]

SharedDrainResult JSC::SlotVisitor::drainFromShared ( SharedDrainMode  ,
MonotonicTime  timeout = MonotonicTime::infinity() 
)

◆ drainFromShared() [2/2]

NEVER_INLINE SlotVisitor::SharedDrainResult JSC::SlotVisitor::drainFromShared ( SharedDrainMode  sharedDrainMode,
MonotonicTime  timeout = MonotonicTime::infinity() 
)

◆ drainInParallel() [1/2]

SlotVisitor::SharedDrainResult JSC::SlotVisitor::drainInParallel ( MonotonicTime  timeout = MonotonicTime::infinity())

◆ drainInParallel() [2/2]

SharedDrainResult JSC::SlotVisitor::drainInParallel ( MonotonicTime  timeout = MonotonicTime::infinity())

◆ drainInParallelPassively() [1/2]

SlotVisitor::SharedDrainResult JSC::SlotVisitor::drainInParallelPassively ( MonotonicTime  timeout = MonotonicTime::infinity())

◆ drainInParallelPassively() [2/2]

SharedDrainResult JSC::SlotVisitor::drainInParallelPassively ( MonotonicTime  timeout = MonotonicTime::infinity())

◆ dump() [1/2]

void JSC::SlotVisitor::dump ( PrintStream &  out) const

◆ dump() [2/2]

void JSC::SlotVisitor::dump ( PrintStream &  ) const

◆ hasAcknowledgedThatTheMutatorIsResumed() [1/2]

bool JSC::SlotVisitor::hasAcknowledgedThatTheMutatorIsResumed ( ) const

◆ hasAcknowledgedThatTheMutatorIsResumed() [2/2]

bool JSC::SlotVisitor::hasAcknowledgedThatTheMutatorIsResumed ( ) const

◆ heap() [1/2]

Heap * JSC::SlotVisitor::heap ( ) const
inline

◆ heap() [2/2]

Heap* JSC::SlotVisitor::heap ( ) const

◆ isBuildingHeapSnapshot() [1/2]

bool JSC::SlotVisitor::isBuildingHeapSnapshot ( ) const
inline

◆ isBuildingHeapSnapshot() [2/2]

bool JSC::SlotVisitor::isBuildingHeapSnapshot ( ) const
inline

◆ isEmpty() [1/2]

bool JSC::SlotVisitor::isEmpty ( void  )
inline

◆ isEmpty() [2/2]

bool JSC::SlotVisitor::isEmpty ( )
inline

◆ markAuxiliary() [1/2]

void JSC::SlotVisitor::markAuxiliary ( const void base)

◆ markAuxiliary() [2/2]

void JSC::SlotVisitor::markAuxiliary ( const void base)

◆ markingVersion() [1/2]

HeapVersion JSC::SlotVisitor::markingVersion ( ) const
inline

◆ markingVersion() [2/2]

HeapVersion JSC::SlotVisitor::markingVersion ( ) const
inline

◆ mergeIfNecessary() [1/2]

void JSC::SlotVisitor::mergeIfNecessary ( )

◆ mergeIfNecessary() [2/2]

JS_EXPORT_PRIVATE void JSC::SlotVisitor::mergeIfNecessary ( )

◆ mutatorIsStopped() [1/2]

bool JSC::SlotVisitor::mutatorIsStopped ( ) const
inline

◆ mutatorIsStopped() [2/2]

bool JSC::SlotVisitor::mutatorIsStopped ( ) const
inline

◆ mutatorIsStoppedIsUpToDate() [1/2]

bool JSC::SlotVisitor::mutatorIsStoppedIsUpToDate ( ) const

◆ mutatorIsStoppedIsUpToDate() [2/2]

bool JSC::SlotVisitor::mutatorIsStoppedIsUpToDate ( ) const

◆ mutatorMarkStack() [1/4]

MarkStackArray& JSC::SlotVisitor::mutatorMarkStack ( )
inline

◆ mutatorMarkStack() [2/4]

MarkStackArray& JSC::SlotVisitor::mutatorMarkStack ( )
inline

◆ mutatorMarkStack() [3/4]

const MarkStackArray& JSC::SlotVisitor::mutatorMarkStack ( ) const
inline

◆ mutatorMarkStack() [4/4]

const MarkStackArray& JSC::SlotVisitor::mutatorMarkStack ( ) const
inline

◆ optimizeForStoppedMutator() [1/2]

void JSC::SlotVisitor::optimizeForStoppedMutator ( )

◆ optimizeForStoppedMutator() [2/2]

void JSC::SlotVisitor::optimizeForStoppedMutator ( )

◆ performIncrementOfDraining() [1/2]

size_t JSC::SlotVisitor::performIncrementOfDraining ( size_t  bytes)

◆ performIncrementOfDraining() [2/2]

size_t JSC::SlotVisitor::performIncrementOfDraining ( size_t  bytes)

◆ reportExtraMemoryVisited() [1/2]

void JSC::SlotVisitor::reportExtraMemoryVisited ( size_t  size)
inline

◆ reportExtraMemoryVisited() [2/2]

void JSC::SlotVisitor::reportExtraMemoryVisited ( size_t  )

◆ reset() [1/2]

void JSC::SlotVisitor::reset ( )

◆ reset() [2/2]

void JSC::SlotVisitor::reset ( )

◆ rightToRun() [1/2]

Lock& JSC::SlotVisitor::rightToRun ( )
inline

◆ rightToRun() [2/2]

Lock& JSC::SlotVisitor::rightToRun ( )
inline

◆ setIgnoreNewOpaqueRoots() [1/2]

void JSC::SlotVisitor::setIgnoreNewOpaqueRoots ( bool  value)
inline

◆ setIgnoreNewOpaqueRoots() [2/2]

void JSC::SlotVisitor::setIgnoreNewOpaqueRoots ( bool  value)
inline

◆ setMarkedAndAppendToMarkStack()

template<typename ContainerType >
ALWAYS_INLINE void JSC::SlotVisitor::setMarkedAndAppendToMarkStack ( ContainerType &  container,
JSCell cell 
)

◆ updateMutatorIsStopped() [1/4]

void JSC::SlotVisitor::updateMutatorIsStopped ( const AbstractLocker &  )

◆ updateMutatorIsStopped() [2/4]

void JSC::SlotVisitor::updateMutatorIsStopped ( const AbstractLocker &  )

◆ updateMutatorIsStopped() [3/4]

void JSC::SlotVisitor::updateMutatorIsStopped ( )

◆ updateMutatorIsStopped() [4/4]

void JSC::SlotVisitor::updateMutatorIsStopped ( )

◆ visitAsConstraint() [1/2]

void JSC::SlotVisitor::visitAsConstraint ( const JSCell cell)

◆ visitAsConstraint() [2/2]

void JSC::SlotVisitor::visitAsConstraint ( const JSCell )

◆ visitCount() [1/2]

size_t JSC::SlotVisitor::visitCount ( ) const
inline

◆ visitCount() [2/2]

size_t JSC::SlotVisitor::visitCount ( ) const
inline

◆ vm() [1/4]

VM & JSC::SlotVisitor::vm ( )
inline

◆ vm() [2/4]

VM& JSC::SlotVisitor::vm ( )

◆ vm() [3/4]

const VM& JSC::SlotVisitor::vm ( ) const

◆ vm() [4/4]

const VM & JSC::SlotVisitor::vm ( ) const
inline

Friends And Related Function Documentation

◆ Heap

Heap
friend

◆ ParallelModeEnabler

◆ SetCurrentCellScope

Member Data Documentation

◆ m_isCheckingForDefaultMarkViolation

bool JSC::SlotVisitor::m_isCheckingForDefaultMarkViolation

◆ m_isDraining

bool JSC::SlotVisitor::m_isDraining

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