[pypy-commit] pypy fold-arith-ops: reduce code duplication by folding the two cases into one
cfbolz
noreply at buildbot.pypy.org
Thu May 21 10:28:13 CEST 2015
Author: Carl Friedrich Bolz <cfbolz at gmx.de>
Branch: fold-arith-ops
Changeset: r77446:8773f0ce3059
Date: 2015-05-21 10:27 +0200
http://bitbucket.org/pypy/pypy/changeset/8773f0ce3059/
Log: reduce code duplication by folding the two cases into one
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
@@ -124,12 +124,17 @@
r.getintbound().intersect(b)
def optimize_INT_ADD(self, op):
- v1 = self.getvalue(op.getarg(0))
- v2 = self.getvalue(op.getarg(1))
+ arg1 = op.getarg(0)
+ arg2 = op.getarg(1)
+ v1 = self.getvalue(arg1)
+ v2 = self.getvalue(arg2)
+ if v1.is_constant():
+ arg1, arg2 = arg2, arg1
+ v1, v2 = v2, v1
if v2.is_constant():
try:
- prod_op = self.optimizer.producer[op.getarg(0)]
+ prod_op = self.optimizer.producer[arg1]
if prod_op.getopnum() == rop.INT_ADD:
prod_v1 = self.getvalue(prod_op.getarg(0))
prod_v2 = self.getvalue(prod_op.getarg(1))
@@ -140,27 +145,7 @@
arg2 = ConstInt(sum)
op = op.copy_and_change(rop.INT_ADD, args=[arg1, arg2])
elif prod_v1.is_constant():
- sum = v2.box.getint() + prod_v1.box.getint()
- if is_valid_int(sum):
- arg1 = prod_op.getarg(1)
- arg2 = ConstInt(sum)
- op = op.copy_and_change(rop.INT_ADD, args=[arg1, arg2])
- except KeyError:
- pass
- if v1.is_constant():
- try:
- prod_op = self.optimizer.producer[op.getarg(1)]
- if prod_op.getopnum() == rop.INT_ADD:
- prod_v1 = self.getvalue(prod_op.getarg(0))
- prod_v2 = self.getvalue(prod_op.getarg(1))
- if prod_v2.is_constant():
- sum = v1.box.getint() + prod_v2.box.getint()
- if is_valid_int(sum):
- arg1 = prod_op.getarg(0)
- arg2 = ConstInt(sum)
- op = op.copy_and_change(rop.INT_ADD, args=[arg1, arg2])
- elif prod_v1.is_constant():
- sum = v1.box.getint() + prod_v1.box.getint()
+ sum = arg2.getint() + prod_v1.box.getint()
if is_valid_int(sum):
arg1 = prod_op.getarg(1)
arg2 = ConstInt(sum)
More information about the pypy-commit
mailing list