]> granicus.if.org Git - gc/commitdiff
All interior pointers must be enabled for finalized allocation.
authorPetter Urkedal <paurkedal@gmail.com>
Fri, 13 Jan 2012 18:31:50 +0000 (19:31 +0100)
committerPetter Urkedal <paurkedal@gmail.com>
Fri, 13 Jan 2012 18:40:45 +0000 (19:40 +0100)
* include/gc_disclaim.h: Add note about all-interior-pointers requirement.
* fnlz_mlc.c (GC_init_finalized_malloc): Abort with a useful message if all
interior pointers are not enabled.
* tests/disclaim_bench.c, tests/disclaim_test.c: Enable all interior
pointers for tests.

fnlz_mlc.c
include/gc_disclaim.h
tests/disclaim_bench.c
tests/disclaim_test.c

index f7fd0db7a2845203ab5b305adff54c82b1d339d8..005c08b63d17c7f7ddb6b1d3af3711bb7817e402 100644 (file)
@@ -49,6 +49,10 @@ static GC_bool done_init = FALSE;
 
 GC_API void GC_CALL GC_init_finalized_malloc(void)
 {
+    if (!GC_get_all_interior_pointers())
+        ABORT("GC_set_all_interior_pointers(1) is required for finalized "
+              "object allocation.");
+
     DCL_LOCK_STATE;
 
     GC_init();  /* In case it's not already done.       */
index 2e8013d2922e79557a50f5157cd251f7b036b30e..c35a451b6f1ece236765d80112b4c78be6935cb7 100644 (file)
@@ -22,7 +22,8 @@
 
 /* Prepare the object kind used by GC_finalized_malloc.  Call it from   */
 /* your initialization code or, at least, at some point before using    */
-/* finalized allocations.  The function is thread-safe.                 */
+/* finalized allocations.  The function is thread-safe.  All interior   */
+/* pointers must be enabled (GC_set_all_interior_pointers(1)).          */
 GC_API void GC_CALL GC_init_finalized_malloc(void);
 
 /* Type of a disclaim call-back, always stored along with closure data  */
index dfd71be3fd06e26bb429fe71e48a72239808d5c2..2dc3fb5508421c9348eab9034ed00bd446f3e122 100644 (file)
@@ -80,6 +80,7 @@ int main(int argc, char **argv)
     int model, model_min, model_max;
     testobj_t *keep_arr;
 
+    GC_set_all_interior_pointers(1);
     GC_INIT();
     GC_init_finalized_malloc();
 
index 8e71828c76240ef720982975fe9f2755cb0746bf..4eeeaa6861b1e1d80cc6325d523f43f04e18183c 100644 (file)
@@ -140,6 +140,7 @@ int main(void)
     int i;
 #endif
 
+    GC_set_all_interior_pointers(1);
     GC_INIT();
     GC_init_finalized_malloc();