diff options
author | Rodrigo Kumpera <kumpera@gmail.com> | 2014-05-29 21:51:29 -0400 |
---|---|---|
committer | Ivan Maidanski <ivmai@mail.ru> | 2015-06-01 10:02:58 +0300 |
commit | c429e9f5b7cd3aa74049d3d6ed1eb4e81e8dbde7 (patch) | |
tree | 2a9cfd1b8e33de304cc92c265224cb2531d8635e /finalize.c | |
parent | 960f233f3425e152b636cfe221b40fe3d63ece02 (diff) | |
download | bdwgc-c429e9f5b7cd3aa74049d3d6ed1eb4e81e8dbde7.tar.gz |
Implement the finalization extension API.
Diffstat (limited to 'finalize.c')
-rw-r--r-- | finalize.c | 13 |
1 files changed, 13 insertions, 0 deletions
@@ -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; |