v8  9.4.146 (node 16.13.0)
V8 is Google's open source JavaScript engine
EmbedderHeapTracer Class Referenceabstract

#include <v8.h>

Collaboration diagram for EmbedderHeapTracer:

Data Structures

class  TracedGlobalHandleVisitor
struct  TraceSummary

Public Types

enum  TraceFlags : uint64_t { kNoFlags = 0 , kReduceMemory = 1 << 0 , kForced = 1 << 2 }
using EmbedderStackState = cppgc::EmbedderStackState

Public Member Functions

virtual ~EmbedderHeapTracer ()=default
void IterateTracedGlobalHandles (TracedGlobalHandleVisitor *visitor)
void SetStackStart (void *stack_start)
 V8_DEPRECATE_SOON ("This call only optimized internal caches which V8 is able to figure out " "on its own now.") void NotifyEmptyEmbedderStack()
virtual void RegisterV8References (const std::vector< std::pair< void *, void * > > &embedder_fields)=0
void RegisterEmbedderReference (const BasicTracedReference< v8::Data > &ref)
virtual void TracePrologue (TraceFlags flags)
virtual bool AdvanceTracing (double deadline_in_ms)=0
virtual bool IsTracingDone ()=0
virtual void TraceEpilogue (TraceSummary *trace_summary)
virtual void EnterFinalPause (EmbedderStackState stack_state)=0
void FinalizeTracing ()
virtual bool IsRootForNonTracingGC (const v8::TracedReference< v8::Value > &handle)
virtual bool IsRootForNonTracingGC (const v8::TracedGlobal< v8::Value > &handle)
virtual void ResetHandleInNonTracingGC (const v8::TracedReference< v8::Value > &handle)
void GarbageCollectionForTesting (EmbedderStackState stack_state)
void IncreaseAllocatedSize (size_t bytes)
void DecreaseAllocatedSize (size_t bytes)
v8::Isolateisolate () const

Protected Attributes

v8::Isolateisolate_ = nullptr


class internal::LocalEmbedderHeapTracer

Detailed Description

Interface for tracing through the embedder heap. During a V8 garbage collection, V8 collects hidden fields of all potential wrappers, and at the end of its marking phase iterates the collection and asks the embedder to trace through its heap and use reporter to report each JavaScript object reachable from any of the given wrappers.

Definition at line 8037 of file v8.h.

Member Typedef Documentation

◆ EmbedderStackState

Definition at line 8039 of file v8.h.

Member Enumeration Documentation

◆ TraceFlags

enum TraceFlags : uint64_t

Definition at line 8041 of file v8.h.

Constructor & Destructor Documentation

◆ ~EmbedderHeapTracer()

virtual ~EmbedderHeapTracer ( )

Member Function Documentation

◆ AdvanceTracing()

virtual bool AdvanceTracing ( double  deadline_in_ms)
pure virtual

Called to advance tracing in the embedder.

The embedder is expected to trace its heap starting from wrappers reported by RegisterV8References method, and report back all reachable wrappers. Furthermore, the embedder is expected to stop tracing by the given deadline. A deadline of infinity means that tracing should be finished.

Returns |true| if tracing is done, and false otherwise.

◆ DecreaseAllocatedSize()

void DecreaseAllocatedSize ( size_t  bytes)

◆ EnterFinalPause()

virtual void EnterFinalPause ( EmbedderStackState  stack_state)
pure virtual

Called upon entering the final marking pause. No more incremental marking steps will follow this call.

◆ FinalizeTracing()

void FinalizeTracing ( )

◆ GarbageCollectionForTesting()

void GarbageCollectionForTesting ( EmbedderStackState  stack_state)

◆ IncreaseAllocatedSize()

void IncreaseAllocatedSize ( size_t  bytes)

◆ isolate()

v8::Isolate* isolate ( ) const

Definition at line 8190 of file v8.h.

References EmbedderHeapTracer::isolate_.

◆ IsRootForNonTracingGC() [1/2]

virtual bool IsRootForNonTracingGC ( const v8::TracedGlobal< v8::Value > &  handle)

◆ IsRootForNonTracingGC() [2/2]

virtual bool IsRootForNonTracingGC ( const v8::TracedReference< v8::Value > &  handle)

See documentation on EmbedderRootsHandler.

◆ IsTracingDone()

virtual bool IsTracingDone ( )
pure virtual

◆ IterateTracedGlobalHandles()

void IterateTracedGlobalHandles ( TracedGlobalHandleVisitor visitor)

Iterates all TracedGlobal handles created for the v8::Isolate the tracer is attached to.

◆ RegisterEmbedderReference()

void RegisterEmbedderReference ( const BasicTracedReference< v8::Data > &  ref)

◆ RegisterV8References()

virtual void RegisterV8References ( const std::vector< std::pair< void *, void * > > &  embedder_fields)
pure virtual

Called by v8 to register internal fields of found wrappers.

The embedder is expected to store them somewhere and trace reachable wrappers from them when called through |AdvanceTracing|.

◆ ResetHandleInNonTracingGC()

virtual void ResetHandleInNonTracingGC ( const v8::TracedReference< v8::Value > &  handle)

See documentation on EmbedderRootsHandler.

◆ SetStackStart()

void SetStackStart ( void *  stack_start)

Called by the embedder to set the start of the stack which is e.g. used by V8 to determine whether handles are used from stack or heap.

◆ TraceEpilogue()

virtual void TraceEpilogue ( TraceSummary trace_summary)

Called at the end of a GC cycle.

Note that allocation is not allowed within |TraceEpilogue|. Can be overriden to fill a |TraceSummary| that is used by V8 to schedule future garbage collections.

Definition at line 8138 of file v8.h.

◆ TracePrologue()

virtual void TracePrologue ( TraceFlags  flags)

Called at the beginning of a GC cycle.

Definition at line 8111 of file v8.h.


V8_DEPRECATE_SOON ( "This call only optimized internal caches which V8 is able to figure out " "on its own now."  )

Called by the embedder to notify V8 of an empty execution stack.

Friends And Related Function Documentation

◆ internal::LocalEmbedderHeapTracer

friend class internal::LocalEmbedderHeapTracer

Definition at line 8195 of file v8.h.

Field Documentation

◆ isolate_

v8::Isolate* isolate_ = nullptr

Definition at line 8193 of file v8.h.

Referenced by EmbedderHeapTracer::isolate().

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