[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