[pypy-commit] pypy default: Test fix

arigo noreply at buildbot.pypy.org
Sun Sep 27 17:29:36 CEST 2015


Author: Armin Rigo <arigo at tunes.org>
Branch: 
Changeset: r79865:644a9163d222
Date: 2015-09-27 17:29 +0200
http://bitbucket.org/pypy/pypy/changeset/644a9163d222/

Log:	Test fix

diff --git a/rpython/jit/metainterp/optimizeopt/optimizer.py b/rpython/jit/metainterp/optimizeopt/optimizer.py
--- a/rpython/jit/metainterp/optimizeopt/optimizer.py
+++ b/rpython/jit/metainterp/optimizeopt/optimizer.py
@@ -3,7 +3,7 @@
 from rpython.jit.metainterp.logger import LogOperations
 from rpython.jit.metainterp.history import Const, ConstInt, REF, ConstPtr
 from rpython.jit.metainterp.optimizeopt.intutils import IntBound,\
-     ConstIntBound, MININT, MAXINT
+     ConstIntBound, MININT, MAXINT, IntUnbounded
 from rpython.jit.metainterp.optimizeopt.util import make_dispatcher_method
 from rpython.jit.metainterp.resoperation import rop, AbstractResOp, GuardResOp,\
      OpHelpers, ResOperation
@@ -57,9 +57,11 @@
         if isinstance(op, ConstInt):
             return ConstIntBound(op.getint())
         fw = op.get_forwarded()
-        if isinstance(fw, IntBound):
-            return fw
-        assert fw is None
+        if fw is not None:
+            if isinstance(fw, IntBound):
+                return fw
+            # rare case: fw might be a RawBufferPtrInfo
+            return IntUnbounded()
         assert op.type == 'i'
         intbound = IntBound(MININT, MAXINT)
         op.set_forwarded(intbound)
@@ -72,7 +74,8 @@
             return
         cur = op.get_forwarded()
         if cur is not None:
-            cur.intersect(bound)
+            if isinstance(cur, IntBound):
+                cur.intersect(bound)
         else:
             op.set_forwarded(bound)
 
@@ -404,7 +407,8 @@
         box = self.get_box_replacement(box)
         if not we_are_translated():    # safety-check
             if (box.get_forwarded() is not None and
-                isinstance(constbox, ConstInt)):
+                isinstance(constbox, ConstInt) and
+                not isinstance(box.get_forwarded(), info.AbstractRawPtrInfo)):
                 assert box.get_forwarded().contains(constbox.getint())
         if box.is_constant():
             return
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
@@ -8902,12 +8902,12 @@
         """
         self.optimize_loop(ops, expected)
 
-    def test_raw_buffer_ptr_info_intbounds(self):
-        ops = """
-        [i1]
+    def test_raw_buffer_ptr_info_intbounds_bug(self):
+        ops = """
+        []
         i2 = call_i('malloc', 10, descr=raw_malloc_descr)
         guard_value(i2, 12345) []
-        jump(i2)
+        jump()
         """
         self.optimize_loop(ops, ops)
 


More information about the pypy-commit mailing list