Author: Armin Rigo <[email protected]>
Branch: 
Changeset: r120:e1d5588970ba
Date: 2013-06-13 22:53 +0200
http://bitbucket.org/pypy/stmgc/changeset/e1d5588970ba/

Log:    stmgc_done_nursery()

diff --git a/c4/nursery.c b/c4/nursery.c
--- a/c4/nursery.c
+++ b/c4/nursery.c
@@ -8,7 +8,7 @@
 
 /************************************************************/
 
-void stm_init_nursery(void)
+void stmgc_init_nursery(void)
 {
     struct tx_descriptor *d = thread_descriptor;
 
@@ -19,6 +19,15 @@
     d->nursery_current = d->nursery_base;
 }
 
+void stmgc_done_nursery(void)
+{
+    struct tx_descriptor *d = thread_descriptor;
+    assert(!stmgc_minor_collect_anything_to_do(d));
+    stm_free(d->nursery_base, GC_NURSERY);
+
+    gcptrlist_delete(&d->old_objects_to_trace);
+}
+
 static char *collect_and_allocate_size(size_t size);  /* forward */
 
 gcptr stm_allocate(size_t size, unsigned long tid)
diff --git a/c4/nursery.h b/c4/nursery.h
--- a/c4/nursery.h
+++ b/c4/nursery.h
@@ -14,7 +14,8 @@
 
 struct tx_descriptor;  /* from et.h */
 
-void stm_init_nursery(void);
+void stmgc_init_nursery(void);
+void stmgc_done_nursery(void);
 void stmgc_minor_collect(void);
 int stmgc_minor_collect_anything_to_do(struct tx_descriptor *);
 
diff --git a/c4/stmsync.c b/c4/stmsync.c
--- a/c4/stmsync.c
+++ b/c4/stmsync.c
@@ -59,7 +59,7 @@
 {
     int r = DescriptorInit();
     assert(r == 1);
-    stm_init_nursery();
+    stmgc_init_nursery();
     init_shadowstack();
     //stmgcpage_init_tls();
     BeginInevitableTransaction();
@@ -67,11 +67,11 @@
 
 void stm_finalize(void)
 {
-    //stmgc_minor_collect();   /* force everything out of the nursery */
+    stmgc_minor_collect();   /* force everything out of the nursery */
     CommitTransaction();
     //stmgcpage_done_tls();
     done_shadowstack();
-    //stmgc_done_tls();
+    stmgc_done_nursery();
     DescriptorDone();
 }
 
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to