X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=libgc%2Ffinalize.c;h=5626e8721370071bbefdbfb1710911b86a17bb50;hb=c35541d674a8805722840f7c5762f6ceee1c33b5;hp=91f6970180cd26352a864464a0ac44184d2a07ce;hpb=ecf3c6499ab8b39f123d2e69f09e42508336b7ae;p=mono.git diff --git a/libgc/finalize.c b/libgc/finalize.c index 91f6970180c..5626e872137 100644 --- a/libgc/finalize.c +++ b/libgc/finalize.c @@ -366,6 +366,15 @@ GC_process_togglerefs (void) GC_toggleref_array_size = w; } +/* Finalizer proc support */ +static void (*GC_object_finalized_proc) (GC_PTR obj); + +void +GC_set_finalizer_notify_proc (void (*proc) (GC_PTR obj)) +{ + GC_object_finalized_proc = proc; +} + static void push_and_mark_object (GC_PTR p) { @@ -877,6 +886,10 @@ void GC_finalize() fo_set_next(prev_fo, next_fo); } GC_fo_entries--; + + if (GC_object_finalized_proc) + GC_object_finalized_proc (real_ptr); + /* Add to list of objects awaiting finalization. */ fo_set_next(curr_fo, GC_finalize_now); GC_finalize_now = curr_fo;