From 32b5390ad2f5dfe5f7af46b96e33b03e47c20f33 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Tue, 11 Oct 2011 06:45:14 -0600 Subject: [PATCH] add missing GC registration for places Merge to 5.2 --- collects/tests/racket/place-master-gc.rkt | 5 +++++ src/racket/src/env.c | 1 + src/racket/src/place.c | 1 + 3 files changed, 7 insertions(+) create mode 100644 collects/tests/racket/place-master-gc.rkt diff --git a/collects/tests/racket/place-master-gc.rkt b/collects/tests/racket/place-master-gc.rkt new file mode 100644 index 0000000000..974425f52a --- /dev/null +++ b/collects/tests/racket/place-master-gc.rkt @@ -0,0 +1,5 @@ +#lang racket/base + +;; Try to trigger master GCs: +(for ([i 100000]) + (make-shared-bytes 1024)) diff --git a/src/racket/src/env.c b/src/racket/src/env.c index dfe7a8ba6c..60840f1339 100644 --- a/src/racket/src/env.c +++ b/src/racket/src/env.c @@ -292,6 +292,7 @@ Scheme_Env *scheme_engine_instance_init() #if defined(MZ_PRECISE_GC) && defined(MZ_USE_PLACES) { void *signal_handle; + REGISTER_SO(place_object); place_object = (Scheme_Place_Object*) scheme_make_place_object(); signal_handle = scheme_get_signal_handle(); GC_set_put_external_event_fd(signal_handle); diff --git a/src/racket/src/place.c b/src/racket/src/place.c index 96c10b2bf3..de3f85c5bf 100644 --- a/src/racket/src/place.c +++ b/src/racket/src/place.c @@ -2189,6 +2189,7 @@ static void *place_start_proc_after_stack(void *data_arg, void *stack_base) { channel = place_data->channel; } place_obj = place_data->place_obj; + REGISTER_SO(place_object); place_object = place_obj; place_obj->refcount++;