return stub;
}
+struct callback_updater {
+ callback_heap *callbacks;
+
+ explicit callback_updater(callback_heap *callbacks_) : callbacks(callbacks_) {}
+
+ void operator()(code_block *stub)
+ {
+ callbacks->update(stub);
+ }
+};
+
+void callback_heap::update()
+{
+ callback_updater updater(this);
+ each_callback(updater);
+}
+
void factor_vm::primitive_callback()
{
tagged<word> w(dpop());
void update(code_block *stub);
code_block *add(cell owner);
+ void update();
+
code_block *next(code_block *stub)
{
return (code_block *)((cell)stub + stub->size());
}
update_code_roots_for_compaction();
+ callbacks->update();
current_gc->event->ended_compaction();
}
code->allocator->compact(code_block_updater,code_block_sizer);
update_code_roots_for_compaction();
+ callbacks->update();
}
void factor_vm::collect_compact(bool trace_contexts_p)
void operator()(code_block *stub)
{
visitor->visit_handle(&stub->owner);
- callbacks->update(stub);
}
};