Author: Maciej Fijalkowski <fij...@gmail.com>
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
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to