[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