Author: Armin Rigo <[email protected]>
Branch: conditional_call_value_4
Changeset: r88578:71709aa3ea99
Date: 2016-11-23 12:15 +0100
http://bitbucket.org/pypy/pypy/changeset/71709aa3ea99/

Log:    tweaks

diff --git a/rpython/jit/metainterp/optimizeopt/pure.py 
b/rpython/jit/metainterp/optimizeopt/pure.py
--- a/rpython/jit/metainterp/optimizeopt/pure.py
+++ b/rpython/jit/metainterp/optimizeopt/pure.py
@@ -168,11 +168,11 @@
         # CALL_PURE.
         for pos in self.call_pure_positions:
             old_op = self.optimizer._newoperations[pos]
-            if self.optimize_call_pure_old(op, old_op):
+            if self.optimize_call_pure_old(op, old_op, start_index):
                 return
         if self.extra_call_pure:
             for i, old_op in enumerate(self.extra_call_pure):
-                if self.optimize_call_pure_old(op, old_op):
+                if self.optimize_call_pure_old(op, old_op, start_index):
                     if isinstance(old_op, PreambleOp):
                         old_op = self.optimizer.force_op_from_preamble(old_op)
                         self.extra_call_pure[i] = old_op
@@ -196,11 +196,12 @@
         return self.optimize_call_pure(op, start_index=1)
     optimize_COND_CALL_VALUE_R = optimize_COND_CALL_VALUE_I
 
-    def optimize_call_pure_old(self, op, old_op):
+    def optimize_call_pure_old(self, op, old_op, start_index):
         if (op.numargs() != old_op.numargs() or
             op.getdescr() is not old_op.getdescr()):
             return False
-        for i, box in enumerate(old_op.getarglist()):
+        for i in range(start_index, old_op.numargs()):
+            box = old_op.getarg(i)
             if not self.get_box_replacement(op.getarg(i)).same_box(box):
                 break
         else:
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
@@ -597,14 +597,7 @@
         return self.emit(op)
 
     def optimize_COND_CALL_VALUE_I(self, op):
-        # this removes a COND_CALL_VALUE with all constant arguments
-        # (ignoring the 'value' in arg0)
-        result = self._can_optimize_call_pure(op, start_index=1)
-        if result is not None:
-            self.make_constant(op, result)
-            self.last_emitted_operation = REMOVED
-            return
-        # otherwise, look if we know the nullness of the first argument
+        # look if we know the nullness of the first argument
         info = self.getnullness(op.getarg(0))
         if info == INFO_NONNULL:
             self.make_equal_to(op, op.getarg(0))
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to