Author: massi
Date: 2008-02-07 04:51:20 -0500 (Thu, 07 Feb 2008)
New Revision: 95125

Modified:
   trunk/mono/libgc/ChangeLog
   trunk/mono/libgc/include/gc.h
   trunk/mono/libgc/pthread_stop_world.c
Log:
        * include/gc.h: (GCEventType): Added start-stop the world events.
        * pthread_stop_world.c: (GC_stop_world and GC_start_world): hooked



Modified: trunk/mono/libgc/ChangeLog
===================================================================
--- trunk/mono/libgc/ChangeLog  2008-02-07 09:50:25 UTC (rev 95124)
+++ trunk/mono/libgc/ChangeLog  2008-02-07 09:51:20 UTC (rev 95125)
@@ -1,3 +1,8 @@
+2008-02-07  Massimiliano Mantione  <[EMAIL PROTECTED]>
+       * include/gc.h: (GCEventType): Added start-stop the world events.
+       * pthread_stop_world.c: (GC_stop_world and GC_start_world): hooked
+       start-stop the world events.
+
 2007-11-05  Geoff Norton  <[EMAIL PROTECTED]>
 
        * darwin_stop_world.c: Correct the structure name on Darwin-x86 for 
Leopard.

Modified: trunk/mono/libgc/include/gc.h
===================================================================
--- trunk/mono/libgc/include/gc.h       2008-02-07 09:50:25 UTC (rev 95124)
+++ trunk/mono/libgc/include/gc.h       2008-02-07 09:51:20 UTC (rev 95125)
@@ -98,7 +98,11 @@
        GC_EVENT_MARK_END,
        GC_EVENT_RECLAIM_START,
        GC_EVENT_RECLAIM_END,
-       GC_EVENT_END
+       GC_EVENT_END,
+       GC_EVENT_PRE_STOP_WORLD,
+       GC_EVENT_POST_STOP_WORLD,
+       GC_EVENT_PRE_START_WORLD,
+       GC_EVENT_POST_START_WORLD
 } GCEventType;
 
 GC_API void (*GC_notify_event) GC_PROTO((GCEventType event_type));

Modified: trunk/mono/libgc/pthread_stop_world.c
===================================================================
--- trunk/mono/libgc/pthread_stop_world.c       2008-02-07 09:50:25 UTC (rev 
95124)
+++ trunk/mono/libgc/pthread_stop_world.c       2008-02-07 09:51:20 UTC (rev 
95125)
@@ -414,6 +414,8 @@
 /* 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 @@
 #   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 @@
 #   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 @@
        }
     }
   
+    if (GC_notify_event)
+        GC_notify_event (GC_EVENT_POST_START_WORLD);
     #if DEBUG_THREADS
       GC_printf0("World started\n");
     #endif

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to