Author: Maciej Fijalkowski <[email protected]>
Branch: optresult
Changeset: r76184:58042fcb433b
Date: 2015-02-27 18:53 +0200
http://bitbucket.org/pypy/pypy/changeset/58042fcb433b/

Log:    (fijal, arigo) progress on intbounds

diff --git a/rpython/jit/metainterp/optimizeopt/intbounds.py 
b/rpython/jit/metainterp/optimizeopt/intbounds.py
--- a/rpython/jit/metainterp/optimizeopt/intbounds.py
+++ b/rpython/jit/metainterp/optimizeopt/intbounds.py
@@ -284,21 +284,25 @@
             self.emit_operation(op)
 
     def optimize_INT_GT(self, op):
-        v1 = self.getvalue(op.getarg(0))
-        v2 = self.getvalue(op.getarg(1))
-        if v1.getintbound().known_gt(v2.getintbound()):
+        arg1 = self.get_box_replacement(op.getarg(0))
+        arg2 = self.get_box_replacement(op.getarg(1))
+        b1 = self.getintbound(arg1)
+        b2 = self.getintbound(arg2)
+        if b1.known_gt(b2):
             self.make_constant_int(op, 1)
-        elif v1.getintbound().known_le(v2.getintbound()) or v1.box is v2.box:
+        elif b1.known_le(b2) or arg1 is arg2:
             self.make_constant_int(op, 0)
         else:
             self.emit_operation(op)
 
     def optimize_INT_LE(self, op):
-        v1 = self.getvalue(op.getarg(0))
-        v2 = self.getvalue(op.getarg(1))
-        if v1.getintbound().known_le(v2.getintbound()) or v1.box is v2.box:
+        arg1 = self.get_box_replacement(op.getarg(0))
+        arg2 = self.get_box_replacement(op.getarg(1))
+        b1 = self.getintbound(arg1)
+        b2 = self.getintbound(arg2)
+        if b1.known_le(b2) or arg1 is arg2:
             self.make_constant_int(op, 1)
-        elif v1.getintbound().known_gt(v2.getintbound()):
+        elif b1.known_gt(b2):
             self.make_constant_int(op, 0)
         else:
             self.emit_operation(op)
@@ -459,19 +463,21 @@
                 self.make_int_ge(op.getarg(0), op.getarg(1))
 
     def propagate_bounds_INT_GT(self, op):
-        r = self.getvalue(op)
+        r = self.get_box_replacement(op)
         if r.is_constant():
-            if r.box.same_constant(CONST_1):
+            if r.getint() == 1:
                 self.make_int_gt(op.getarg(0), op.getarg(1))
             else:
+                assert r.getint() == 0
                 self.make_int_le(op.getarg(0), op.getarg(1))
 
     def propagate_bounds_INT_LE(self, op):
-        r = self.getvalue(op)
+        r = self.get_box_replacement(op)
         if r.is_constant():
-            if r.box.same_constant(CONST_1):
+            if r.getint() == 1:
                 self.make_int_le(op.getarg(0), op.getarg(1))
             else:
+                assert r.getint() == 0
                 self.make_int_gt(op.getarg(0), op.getarg(1))
 
     def propagate_bounds_INT_GE(self, op):
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to