[pypy-commit] pypy concurrent-marksweep: Trace all set{field, arrayitem, interiorfield}, even to non-gc objects.

arigo noreply at buildbot.pypy.org
Wed Oct 12 21:37:06 CEST 2011


Author: Armin Rigo <arigo at tunes.org>
Branch: concurrent-marksweep
Changeset: r47973:787da47ce792
Date: 2011-10-12 14:35 +0200
http://bitbucket.org/pypy/pypy/changeset/787da47ce792/

Log:	Trace all set{field,arrayitem,interiorfield}, even to non-gc
	objects.

diff --git a/pypy/translator/c/funcgen.py b/pypy/translator/c/funcgen.py
--- a/pypy/translator/c/funcgen.py
+++ b/pypy/translator/c/funcgen.py
@@ -477,13 +477,13 @@
             result = '/* %s */' % result
         return result
 
-    def generic_set(self, op, targetexpr, gckind):
+    def generic_set(self, op, targetexpr):
         newvalue = self.expr(op.args[-1], special_case_void=False)
         result = '%s = %s;' % (targetexpr, newvalue)
         T = self.lltypemap(op.args[-1])
         if T is Void:
             result = '/* %s */' % result
-        elif gckind == 'gc':
+        else:
             mark = FunctionCodeGenerator._TRACE_MARK + 1
             FunctionCodeGenerator._TRACE_MARK = mark
             result = '%s RPyTraceSet(%s, %d);' % (result, targetexpr, mark)
@@ -508,7 +508,7 @@
         expr = structdef.ptr_access_expr(self.expr(op.args[0]),
                                          op.args[1].value,
                                          baseexpr_is_const)
-        return self.generic_set(op, expr, STRUCT._gckind)
+        return self.generic_set(op, expr)
 
     def OP_GETSUBSTRUCT(self, op):
         RESULT = self.lltypemap(op.result).TO
@@ -538,8 +538,7 @@
         ptr = self.expr(op.args[0])
         index = self.expr(op.args[1])
         arraydef = self.db.gettypedefnode(ARRAY)
-        return self.generic_set(op, arraydef.itemindex_access_expr(ptr, index),
-                                ARRAY._gckind)
+        return self.generic_set(op, arraydef.itemindex_access_expr(ptr, index))
     OP_BARE_SETARRAYITEM = OP_SETARRAYITEM
 
     def OP_GETARRAYSUBSTRUCT(self, op):
@@ -582,8 +581,7 @@
 
     def OP_BARE_SETINTERIORFIELD(self, op):
         STRUCT = self.lltypemap(op.args[0]).TO
-        return self.generic_set(op, self.interior_expr(op.args[:-1]),
-                                STRUCT._gckind)
+        return self.generic_set(op, self.interior_expr(op.args[:-1]))
 
     def OP_GETINTERIORARRAYSIZE(self, op):
         expr, ARRAY = self.interior_expr(op.args, True)


More information about the pypy-commit mailing list