namespace factor { struct to_tenured_policy { factor_vm *parent; tenured_space *tenured; explicit to_tenured_policy(factor_vm *parent_) : parent(parent_), tenured(parent->data->tenured) {} bool should_copy_p(object *untagged) { return !tenured->contains_p(untagged); } void promoted_object(object *obj) { parent->mark_stack.push_back((cell)obj); } void visited_object(object *obj) {} }; struct to_tenured_collector : collector<tenured_space,to_tenured_policy> { explicit to_tenured_collector(factor_vm *parent_); void tenure_reachable_objects(); }; }