[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