1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-29 22:40:34 +02:00

Add benchmark for finalizers

Doesn't quite work on BDW yet.
This commit is contained in:
Andy Wingo 2024-07-24 09:51:56 +02:00
parent f6057184e1
commit 068e0e5cdf
8 changed files with 352 additions and 8 deletions

View file

@ -219,14 +219,14 @@ void gc_finalizer_attach(struct gc_mutator *mut, struct gc_finalizer *finalizer,
void *prev_data = NULL;
gc_finalizer_init_internal(finalizer, object, closure);
gc_finalizer_externally_activated(finalizer);
GC_REGISTER_FINALIZER_NO_ORDER (gc_ref_heap_object(object), finalize_object,
finalizer, &prev, &prev_data);
GC_REGISTER_FINALIZER_NO_ORDER(gc_ref_heap_object(object), finalize_object,
finalizer, &prev, &prev_data);
// FIXME: Allow multiple finalizers per object.
GC_ASSERT(prev == NULL);
GC_ASSERT(prev_data == NULL);
}
struct gc_finalizer* gc_finalizer_pop(struct gc_mutator *mut) {
struct gc_finalizer* gc_pop_finalizable(struct gc_mutator *mut) {
GC_invoke_finalizers();
return gc_finalizer_state_pop(mut->heap->finalizer_state);
}