Exemple #1
0
  object* allot(cell size) {
    if (here + size > end)
      return NULL;

    object* obj = bump_allocator::allot(size);
    starts.record_object_start_offset(obj);
    return obj;
  }
Exemple #2
0
 object* allot(cell size) {
   object* obj = free_list_allocator<object>::allot(size);
   if (obj) {
     starts.record_object_start_offset(obj);
     return obj;
   }
   return NULL;
 }
Exemple #3
0
	void operator()(object *old_address, object *new_address, cell size)
	{
		slot_visitor<compaction_fixup> slot_forwarder(parent,fixup);
		slot_forwarder.visit_slots(new_address);

		code_block_visitor<compaction_fixup> code_forwarder(parent,fixup);
		code_forwarder.visit_object_code_block(new_address);

		starts->record_object_start_offset(new_address);
	}
Exemple #4
0
	void sweep()
	{
		free_list_allocator<object>::sweep();
		starts.update_for_sweep(&this->state);
	}