Author: Maciej Fijalkowski <[email protected]>
Branch: result-in-resops
Changeset: r58531:5548cd817164
Date: 2012-10-28 17:04 +0100
http://bitbucket.org/pypy/pypy/changeset/5548cd817164/

Log:    move a hack from store_final_boxes_in_guard

diff --git a/pypy/jit/metainterp/optimizeopt/optimizer.py 
b/pypy/jit/metainterp/optimizeopt/optimizer.py
--- a/pypy/jit/metainterp/optimizeopt/optimizer.py
+++ b/pypy/jit/metainterp/optimizeopt/optimizer.py
@@ -573,6 +573,7 @@
             raise compile.giveup()
         descr.store_final_boxes(op, newboxes)
         #
+        xxx
         if op.getopnum() == rop.GUARD_VALUE:
             xxx
             if self.getvalue(op.getarg(0)).is_bool_box:
diff --git a/pypy/jit/metainterp/optimizeopt/rewrite.py 
b/pypy/jit/metainterp/optimizeopt/rewrite.py
--- a/pypy/jit/metainterp/optimizeopt/rewrite.py
+++ b/pypy/jit/metainterp/optimizeopt/rewrite.py
@@ -5,7 +5,8 @@
      CONST_0
 from pypy.jit.metainterp.resoperation import (opboolinvers, opboolreflex, rop,
                                               ConstInt, make_hashable_int,
-                                              create_resop_2, Const)
+                                              create_resop_2, Const,
+                                              create_resop_1)
 from pypy.rlib.rarithmetic import highest_bit
 
 
@@ -194,7 +195,7 @@
                                   'always fail')
             return
         if emit_operation:
-            return self.getforwarded(op)
+            return op
 
     def postprocess_guard(self, op, constbox):
         value = self.getforwarded(op.getarg(0))
@@ -270,6 +271,17 @@
             value.last_guard = None
             emit_operation = False
         else:
+            if not value.is_constant() and value.returns_bool_result():
+                constvalue = op.getarg(1).getint()
+                if constvalue == 0:
+                    newop = create_resop_1(rop.GUARD_FALSE, None,
+                                           op.getarg(0))
+                elif constvalue == 1: 
+                    newop = create_resop_1(rop.GUARD_TRUE, None,
+                                           op.getarg(0))
+                else:
+                    raise AssertionError("uh?")
+                return newop
             emit_operation = True
         constbox = op.getarg(1)
         assert isinstance(constbox, Const)
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to