summaryrefslogtreecommitdiff
path: root/fnlz_mlc.c
diff options
context:
space:
mode:
authorIvan Maidanski <ivmai@mail.ru>2012-01-25 19:12:36 +0400
committerIvan Maidanski <ivmai@mail.ru>2012-01-25 19:12:36 +0400
commitbb47cb244f2aeeccca704f3861efe227123b2e0c (patch)
tree96ac153852f806f8b0bceb85aabfb95d7b646e5f /fnlz_mlc.c
parentc25520ae92f034a05912c8c14248c8fb3c174f1c (diff)
downloadbdwgc-bb47cb244f2aeeccca704f3861efe227123b2e0c.tar.gz
Move GC_register_disclaim_proc to fnlz_mlc
* misc.c (GC_register_disclaim_proc): Move definition to fnlz_mlc.c (to minimize linked code size in case "disclaim" finalization is unused). * misc.c: Do not include gc_disclaim.h. * fnlz_mlc.c (GC_register_disclaim_proc): Add GC_ASSERT for kind passed by the client.
Diffstat (limited to 'fnlz_mlc.c')
-rw-r--r--fnlz_mlc.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/fnlz_mlc.c b/fnlz_mlc.c
index 8626b0f3..b43569a0 100644
--- a/fnlz_mlc.c
+++ b/fnlz_mlc.c
@@ -71,6 +71,16 @@ GC_API void GC_CALL GC_init_finalized_malloc(void)
UNLOCK();
}
+GC_API void GC_CALL GC_register_disclaim_proc(int kind, GC_disclaim_proc proc,
+ void *cd,
+ int mark_unconditionally)
+{
+ GC_ASSERT((unsigned)kind < MAXOBJKINDS);
+ GC_obj_kinds[kind].ok_disclaim_proc = proc;
+ GC_obj_kinds[kind].ok_disclaim_cd = cd;
+ GC_obj_kinds[kind].ok_mark_unconditionally = (GC_bool)mark_unconditionally;
+}
+
#ifdef THREAD_LOCAL_ALLOC
STATIC void * GC_core_finalized_malloc(size_t lb,
const struct GC_finalizer_closure *fclos)