Author: Maciej Fijalkowski <[email protected]>
Branch: optresult
Changeset: r78284:0ec1faa7d196
Date: 2015-06-24 10:36 +0200
http://bitbucket.org/pypy/pypy/changeset/0ec1faa7d196/
Log: fix wrong use of check isinstance(x, AbstractResOp)
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
@@ -134,7 +134,7 @@
v1, v2 = v2, v1
# if both are constant, the pure optimization will deal with it
if v2.is_constant() and not v1.is_constant():
- if isinstance(arg1, AbstractResOp):
+ if not self.optimizer.is_inputarg(arg1):
if arg1.getopnum() == rop.INT_ADD:
prod_arg1 = arg1.getarg(0)
prod_arg2 = arg1.getarg(1)
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
@@ -328,6 +328,9 @@
def ensure_imported(self, value):
pass
+ def is_inputarg(self, op):
+ return op in self.inparg_dict
+
def get_constant_box(self, box):
box = self.get_box_replacement(box)
if isinstance(box, Const):
@@ -456,6 +459,9 @@
def propagate_all_forward(self, clear=True):
if clear:
self.clear_newoperations()
+ self.inparg_dict = {}
+ for op in self.loop.inputargs:
+ self.inparg_dict[op] = None
for op in self.loop.operations:
self._really_emitted_operation = None
self.first_optimization.propagate_forward(op)
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit