[pypy-svn] pypy jit-short-preamble: match constants properly when producing short preamble
hakanardo
commits-noreply at bitbucket.org
Sun Jan 9 11:37:44 CET 2011
Author: Hakan Ardo <hakan at debian.org>
Branch: jit-short-preamble
Changeset: r40504:9cfda1e3adbd
Date: 2011-01-09 10:58 +0100
http://bitbucket.org/pypy/pypy/changeset/9cfda1e3adbd/
Log: match constants properly when producing short preamble
diff --git a/pypy/jit/metainterp/optimizeopt/unroll.py b/pypy/jit/metainterp/optimizeopt/unroll.py
--- a/pypy/jit/metainterp/optimizeopt/unroll.py
+++ b/pypy/jit/metainterp/optimizeopt/unroll.py
@@ -238,7 +238,10 @@
box1, box2 = args1[i], args2[i]
val1 = self.optimizer.getvalue(box1)
val2 = self.optimizer.getvalue(box2)
- if val1 is not val2:
+ if val1.is_constant() and val2.is_constant():
+ if not val1.box.same_constant(val2.box):
+ return False
+ elif val1 is not val2:
return False
if not op1.is_guard():
@@ -268,7 +271,8 @@
debug_print("create_short_preamble failed due to",
"new boxes created during optimization.",
"op:", op.getopnum(),
- "at position: ", preamble_i)
+ "at preamble position: ", preamble_i,
+ "loop position: ", loop_i)
return None
if self.sameop(newop, loop_ops[loop_i]) \
@@ -279,14 +283,16 @@
debug_print("create_short_preamble failed due to",
"impossible link of "
"op:", op.getopnum(),
- "at position: ", preamble_i)
+ "at preamble position: ", preamble_i,
+ "loop position: ", loop_i)
return None
loop_i += 1
else:
if not state.safe_to_move(op):
debug_print("create_short_preamble failed due to",
"unsafe op:", op.getopnum(),
- "at position: ", preamble_i)
+ "at preamble position: ", preamble_i,
+ "loop position: ", loop_i)
return None
short_preamble.append(op)
More information about the Pypy-commit
mailing list