[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