GCSIM
Public Member Functions | Private Member Functions | Private Attributes | List of all members
garbage_collector Class Referencefinal

implementation of the mark-sweep gc More...

#include <gc.hpp>

Public Member Functions

 garbage_collector (size_t thread_count=1)
 creates the instance of the garbage collector.
 
 ~garbage_collector ()=default
 deletes the instance of the garbage collector.
 
void collect (root_set_table &root_set, heap &heap_memory) noexcept
 collects the garbage from the heap.
 
void visit (thread_local_stack &stack) override final
 marks the objects on the stack.
 
void visit (global_root &global) override final
 marks the global object.
 
void visit (register_root &reg) override final
 marks the register object.
 
- Public Member Functions inherited from gc_visitor
virtual ~gc_visitor ()=default
 deletes the gc_visitor object
 

Private Member Functions

void mark (root_set_table &root_set) noexcept
 marks all objects that are reachable from the root-set-table.
 
void sweep_segment (segment &seg) noexcept
 sweeps objects from a segment.
 
void sweep (heap &heap_memory) noexcept
 sweeps the unmarked objects from heap.
 

Private Attributes

thread_pool gc_thread_pool
 thread pool for concurrent marking and sweeping.
 

Detailed Description

implementation of the mark-sweep gc

Constructor & Destructor Documentation

◆ garbage_collector()

garbage_collector::garbage_collector ( size_t  thread_count = 1)

creates the instance of the garbage collector.

Parameters
thread_count- number of threads in a thread pool, defaults to 1.

◆ ~garbage_collector()

garbage_collector::~garbage_collector ( )
default

deletes the instance of the garbage collector.

Member Function Documentation

◆ collect()

void garbage_collector::collect ( root_set_table root_set,
heap heap_memory 
)
noexcept

collects the garbage from the heap.

Parameters
root_set- reference to a root-set-table.
heap_memory- reference to a heap.

◆ mark()

void garbage_collector::mark ( root_set_table root_set)
privatenoexcept

marks all objects that are reachable from the root-set-table.

Parameters
root_set- reference to a root-set-table

◆ sweep()

void garbage_collector::sweep ( heap heap_memory)
privatenoexcept

sweeps the unmarked objects from heap.

Parameters
heap_memory- reference to a heap.

◆ sweep_segment()

void garbage_collector::sweep_segment ( segment seg)
privatenoexcept

sweeps objects from a segment.

Parameters
seg- reference to a segment.

◆ visit() [1/3]

void garbage_collector::visit ( global_root global)
finaloverridevirtual

marks the global object.

Parameters
global- reference to a global root.

Implements gc_visitor.

◆ visit() [2/3]

void garbage_collector::visit ( register_root reg)
finaloverridevirtual

marks the register object.

Parameters
reg- reference to a register root.

Implements gc_visitor.

◆ visit() [3/3]

void garbage_collector::visit ( thread_local_stack stack)
finaloverridevirtual

marks the objects on the stack.

Parameters
stack- reference to a thread local stack.

Implements gc_visitor.

Member Data Documentation

◆ gc_thread_pool

thread_pool garbage_collector::gc_thread_pool
private

thread pool for concurrent marking and sweeping.


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