Author: Maciej Fijalkowski <[email protected]>
Branch: optresult-unroll
Changeset: r78940:a858bb9a544c
Date: 2015-08-12 16:41 +0200
http://bitbucket.org/pypy/pypy/changeset/a858bb9a544c/

Log:    fix (again) issue 2015

diff --git a/rpython/jit/metainterp/optimizeopt/pure.py 
b/rpython/jit/metainterp/optimizeopt/pure.py
--- a/rpython/jit/metainterp/optimizeopt/pure.py
+++ b/rpython/jit/metainterp/optimizeopt/pure.py
@@ -157,17 +157,13 @@
         opnum = OpHelpers.call_for_descr(op.getdescr())
         newop = self.optimizer.replace_op_with(op, opnum)
         self.emit_operation(newop)
-            # don't move call_pure_with_exception in the short preamble...
-            # issue #2015
+        # don't move call_pure_with_exception in the short preamble...
+        # issue #2015
 
-            # XXX default has this code:
-            # this does not work with how pure calls are done on this branch
-            # fix together with unroll
-            #effectinfo = op.getdescr().get_extra_info()
-            #if not effectinfo.check_can_raise(ignore_memoryerror=True):
-        #    if 1:
-        self.call_pure_positions.append(
-            len(self.optimizer._newoperations) - 1)
+        effectinfo = op.getdescr().get_extra_info()
+        if not effectinfo.check_can_raise(ignore_memoryerror=True):
+            self.call_pure_positions.append(
+                len(self.optimizer._newoperations) - 1)
 
     optimize_CALL_PURE_R = optimize_CALL_PURE_I
     optimize_CALL_PURE_F = optimize_CALL_PURE_I
diff --git a/rpython/jit/metainterp/optimizeopt/test/test_optimizeopt.py 
b/rpython/jit/metainterp/optimizeopt/test/test_optimizeopt.py
--- a/rpython/jit/metainterp/optimizeopt/test/test_optimizeopt.py
+++ b/rpython/jit/metainterp/optimizeopt/test/test_optimizeopt.py
@@ -3631,8 +3631,8 @@
     def test_residual_call_invalidates_some_read_caches_3(self):
         ops = """
         [p1, i1, p2, i2]
+        setfield_gc(p2, i2, descr=adescr)
         setfield_gc(p1, i1, descr=valuedescr)
-        setfield_gc(p2, i2, descr=adescr)
         i3 = call_i(i1, descr=plaincalldescr)
         setfield_gc(p2, i3, descr=adescr)
         setfield_gc(p1, i3, descr=valuedescr)
@@ -3747,7 +3747,6 @@
         i3 = call_i(p1, descr=elidable3calldescr)
         guard_no_exception() []
         setfield_gc(p1, i3, descr=valuedescr)
-        i167 = same_as_i(i3)
         jump(p1, i4, i3)
         '''
         self.optimize_loop(ops, expected, preamble)
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to