[pypy-commit] pypy optresult: some cheap edits to get to 100 passed tests (metrics, metrics, metrics)

fijal noreply at buildbot.pypy.org
Wed Mar 11 16:23:30 CET 2015


Author: Maciej Fijalkowski <fijall at gmail.com>
Branch: optresult
Changeset: r76329:cc7eab561500
Date: 2015-03-11 17:23 +0200
http://bitbucket.org/pypy/pypy/changeset/cc7eab561500/

Log:	some cheap edits to get to 100 passed tests (metrics, metrics,
	metrics)

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
@@ -92,23 +92,22 @@
     optimize_INT_XOR = optimize_INT_OR_or_XOR
 
     def optimize_INT_AND(self, op):
-        v1 = self.getvalue(op.getarg(0))
-        v2 = self.getvalue(op.getarg(1))
+        b1 = self.getintbound(op.getarg(0))
+        b2 = self.getintbound(op.getarg(1))
         self.emit_operation(op)
 
-        r = self.getvalue(op)
-        if v2.is_constant():
-            val = v2.box.getint()
+        r = self.getintbound(op)
+        if b2.is_constant():
+            val = b2.lower
             if val >= 0:
                 r.getintbound().intersect(IntBound(0, val))
-        elif v1.is_constant():
-            val = v1.box.getint()
+        elif b1.is_constant():
+            val = b1.getint()
             if val >= 0:
                 r.getintbound().intersect(IntBound(0, val))
-        elif v1.getintbound().known_ge(IntBound(0, 0)) and \
-          v2.getintbound().known_ge(IntBound(0, 0)):
-            lesser = min(v1.getintbound().upper, v2.getintbound().upper)
-            r.getintbound().intersect(IntBound(0, next_pow2_m1(lesser)))
+        elif b1.known_ge(IntBound(0, 0)) and b2.known_ge(IntBound(0, 0)):
+            lesser = min(b1.upper, b2.upper)
+            r.intersect(IntBound(0, next_pow2_m1(lesser)))
 
     def optimize_INT_SUB(self, op):
         self.emit_operation(op)
@@ -419,7 +418,7 @@
         self.emit_operation(op)
         descr = op.getdescr()
         if descr and descr.is_item_integer_bounded():
-            intbound = self.getvalue(op).getintbound()
+            intbound = self.getintbound(op)
             intbound.make_ge(IntLowerBound(descr.get_item_integer_min()))
             intbound.make_le(IntUpperBound(descr.get_item_integer_max()))
 
diff --git a/rpython/jit/metainterp/optimizeopt/rewrite.py b/rpython/jit/metainterp/optimizeopt/rewrite.py
--- a/rpython/jit/metainterp/optimizeopt/rewrite.py
+++ b/rpython/jit/metainterp/optimizeopt/rewrite.py
@@ -75,33 +75,33 @@
         return False
 
     def optimize_INT_AND(self, op):
-        v1 = self.getvalue(op.getarg(0))
-        v2 = self.getvalue(op.getarg(1))
-        if v1.is_null() or v2.is_null():
+        b1 = self.getintbound(op.getarg(0))
+        b2 = self.getintbound(op.getarg(1))
+        if b1.equal(0) or b2.equal(0):
             self.make_constant_int(op, 0)
             return
-        elif v2.is_constant():
-            val = v2.box.getint()
-            if val == -1 or v1.getintbound().lower >= 0 \
-                and v1.getintbound().upper <= val & ~(val + 1):
-                self.make_equal_to(op, v1)
+        elif b2.is_constant():
+            val = b2.lower
+            if val == -1 or b1.lower >= 0 \
+                and b1.upper <= val & ~(val + 1):
+                self.make_equal_to(op, op.getarg(0))
                 return
-        elif v1.is_constant():
-            val = v1.box.getint()
-            if val == -1 or v2.getintbound().lower >= 0 \
-                and v2.getintbound().upper <= val & ~(val + 1):
-                self.make_equal_to(op, v2)
+        elif b1.is_constant():
+            val = b1.lower
+            if val == -1 or b2.lower >= 0 \
+                and b2.upper <= val & ~(val + 1):
+                self.make_equal_to(op, op.getarg(1))
                 return
 
         self.emit_operation(op)
 
     def optimize_INT_OR(self, op):
-        v1 = self.getvalue(op.getarg(0))
-        v2 = self.getvalue(op.getarg(1))
-        if v1.is_null():
-            self.make_equal_to(op, v2)
-        elif v2.is_null():
-            self.make_equal_to(op, v1)
+        b1 = self.getintbound(op.getarg(0))
+        b2 = self.getintbound(op.getarg(1))
+        if b1.equal(0):
+            self.make_equal_to(op, op.getarg(1))
+        elif b2.equal(0):
+            self.make_equal_to(op, op.getarg(0))
         else:
             self.emit_operation(op)
 
@@ -189,13 +189,13 @@
             self.emit_operation(op)
 
     def optimize_INT_XOR(self, op):
-        v1 = self.getvalue(op.getarg(0))
-        v2 = self.getvalue(op.getarg(1))
+        b1 = self.getintbound(op.getarg(0))
+        b2 = self.getintbound(op.getarg(1))
 
-        if v1.is_constant() and v1.box.getint() == 0:
-            self.make_equal_to(op, v2)
-        elif v2.is_constant() and v2.box.getint() == 0:
-            self.make_equal_to(op, v1)
+        if b1.equal(0):
+            self.make_equal_to(op, op.getarg(1))
+        elif b2.equal(0):
+            self.make_equal_to(op, op.getarg(0))
         else:
             self.emit_operation(op)
 


More information about the pypy-commit mailing list