diff options
author | Massimiliano Mantione <massi@mono-cvs.ximian.com> | 2008-02-07 12:51:20 +0300 |
---|---|---|
committer | Massimiliano Mantione <massi@mono-cvs.ximian.com> | 2008-02-07 12:51:20 +0300 |
commit | f39662b1fe25649ca64f9ac3143f6471b7764fac (patch) | |
tree | 8b47e1d5f89395cfe28f6cab45f944ad1d7c7aeb /libgc/pthread_stop_world.c | |
parent | b7cab28d055617c6966ff739223cbfdf7e509f28 (diff) |
* include/gc.h: (GCEventType): Added start-stop the world events.
* pthread_stop_world.c: (GC_stop_world and GC_start_world): hooked
svn path=/trunk/mono/; revision=95125
Diffstat (limited to 'libgc/pthread_stop_world.c')
-rw-r--r-- | libgc/pthread_stop_world.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/libgc/pthread_stop_world.c b/libgc/pthread_stop_world.c index 1ed16132897..04eb3712c26 100644 --- a/libgc/pthread_stop_world.c +++ b/libgc/pthread_stop_world.c @@ -414,6 +414,8 @@ static void pthread_stop_world() /* Caller holds allocation lock. */ void GC_stop_world() { + if (GC_notify_event) + GC_notify_event (GC_EVENT_PRE_STOP_WORLD); /* Make sure all free list construction has stopped before we start. */ /* No new construction can start, since free list construction is */ /* required to acquire and release the GC lock before it starts, */ @@ -433,6 +435,8 @@ void GC_stop_world() # ifdef PARALLEL_MARK GC_release_mark_lock(); # endif + if (GC_notify_event) + GC_notify_event (GC_EVENT_POST_STOP_WORLD); } /* Caller holds allocation lock, and has held it continuously since */ @@ -449,6 +453,8 @@ static void pthread_start_world() # if DEBUG_THREADS GC_printf0("World starting\n"); # endif + if (GC_notify_event) + GC_notify_event (GC_EVENT_PRE_START_WORLD); for (i = 0; i < THREAD_TABLE_SZ; i++) { for (p = GC_threads[i]; p != 0; p = p -> next) { @@ -488,6 +494,8 @@ static void pthread_start_world() } } + if (GC_notify_event) + GC_notify_event (GC_EVENT_POST_START_WORLD); #if DEBUG_THREADS GC_printf0("World started\n"); #endif |