summaryrefslogtreecommitdiff
path: root/thread_local_alloc.c
diff options
context:
space:
mode:
authorPetter Urkedal <paurkedal@gmail.com>2011-09-13 23:28:27 +0200
committerIvan Maidanski <ivmai@mail.ru>2011-09-30 17:35:19 +0400
commit3883051d9fd0fc5aa573b5ded483ebd4e5adeb48 (patch)
treeac5226f4dce55e382bc8770f50511a81c74e9af4 /thread_local_alloc.c
parent0b30ed5b081184a3f5624096dbcb02e97003eeee (diff)
downloadbdwgc-3883051d9fd0fc5aa573b5ded483ebd4e5adeb48.tar.gz
Fix issues proposed in Ivan's previous commit, etc.
* disclaim.c -> {finalized_mlc.c, misc.c}: Move low-level code to misc.c and the finalized object-kind to finalized_mlc.c. * Makefile.am: Update accordingly. * reclaim.c: Condition #include "gc_disclaim.h" and remove "register". * include/gc_disclaim.h, include/private/gc_priv.h, finalized_mlc.c, misc.c: Add GC_API, GC_CALL, and GC_CALLBACK. Use typedefs for function pointers. * tests/disclaim_test.c, tests/disclaim_bench.c: Fix portability and other issues. * include/gc_disclaim.h: Forward declare ... * finalized_mlc.c: ... and export GC_finalized_objfreelist. * thread_local_alloc.c (GC_destroy_thread_local): Return finalized freelists though the same global. * include/private/thread_local_alloc.h: Tweak (move array above comment). * Makefile.dj, NT_MAKEFILE, NT_STATIC_THREADS_MAKEFILE, NT_X64_STATIC_THREADS_MAKEFILE, NT_X64_THREADS_MAKEFILE, gc.mak, windows-untested/vc60/gc.dsp, windows-untested/vc70/gc.vcproj, windows-untested/vc71/gc.vcproj: Add include/gc_disclaim.h to various build systems. (Untested.)
Diffstat (limited to 'thread_local_alloc.c')
-rw-r--r--thread_local_alloc.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/thread_local_alloc.c b/thread_local_alloc.c
index 57b34443..c5e8f66d 100644
--- a/thread_local_alloc.c
+++ b/thread_local_alloc.c
@@ -129,6 +129,10 @@ GC_INNER void GC_destroy_thread_local(GC_tlfs p)
# ifdef GC_GCJ_SUPPORT
return_freelists(p -> gcj_freelists, (void **)GC_gcjobjfreelist);
# endif
+# ifdef ENABLE_DISCLAIM
+ return_freelists(p -> finalized_freelists,
+ (void **)GC_finalized_objfreelist);
+# endif
}
#ifdef GC_ASSERTIONS
@@ -290,7 +294,7 @@ GC_INNER void GC_mark_thread_local_fls_for(GC_tlfs p)
q = p -> finalized_freelists[j];
if ((word)q > HBLKSIZE)
GC_set_fl_marks(q);
-# endif
+# endif /* ENABLE_DISCLAIM */
}
}
@@ -314,7 +318,7 @@ GC_INNER void GC_mark_thread_local_fls_for(GC_tlfs p)
q = p -> finalized_freelists[j];
if ((word)q > HBLKSIZE)
GC_check_fl_marks(q);
-# endif
+# endif /* ENABLE_DISCLAIM */
}
}
#endif /* GC_ASSERTIONS */