[pypy-commit] pypy jit-opaque-licm: allow getitems whos *result* is opaque with unknown class

hakanardo noreply at buildbot.pypy.org
Sat Jul 21 11:29:14 CEST 2012


Author: Hakan Ardo <hakan at debian.org>
Branch: jit-opaque-licm
Changeset: r56304:57f5a3d55384
Date: 2012-07-21 09:35 +0200
http://bitbucket.org/pypy/pypy/changeset/57f5a3d55384/

Log:	allow getitems whos *result* is opaque with unknown class

diff --git a/pypy/jit/metainterp/optimizeopt/test/test_optimizeopt.py b/pypy/jit/metainterp/optimizeopt/test/test_optimizeopt.py
--- a/pypy/jit/metainterp/optimizeopt/test/test_optimizeopt.py
+++ b/pypy/jit/metainterp/optimizeopt/test/test_optimizeopt.py
@@ -7899,11 +7899,10 @@
         jump(p1)
         """
         expected = """
-        [p1]
-        p2 = getfield_gc(p1, descr=nextdescr)  # FIXME: This first getfield would be ok to licm out
-        i3 = getfield_gc(p2, descr=otherdescr) # While this needs be kept in the loop
+        [p1, p2]
+        i3 = getfield_gc(p2, descr=otherdescr)
         i4 = call(i3, descr=nonwritedescr)
-        jump(p1)
+        jump(p1, p2)
         """
         self.optimize_loop(ops, expected)
 
diff --git a/pypy/jit/metainterp/optimizeopt/virtualstate.py b/pypy/jit/metainterp/optimizeopt/virtualstate.py
--- a/pypy/jit/metainterp/optimizeopt/virtualstate.py
+++ b/pypy/jit/metainterp/optimizeopt/virtualstate.py
@@ -683,9 +683,8 @@
             value = self.optimizer.values[op.result]
             if value in self.optimizer.opaque_pointers:
                 classbox = value.get_constant_class(self.optimizer.cpu)
-                if classbox is None:
-                    return
-                self.assumed_classes[op.result] = classbox
+                if classbox:
+                    self.assumed_classes[op.result] = classbox
         if op.result not in self.potential_ops:
             self.potential_ops[op.result] = op
         else:


More information about the pypy-commit mailing list