Author: Hakan Ardo <[email protected]>
Branch:
Changeset: r69958:40052bc7329e
Date: 2014-03-14 16:27 +0100
http://bitbucket.org/pypy/pypy/changeset/40052bc7329e/
Log: fix for tests in 74e8e981ffa1 and f51b42dd2ed4
diff --git a/rpython/jit/metainterp/optimizeopt/heap.py
b/rpython/jit/metainterp/optimizeopt/heap.py
--- a/rpython/jit/metainterp/optimizeopt/heap.py
+++ b/rpython/jit/metainterp/optimizeopt/heap.py
@@ -93,6 +93,11 @@
# possible aliasing).
self.clear()
self._lazy_setfield = None
+ if optheap.postponed_op:
+ for a in op.getarglist():
+ if a is optheap.postponed_op.result:
+ optheap.emit_postponed_op()
+ break
optheap.next_optimization.propagate_forward(op)
if not can_cache:
return
@@ -179,6 +184,9 @@
def flush(self):
self.force_all_lazy_setfields_and_arrayitems()
+ self.emit_postponed_op()
+
+ def emit_postponed_op(self):
if self.postponed_op:
postponed_op = self.postponed_op
self.postponed_op = None
@@ -227,10 +235,7 @@
def emit_operation(self, op):
self.emitting_operation(op)
- if self.postponed_op:
- postponed_op = self.postponed_op
- self.postponed_op = None
- self.next_optimization.propagate_forward(postponed_op)
+ self.emit_postponed_op()
if (op.is_comparison() or op.getopnum() == rop.CALL_MAY_FORCE
or op.is_ovf()):
self.postponed_op = op
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit