Author: Maciej Fijalkowski <[email protected]>
Branch: gc_no_cleanup_nursery
Changeset: r73633:86b8d1f0b17d
Date: 2014-09-21 13:05 +0200
http://bitbucket.org/pypy/pypy/changeset/86b8d1f0b17d/
Log: fixes
diff --git a/rpython/jit/backend/llsupport/rewrite.py
b/rpython/jit/backend/llsupport/rewrite.py
--- a/rpython/jit/backend/llsupport/rewrite.py
+++ b/rpython/jit/backend/llsupport/rewrite.py
@@ -62,6 +62,8 @@
if op.is_malloc():
self.handle_malloc_operation(op)
continue
+ if op.is_guard():
+ self.emit_pending_zeros()
elif op.getopnum() == rop.CLEAR_ARRAY_CONTENTS:
self.handle_clear_array_contents(op.getdescr(), op.getarg(0))
continue
@@ -136,7 +138,6 @@
self.delayed_zero_setfields[result] = d
for ofs in descr.offsets_of_gcfields:
d[ofs] = None
- self.delayed_zero_setfields.clear()
def consider_setfield_gc(self, op):
offset = self.cpu.unpack_fielddescr(op.getdescr())
@@ -298,6 +299,7 @@
for ofs in d.iterkeys():
op = ResOperation(rop.ZERO_PTR_FIELD, [v, ConstInt(ofs)], None)
self.newops.append(op)
+ self.delayed_zero_setfields.clear()
def _gen_call_malloc_gc(self, args, v_result, descr):
"""Generate a CALL_MALLOC_GC with the given args."""
diff --git a/rpython/jit/backend/llsupport/test/test_rewrite.py
b/rpython/jit/backend/llsupport/test/test_rewrite.py
--- a/rpython/jit/backend/llsupport/test/test_rewrite.py
+++ b/rpython/jit/backend/llsupport/test/test_rewrite.py
@@ -122,6 +122,9 @@
def unpack_arraydescr_size(self, d):
return 0, d.itemsize, 0
+ def unpack_fielddescr(self, d):
+ return d.offset
+
def arraydescrof(self, ARRAY):
try:
return self._cache[ARRAY]
diff --git a/rpython/jit/codewriter/heaptracker.py
b/rpython/jit/codewriter/heaptracker.py
--- a/rpython/jit/codewriter/heaptracker.py
+++ b/rpython/jit/codewriter/heaptracker.py
@@ -140,6 +140,4 @@
res.append(offset)
elif isinstance(FIELD, lltype.Struct):
offsets_of_gcfields(gccache, FIELD, res)
- if not gccache.translate_support_code:
- res.sort()
return res
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit