v8  10.1.124 (node 18.2.0)
V8 is Google's open source JavaScript engine
Heap Class Reference

#include <heap.h>

Data Structures

struct  HeapOptions
 
struct  ResourceConstraints
 

Public Types

enum class  StackSupport : uint8_t { kSupportsConservativeStackScan , kNoConservativeStackScan }
 
enum class  MarkingType : uint8_t { kAtomic , kIncremental , kIncrementalAndConcurrent }
 
enum class  SweepingType : uint8_t { kAtomic , kIncremental , kIncrementalAndConcurrent }
 
using StackState = EmbedderStackState
 

Public Member Functions

virtual ~Heap ()=default
 
void ForceGarbageCollectionSlow (const char *source, const char *reason, StackState stack_state=StackState::kMayContainHeapPointers)
 
AllocationHandle & GetAllocationHandle ()
 
HeapHandle & GetHeapHandle ()
 

Static Public Member Functions

static std::unique_ptr< HeapCreate (std::shared_ptr< Platform > platform, HeapOptions options=HeapOptions::Default())
 

Friends

class internal::Heap
 

Detailed Description

Definition at line 39 of file heap.h.

Member Typedef Documentation

◆ StackState

Specifies the stack state the embedder is in.

Definition at line 44 of file heap.h.

Member Enumeration Documentation

◆ MarkingType

enum MarkingType : uint8_t
strong

Specifies supported marking types

Enumerator
kAtomic 

Atomic stop-the-world marking. This option does not require any write barriers but is the most intrusive in terms of jank.

kIncremental 

Incremental marking interleaves marking with the rest of the application workload on the same thread.

kIncrementalAndConcurrent 

Incremental and concurrent marking.

Definition at line 64 of file heap.h.

◆ StackSupport

enum StackSupport : uint8_t
strong

Specifies whether conservative stack scanning is supported.

Enumerator
kSupportsConservativeStackScan 

Conservative stack scan is supported.

kNoConservativeStackScan 

Conservative stack scan is not supported. Embedders may use this option when using custom infrastructure that is unsupported by the library.

Definition at line 49 of file heap.h.

◆ SweepingType

enum SweepingType : uint8_t
strong

Specifies supported sweeping types

Enumerator
kAtomic 

Atomic stop-the-world sweeping. All of sweeping is performed at once.

kIncremental 

Incremental sweeping interleaves sweeping with the rest of the application workload on the same thread.

kIncrementalAndConcurrent 

Incremental and concurrent sweeping. Sweeping is split and interleaved with the rest of the application.

Definition at line 84 of file heap.h.

Constructor & Destructor Documentation

◆ ~Heap()

virtual ~Heap ( )
virtualdefault

Member Function Documentation

◆ Create()

static std::unique_ptr<Heap> Create ( std::shared_ptr< Platform platform,
HeapOptions  options = HeapOptions::Default() 
)
static

Creates a new heap that can be used for object allocation.

Parameters
platformimplemented and provided by the embedder.
optionsHeapOptions specifying various properties for the Heap.
Returns
a new Heap instance.

◆ ForceGarbageCollectionSlow()

void ForceGarbageCollectionSlow ( const char *  source,
const char *  reason,
StackState  stack_state = StackState::kMayContainHeapPointers 
)

Forces garbage collection.

Parameters
sourceString specifying the source (or caller) triggering a forced garbage collection.
reasonString specifying the reason for the forced garbage collection.
stack_stateThe embedder stack state, see StackState.

◆ GetAllocationHandle()

AllocationHandle& GetAllocationHandle ( )
Returns
the opaque handle for allocating objects using MakeGarbageCollected().

◆ GetHeapHandle()

HeapHandle& GetHeapHandle ( )
Returns
the opaque heap handle which may be used to refer to this heap in other APIs. Valid as long as the underlying Heap is alive.

Friends And Related Function Documentation

◆ internal::Heap

friend class internal::Heap
friend

Definition at line 201 of file heap.h.


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