[pypy-commit] stmgc default: repeat/do write barrier after minor_collection. I think the problem was that minor_collect clears old_objects_to_trace and the object needs to be reregistered there if it is modified again.

Raemi noreply at buildbot.pypy.org
Mon Jul 8 13:27:16 CEST 2013


Author: Remi Meier <meierrem at student.ethz.ch>
Branch: 
Changeset: r373:470bcb38a12e
Date: 2013-07-08 13:26 +0200
http://bitbucket.org/pypy/stmgc/changeset/470bcb38a12e/

Log:	repeat/do write barrier after minor_collection. I think the problem
	was that minor_collect clears old_objects_to_trace and the object
	needs to be reregistered there if it is modified again.

diff --git a/duhton/listobject.c b/duhton/listobject.c
--- a/duhton/listobject.c
+++ b/duhton/listobject.c
@@ -75,7 +75,7 @@
 
 void _list_append(DuListObject *ob, DuObject *x)
 {
-    _du_write1(ob);
+    _du_read1(ob);
     DuTupleObject *olditems = ob->ob_tuple;
 
     _du_read1(olditems);
@@ -85,6 +85,8 @@
     DuTupleObject *newitems = DuTuple_New(newcount);
     _du_restore3(ob, x, olditems);
 
+    _du_write1(ob);
+
     for (i=0; i<newcount-1; i++)
         newitems->ob_items[i] = olditems->ob_items[i];
     newitems->ob_items[newcount-1] = x;


More information about the pypy-commit mailing list