[pypy-commit] pypy default: when escaping an array, remember its length
cfbolz
noreply at buildbot.pypy.org
Tue May 12 18:35:09 CEST 2015
Author: Carl Friedrich Bolz <cfbolz at gmx.de>
Branch:
Changeset: r77300:64c5ab2ff81e
Date: 2015-05-12 18:32 +0200
http://bitbucket.org/pypy/pypy/changeset/64c5ab2ff81e/
Log: when escaping an array, remember its length
diff --git a/rpython/jit/metainterp/optimizeopt/test/test_optimizebasic.py b/rpython/jit/metainterp/optimizeopt/test/test_optimizebasic.py
--- a/rpython/jit/metainterp/optimizeopt/test/test_optimizebasic.py
+++ b/rpython/jit/metainterp/optimizeopt/test/test_optimizebasic.py
@@ -1240,12 +1240,12 @@
escape(i2)
jump()
"""
+ # also check that the length of the forced array is known
expected = """
[]
p1 = new_array(3, descr=arraydescr)
escape(p1)
- i2 = arraylen_gc(p1)
- escape(i2)
+ escape(3)
jump()
"""
self.optimize_loop(ops, expected)
diff --git a/rpython/jit/metainterp/optimizeopt/test/test_optimizeopt.py b/rpython/jit/metainterp/optimizeopt/test/test_optimizeopt.py
--- a/rpython/jit/metainterp/optimizeopt/test/test_optimizeopt.py
+++ b/rpython/jit/metainterp/optimizeopt/test/test_optimizeopt.py
@@ -1688,8 +1688,7 @@
[]
p1 = new_array(3, descr=arraydescr)
escape(p1)
- i2 = arraylen_gc(p1)
- escape(i2)
+ escape(3)
jump()
"""
self.optimize_loop(ops, expected)
diff --git a/rpython/jit/metainterp/optimizeopt/virtualize.py b/rpython/jit/metainterp/optimizeopt/virtualize.py
--- a/rpython/jit/metainterp/optimizeopt/virtualize.py
+++ b/rpython/jit/metainterp/optimizeopt/virtualize.py
@@ -347,6 +347,7 @@
[box, ConstInt(index), subbox], None,
descr=self.arraydescr)
optforce.emit_operation(op)
+ optforce.pure(rop.ARRAYLEN_GC, [box], ConstInt(len(self._items)))
@specialize.argtype(1)
def _visitor_dispatch_virtual_type(self, visitor):
More information about the pypy-commit
mailing list