[pypy-commit] pypy optresult-unroll: hack differently

fijal noreply at buildbot.pypy.org
Fri Aug 7 10:05:25 CEST 2015


Author: Maciej Fijalkowski <fijall at gmail.com>
Branch: optresult-unroll
Changeset: r78842:70d324743d57
Date: 2015-08-06 22:25 +0200
http://bitbucket.org/pypy/pypy/changeset/70d324743d57/

Log:	hack differently

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
@@ -326,7 +326,7 @@
         return op in self.inparg_dict
 
     def get_constant_box(self, box):
-        box = self.force_box(box)
+        box = self.get_box_replacement(box)
         if isinstance(box, Const):
             return box
         if (box.type == 'i' and box.get_forwarded() and
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
@@ -129,6 +129,10 @@
 
     def optimize_CALL_PURE_I(self, op):
         # Step 1: check if all arguments are constant
+        for arg in op.getarglist():
+            self.optimizer.force_box(arg)
+            # XXX hack to ensure that virtuals that are
+            #     constant are presented that way
         result = self._can_optimize_call_pure(op)
         if result is not None:
             # this removes a CALL_PURE with all constant arguments.


More information about the pypy-commit mailing list