struct aging_space : bump_allocator<object> {
object_start_map starts;
- explicit aging_space(cell size, cell start)
+ aging_space(cell size, cell start)
: bump_allocator<object>(size, start), starts(size, start) {}
object* allot(cell size) {
cell count;
data_root<array> elements;
- explicit growable_array(factor_vm* parent, cell capacity = 10)
+ growable_array(factor_vm* parent, cell capacity = 10)
: count(0),
elements(parent->allot_array(capacity, false_object), parent) {}
cell end;
cell size;
- explicit bump_allocator(cell size_, cell start_)
+ bump_allocator(cell size_, cell start_)
: here(start_), start(start_), end(start_ + size_), size(size_) {}
bool contains_p(Block* block) { return ((cell) block - start) < size; }
cell count;
data_root<byte_array> elements;
- explicit growable_byte_array(factor_vm* parent, cell capacity = 40)
+ growable_byte_array(factor_vm* parent, cell capacity = 40)
: count(0), elements(parent->allot_byte_array(capacity), parent) {}
void grow_bytes(cell len);
cell here;
factor_vm* parent;
- explicit callback_heap(cell size, factor_vm* parent);
+ callback_heap(cell size, factor_vm* parent);
~callback_heap();
void* callback_entry_point(code_block* stub) {
factor_vm* parent;
Fixup fixup;
- explicit code_block_visitor(factor_vm* parent_, Fixup fixup_)
+ code_block_visitor(factor_vm* parent_, Fixup fixup_)
: parent(parent_), fixup(fixup_) {}
code_block* visit_code_block(code_block* compiled);
factor_vm* parent;
Fixup fixup;
- explicit call_frame_code_block_visitor(factor_vm* parent_, Fixup fixup_)
+ call_frame_code_block_visitor(factor_vm* parent_, Fixup fixup_)
: parent(parent_), fixup(fixup_) {}
void operator()(void* frame_top, cell frame_size, code_block* owner,
cell literals;
cell literal_index;
- explicit initial_code_block_visitor(factor_vm* parent_, cell literals_)
+ initial_code_block_visitor(factor_vm* parent_, cell literals_)
: parent(parent_), literals(literals_), literal_index(0) {}
cell next_literal() {
}
struct stack_trace_stripper {
- explicit stack_trace_stripper() {}
+ stack_trace_stripper() {}
void operator()(code_block* compiled, cell size) {
compiled->owner = false_object;
void push() { parent->code_roots.push_back(this); }
- explicit code_root(cell value_, factor_vm* parent_)
+ code_root(cell value_, factor_vm* parent_)
: value(value_), valid(true), parent(parent_) {
push();
}
Policy policy;
code_heap* code;
- explicit gc_workhorse(factor_vm* parent_, TargetGeneration* target_,
- Policy policy_)
+ gc_workhorse(factor_vm* parent_, TargetGeneration* target_, Policy policy_)
: parent(parent_), target(target_), policy(policy_), code(parent->code) {}
object* resolve_forwarding(object* untagged) {
};
struct full_unmarker {
- explicit full_unmarker() {}
+ full_unmarker() {}
void operator()(card* ptr) { *ptr = 0; }
};
cell decks_scanned;
cell code_blocks_scanned;
- explicit collector(factor_vm* parent_, TargetGeneration* target_,
- Policy policy_)
+ collector(factor_vm* parent_, TargetGeneration* target_, Policy policy_)
: parent(parent_),
data(parent_->data),
code(parent_->code),
const object** data_finger;
const code_block** code_finger;
- explicit compaction_fixup(mark_bits<object>* data_forwarding_map_,
- mark_bits<code_block>* code_forwarding_map_,
- const object** data_finger_,
- const code_block** code_finger_)
+ compaction_fixup(mark_bits<object>* data_forwarding_map_,
+ mark_bits<code_block>* code_forwarding_map_,
+ const object** data_finger_,
+ const code_block** code_finger_)
: data_forwarding_map(data_forwarding_map_),
code_forwarding_map(code_forwarding_map_),
data_finger(data_finger_),
compaction_fixup fixup;
object_start_map* starts;
- explicit object_compaction_updater(factor_vm* parent_,
- compaction_fixup fixup_)
+ object_compaction_updater(factor_vm* parent_, compaction_fixup fixup_)
: parent(parent_),
fixup(fixup_),
starts(&parent->data->tenured->starts) {}
code_block* old_address;
Fixup fixup;
- explicit code_block_compaction_relocation_visitor(factor_vm* parent_,
- code_block* old_address_,
- Fixup fixup_)
+ code_block_compaction_relocation_visitor(factor_vm* parent_,
+ code_block* old_address_,
+ Fixup fixup_)
: parent(parent_), old_address(old_address_), fixup(fixup_) {}
void operator()(instruction_operand op) {
slot_visitor<Fixup> data_forwarder;
code_block_visitor<Fixup> code_forwarder;
- explicit code_block_compaction_updater(
+ code_block_compaction_updater(
factor_vm* parent_, Fixup fixup_, slot_visitor<Fixup> data_forwarder_,
code_block_visitor<Fixup> code_forwarder_)
: parent(parent_),
mark_bits<code_block>* code_forwarding_map;
const code_block** code_finger;
- explicit code_compaction_fixup(mark_bits<code_block>* code_forwarding_map_,
- const code_block** code_finger_)
+ code_compaction_fixup(mark_bits<code_block>* code_forwarding_map_,
+ const code_block** code_finger_)
: code_forwarding_map(code_forwarding_map_), code_finger(code_finger_) {}
object* fixup_data(object* obj) { return obj; }
struct copying_collector : collector<TargetGeneration, Policy> {
cell scan;
- explicit copying_collector(factor_vm* parent_, TargetGeneration* target_,
- Policy policy_)
+ copying_collector(factor_vm* parent_, TargetGeneration* target_,
+ Policy policy_)
: collector<TargetGeneration, Policy>(parent_, target_, policy_),
scan(target_->here) {}
card_deck* decks;
card_deck* decks_end;
- explicit data_heap(cell young_size, cell aging_size, cell tenured_size);
+ data_heap(cell young_size, cell aging_size, cell tenured_size);
~data_heap();
data_heap* grow(cell requested_size);
template <typename Generation> void clear_cards(Generation* gen);
object* obj;
generation gen;
- explicit slot_checker(factor_vm* parent_, object* obj_, generation gen_)
+ slot_checker(factor_vm* parent_, object* obj_, generation gen_)
: parent(parent_), obj(obj_), gen(gen_) {}
void check_write_barrier(cell* slot_ptr, generation target, char mask) {
parent->data_roots.push_back(data_root_range(&this->value_, 1));
}
- explicit data_root(cell value_, factor_vm* parent_)
+ data_root(cell value_, factor_vm* parent_)
: tagged<Type>(value_), parent(parent_) {
push();
}
- explicit data_root(Type* value_, factor_vm* parent_)
+ data_root(Type* value_, factor_vm* parent_)
: tagged<Type>(value_), parent(parent_) {
push();
}
factor_vm* parent;
cell type;
- explicit object_dumper(factor_vm* parent_, cell type_)
+ object_dumper(factor_vm* parent_, cell type_)
: parent(parent_), type(type_) {}
void operator()(object* obj) {
object* obj;
factor_vm* parent;
- explicit find_data_reference_slot_visitor(cell look_for_, object* obj_,
- factor_vm* parent_)
+ find_data_reference_slot_visitor(cell look_for_, object* obj_,
+ factor_vm* parent_)
: look_for(look_for_), obj(obj_), parent(parent_) {}
void operator()(cell* scan) {
object* obj;
factor_vm* parent;
- explicit dump_edges_slot_visitor(cell, object* obj_, factor_vm* parent_)
+ dump_edges_slot_visitor(cell, object* obj_, factor_vm* parent_)
: obj(obj_), parent(parent_) {}
void operator()(cell* scan) {
cell look_for;
factor_vm* parent;
- explicit data_reference_object_visitor(cell look_for_, factor_vm* parent_)
+ data_reference_object_visitor(cell look_for_, factor_vm* parent_)
: look_for(look_for_), parent(parent_) {}
void operator()(object* obj) {
free_list free_blocks;
mark_bits<Block> state;
- explicit free_list_allocator(cell size, cell start);
+ free_list_allocator(cell size, cell start);
void initial_free_list(cell occupied);
bool contains_p(Block* block);
Block* first_block();
Iterator& iter;
const Block** finger;
- explicit heap_compactor(mark_bits<Block>* state_, Block* address_,
- Iterator& iter_, const Block** finger_)
+ heap_compactor(mark_bits<Block>* state_, Block* address_,
+ Iterator& iter_, const Block** finger_)
: state(state_), address((char*)address_), iter(iter_), finger(finger_) {}
void operator()(Block* block, cell size) {
factor_vm* parent;
context* ctx;
- explicit call_frame_scrubber(factor_vm* parent_, context* ctx_)
+ call_frame_scrubber(factor_vm* parent_, context* ctx_)
: parent(parent_), ctx(ctx_) {}
void operator()(void* frame_top, cell frame_size, code_block* owner,
u64 start_time;
gc_event* event;
- explicit gc_state(gc_op op_, factor_vm* parent);
+ gc_state(gc_op op_, factor_vm* parent);
~gc_state();
void start_again(gc_op op_, factor_vm* parent);
};
cell data_offset;
cell code_offset;
- explicit startup_fixup(cell data_offset_, cell code_offset_)
+ startup_fixup(cell data_offset_, cell code_offset_)
: data_offset(data_offset_), code_offset(code_offset_) {}
object* fixup_data(object* obj) {
struct inline_cache_jit : public jit {
fixnum index;
- explicit inline_cache_jit(cell generic_word_, factor_vm* vm)
+ inline_cache_jit(cell generic_word_, factor_vm* vm)
: jit(code_block_pic, generic_word_, vm) {}
;
cell offset;
factor_vm* parent;
- explicit jit(code_block_type type, cell owner, factor_vm* parent);
+ jit(code_block_type type, cell owner, factor_vm* parent);
~jit();
void compute_position(cell offset);
cell* start;
cell len;
- explicit data_root_range(cell* start_, cell len_)
+ data_root_range(cell* start_, cell len_)
: start(start_), len(len_) {}
};
void clear_forwarding() { memset(forwarding, 0, bits_size * sizeof(cell)); }
- explicit mark_bits(cell size_, cell start_)
+ mark_bits(cell size_, cell start_)
: size(size_),
start(start_),
bits_size(size / data_alignment / mark_bits_granularity),
namespace factor {
struct nursery_space : bump_allocator<object> {
- explicit nursery_space(cell size, cell start)
+ nursery_space(cell size, cell start)
: bump_allocator<object>(size, start) {}
};
card* object_start_offsets;
card* object_start_offsets_end;
- explicit object_start_map(cell size_, cell start_);
+ object_start_map(cell size_, cell start_);
~object_start_map();
cell first_object_in_card(cell card_index);
struct slot_become_fixup : no_fixup {
std::map<object*, object*>* become_map;
- explicit slot_become_fixup(std::map<object*, object*>* become_map_)
+ slot_become_fixup(std::map<object*, object*>* become_map_)
: become_map(become_map_) {}
object* fixup_data(object* old) {
data_root<array> elements;
bool compiling, relocate;
- explicit quotation_jit(cell owner, bool compiling_, bool relocate_,
- factor_vm* vm)
+ quotation_jit(cell owner, bool compiling_, bool relocate_, factor_vm* vm)
: jit(code_block_unoptimized, owner, vm),
elements(false_object, vm),
compiling(compiling_),
cell size;
cell end;
- explicit segment(cell size, bool executable_p);
+ segment(cell size, bool executable_p);
~segment();
bool underflow_p(cell addr) {
factor_vm* parent;
Fixup fixup;
- explicit slot_visitor<Fixup>(factor_vm* parent_, Fixup fixup_)
+ slot_visitor<Fixup>(factor_vm* parent_, Fixup fixup_)
: parent(parent_), fixup(fixup_) {}
cell visit_pointer(cell pointer);
callback_heap* callbacks;
slot_visitor<Fixup>* visitor;
- explicit callback_slot_visitor(callback_heap* callbacks_,
- slot_visitor<Fixup>* visitor_)
+ callback_slot_visitor(callback_heap* callbacks_,
+ slot_visitor<Fixup>* visitor_)
: callbacks(callbacks_), visitor(visitor_) {}
void operator()(code_block* stub) { visitor->visit_handle(&stub->owner); }
factor_vm* parent;
slot_visitor<Fixup>* visitor;
- explicit call_frame_slot_visitor(factor_vm* parent_,
- slot_visitor<Fixup>* visitor_)
+ call_frame_slot_visitor(factor_vm* parent_,
+ slot_visitor<Fixup>* visitor_)
: parent(parent_), visitor(visitor_) {}
/*
struct tenured_space : free_list_allocator<object> {
object_start_map starts;
- explicit tenured_space(cell size, cell start)
+ tenured_space(cell size, cell start)
: free_list_allocator<object>(size, start), starts(size, start) {}
object* allot(cell size) {