add missing GC registration for places

Merge to 5.2
This commit is contained in:
Matthew Flatt 2011-10-11 06:45:14 -06:00
parent dc912ee6de
commit 32b5390ad2
3 changed files with 7 additions and 0 deletions

View File

@ -0,0 +1,5 @@
#lang racket/base
;; Try to trigger master GCs:
(for ([i 100000])
(make-shared-bytes 1024))

View File

@ -292,6 +292,7 @@ Scheme_Env *scheme_engine_instance_init()
#if defined(MZ_PRECISE_GC) && defined(MZ_USE_PLACES) #if defined(MZ_PRECISE_GC) && defined(MZ_USE_PLACES)
{ {
void *signal_handle; void *signal_handle;
REGISTER_SO(place_object);
place_object = (Scheme_Place_Object*) scheme_make_place_object(); place_object = (Scheme_Place_Object*) scheme_make_place_object();
signal_handle = scheme_get_signal_handle(); signal_handle = scheme_get_signal_handle();
GC_set_put_external_event_fd(signal_handle); GC_set_put_external_event_fd(signal_handle);

View File

@ -2189,6 +2189,7 @@ static void *place_start_proc_after_stack(void *data_arg, void *stack_base) {
channel = place_data->channel; channel = place_data->channel;
} }
place_obj = place_data->place_obj; place_obj = place_data->place_obj;
REGISTER_SO(place_object);
place_object = place_obj; place_object = place_obj;
place_obj->refcount++; place_obj->refcount++;