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