Revision: 191 http://trac.macosforge.org/projects/ruby/changeset/191 Author: lsansonetti@apple.com Date: 2008-05-11 13:36:13 -0700 (Sun, 11 May 2008) Log Message: ----------- fixed build Modified Paths: -------------- MacRuby/trunk/gc.c Modified: MacRuby/trunk/gc.c =================================================================== --- MacRuby/trunk/gc.c 2008-05-11 00:16:55 UTC (rev 190) +++ MacRuby/trunk/gc.c 2008-05-11 20:36:13 UTC (rev 191) @@ -36,7 +36,7 @@ #endif #if WITH_OBJC -# if 1//HAVE_AUTO_ZONE_H +# if HAVE_AUTO_ZONE_H # include <auto_zone.h> # else # include <malloc/malloc.h> @@ -62,9 +62,14 @@ void *); extern void *auto_zone_get_associative_ref(auto_zone_t *, void *, void *); extern auto_zone_t *auto_zone(void); +typedef struct auto_zone_cursor *auto_zone_cursor_t; +typedef void (*auto_zone_foreach_object_t) (auto_zone_cursor_t cursor, + void (*op) (void *ptr, void *data), void* data); typedef struct { uint32_t unused1; - void *unused2; + void (*batch_invalidate) (auto_zone_t *zone, + auto_zone_foreach_object_t foreach, auto_zone_cursor_t cursor, + size_t cursor_size); void *unused3; void *unused4; void *unused5; @@ -2682,8 +2687,8 @@ */ #if WITH_OBJC -static void (*old_batch_invalidate)(auto_zone_t *, auto_zone_foreach_object_t, - auto_zone_cursor_t, size_t); +static void (*old_batch_invalidate)(auto_zone_t *, + auto_zone_foreach_object_t, auto_zone_cursor_t, size_t); static void __rb_objc_finalize(void *obj, void *data) @@ -2713,17 +2718,21 @@ Init_PreGC(void) { #if WITH_OBJC + auto_collection_control_t *control; + __auto_zone = auto_zone(); //auto_zone_register_thread(__auto_zone); finalizer_table = st_init_strtable(); GC_ROOT(&finalizer_table); - auto_collection_parameters(__auto_zone)->scan_external_callout = + + control = auto_collection_parameters(__auto_zone); + control->scan_external_callout = rb_objc_scan_external_callout; if (getenv("GC_DEBUG")) - auto_collection_parameters(__auto_zone)->log = - AUTO_LOG_COLLECTIONS | AUTO_LOG_REGIONS | AUTO_LOG_UNUSUAL; - old_batch_invalidate = auto_collection_parameters(__auto_zone)->batch_invalidate; - auto_collection_parameters(__auto_zone)->batch_invalidate = rb_objc_batch_invalidate; + control->log = AUTO_LOG_COLLECTIONS | AUTO_LOG_REGIONS + | AUTO_LOG_UNUSUAL; + old_batch_invalidate = control->batch_invalidate; + control->batch_invalidate = rb_objc_batch_invalidate; #endif }