VM: simplified logic in data_heap_checker
parent
6dd2fe31b6
commit
bf7161604e
|
@ -58,21 +58,17 @@ struct slot_checker {
|
||||||
}
|
}
|
||||||
|
|
||||||
void operator()(cell* slot_ptr) {
|
void operator()(cell* slot_ptr) {
|
||||||
if (!immediate_p(*slot_ptr)) {
|
if (immediate_p(*slot_ptr))
|
||||||
generation target = generation_of(parent, untag<object>(*slot_ptr));
|
return;
|
||||||
switch (gen) {
|
|
||||||
case nursery_generation:
|
generation target = generation_of(parent, untag<object>(*slot_ptr));
|
||||||
break;
|
if (gen == aging_generation && target == nursery_generation) {
|
||||||
case aging_generation:
|
check_write_barrier(slot_ptr, target, card_points_to_nursery);
|
||||||
if (target == nursery_generation)
|
} else if (gen == tenured_generation) {
|
||||||
check_write_barrier(slot_ptr, target, card_points_to_nursery);
|
if (target == nursery_generation) {
|
||||||
break;
|
check_write_barrier(slot_ptr, target, card_points_to_nursery);
|
||||||
case tenured_generation:
|
} else if (target == aging_generation) {
|
||||||
if (target == nursery_generation)
|
check_write_barrier(slot_ptr, target, card_points_to_aging);
|
||||||
check_write_barrier(slot_ptr, target, card_points_to_nursery);
|
|
||||||
else if (target == aging_generation)
|
|
||||||
check_write_barrier(slot_ptr, target, card_points_to_aging);
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -81,10 +77,11 @@ struct slot_checker {
|
||||||
struct object_checker {
|
struct object_checker {
|
||||||
factor_vm* parent;
|
factor_vm* parent;
|
||||||
|
|
||||||
explicit object_checker(factor_vm* parent) : parent(parent) {}
|
object_checker(factor_vm* parent) : parent(parent) {}
|
||||||
|
|
||||||
void operator()(object* obj) {
|
void operator()(object* obj) {
|
||||||
slot_checker checker(parent, obj, generation_of(parent, obj));
|
generation obj_gen = generation_of(parent, obj);
|
||||||
|
slot_checker checker(parent, obj, obj_gen);
|
||||||
obj->each_slot(checker);
|
obj->each_slot(checker);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue