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