[pypy-commit] pypy result-in-resops: fix hashing
fijal
noreply at buildbot.pypy.org
Sat Oct 27 12:05:41 CEST 2012
Author: Maciej Fijalkowski <fijall at gmail.com>
Branch: result-in-resops
Changeset: r58498:026b0ffa02fa
Date: 2012-10-27 11:57 +0200
http://bitbucket.org/pypy/pypy/changeset/026b0ffa02fa/
Log: fix hashing
diff --git a/pypy/jit/metainterp/optimizeopt/pure.py b/pypy/jit/metainterp/optimizeopt/pure.py
--- a/pypy/jit/metainterp/optimizeopt/pure.py
+++ b/pypy/jit/metainterp/optimizeopt/pure.py
@@ -12,6 +12,7 @@
self.emitted_pure_operations = []
def optimize_default(self, op):
+ orig_op = op
op = self.getforwarded(op)
canfold = op.is_always_pure()
if op.is_ovf():
@@ -38,12 +39,12 @@
return
# did we do the exact same operation already?
- oldop = self.pure_operations.get(op)
+ oldop = self.pure_operations.get(orig_op)
if oldop is not None:
- self.replace(op, oldop)
+ self.optimizer.replace(op, oldop)
return
else:
- self.pure_operations.set(op, op)
+ self.pure_operations.set(orig_op, op)
self.remember_emitting_pure(op)
# otherwise, the operation remains
diff --git a/pypy/jit/metainterp/optimizeopt/test/test_optimizebasic.py b/pypy/jit/metainterp/optimizeopt/test/test_optimizebasic.py
--- a/pypy/jit/metainterp/optimizeopt/test/test_optimizebasic.py
+++ b/pypy/jit/metainterp/optimizeopt/test/test_optimizebasic.py
@@ -368,15 +368,15 @@
ops = """
[i0]
i1 = int_is_true(i0)
- guard_true(i1) []
+ guard_true(i1)
i2 = int_is_true(i0)
- guard_true(i2) []
+ guard_true(i2)
jump(i0)
"""
expected = """
[i0]
i1 = int_is_true(i0)
- guard_true(i1) []
+ guard_true(i1)
jump(i0)
"""
self.optimize_loop(ops, expected)
diff --git a/pypy/jit/metainterp/optmodel.py b/pypy/jit/metainterp/optmodel.py
--- a/pypy/jit/metainterp/optmodel.py
+++ b/pypy/jit/metainterp/optmodel.py
@@ -6,7 +6,7 @@
from pypy.jit.metainterp.resoperation import opclasses, opclasses_mutable, rop,\
INT, REF, ConstInt, Const
from pypy.jit.metainterp.optimizeopt.intutils import ImmutableIntUnbounded,\
- ConstantIntBound
+ ConstantIntBound, IntBound
class __extend__(ConstInt):
def getintbound(self):
@@ -50,7 +50,13 @@
return False
def int_is_nonnull(self):
- xxx
+ intbound = self.getintbound()
+ if intbound is not None:
+ if intbound.known_gt(IntBound(0, 0)) or \
+ intbound.known_lt(IntBound(0, 0)):
+ return True
+ return False
+ return False
def ref_is_null(self):
return False
More information about the pypy-commit
mailing list