Author: Hakan Ardo <[email protected]>
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:
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to