[pypy-commit] pypy default: Arrays of struct need a getlength() too.

arigo noreply at buildbot.pypy.org
Sat May 11 13:44:32 CEST 2013


Author: Armin Rigo <arigo at tunes.org>
Branch: 
Changeset: r63975:5c4cc250d96c
Date: 2013-05-11 12:36 +0200
http://bitbucket.org/pypy/pypy/changeset/5c4cc250d96c/

Log:	Arrays of struct need a getlength() too.

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
@@ -1005,6 +1005,19 @@
         """
         self.optimize_loop(ops, expected)
 
+    def test_virtual_array_of_struct_len(self):
+        ops = """
+        []
+        p0 = new_array(2, descr=complexarraydescr)
+        i0 = arraylen_gc(p0)
+        finish(i0)
+        """
+        expected = """
+        []
+        finish(2)
+        """
+        self.optimize_loop(ops, expected)
+
     def test_nonvirtual_1(self):
         ops = """
         [i]
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
@@ -332,6 +332,9 @@
         self.arraydescr = arraydescr
         self._items = [{} for _ in xrange(size)]
 
+    def getlength(self):
+        return len(self._items)
+
     def getinteriorfield(self, index, ofs, default):
         return self._items[index].get(ofs, default)
 


More information about the pypy-commit mailing list