[pypy-svn] r58754 - in pypy/dist/pypy/translator: c/test tool tool/test

xoraxax at codespeak.net xoraxax at codespeak.net
Tue Oct 7 15:56:55 CEST 2008


Author: xoraxax
Date: Tue Oct  7 15:56:54 2008
New Revision: 58754

Modified:
   pypy/dist/pypy/translator/c/test/test_typed.py
   pypy/dist/pypy/translator/tool/staticsizereport.py
   pypy/dist/pypy/translator/tool/test/test_staticsizereport.py
Log:
(antocuni, xoraxax) Extend and fix the staticsizereport tests.

Modified: pypy/dist/pypy/translator/c/test/test_typed.py
==============================================================================
--- pypy/dist/pypy/translator/c/test/test_typed.py	(original)
+++ pypy/dist/pypy/translator/c/test/test_typed.py	Tue Oct  7 15:56:54 2008
@@ -32,7 +32,7 @@
 
     def compilefunc(self, t, func):
         from pypy.translator.c import genc
-        builder = genc.CExtModuleBuilder(t, func, config=t.config)
+        self.builder = builder = genc.CExtModuleBuilder(t, func, config=t.config)
         builder.generate_source()
         builder.compile()
         return builder.get_entry_point()

Modified: pypy/dist/pypy/translator/tool/staticsizereport.py
==============================================================================
--- pypy/dist/pypy/translator/tool/staticsizereport.py	(original)
+++ pypy/dist/pypy/translator/tool/staticsizereport.py	Tue Oct  7 15:56:54 2008
@@ -91,7 +91,7 @@
 
 def print_report_static_size(database, grouper=by_lltype):
     " Reports all objects with a specified grouper. "
-    _, report = report_static_size(database.globalcontainers(), grouper)
+    _, report = make_report_static_size(database.globalcontainers(), grouper)
     for line in report:
         print format_report_line(line)
 

Modified: pypy/dist/pypy/translator/tool/test/test_staticsizereport.py
==============================================================================
--- pypy/dist/pypy/translator/tool/test/test_staticsizereport.py	(original)
+++ pypy/dist/pypy/translator/tool/test/test_staticsizereport.py	Tue Oct  7 15:56:54 2008
@@ -1,5 +1,5 @@
 from pypy.translator.c.test.test_typed import CompilationTestCase
-from pypy.translator.tool.staticsizereport import group_static_size
+from pypy.translator.tool.staticsizereport import group_static_size, guess_size
 
 class TestStaticSizeReport(CompilationTestCase):
     def test_simple(self):
@@ -16,8 +16,24 @@
                 return a.key
             return a.next.key
         func = self.getcompiled(f, [int])
-        size, num = group_static_size(self.builder.db)
+        size, num = group_static_size(self.builder.db, self.builder.db.globalcontainers())
         for key, value in num.iteritems():
             if "staticsizereport.A" in str(key) and "vtable" not in str(key):
                 assert value == 101
 
+    def test_large_dict(self):
+        d = {}
+        class wrap:
+            pass
+        for x in xrange(100):
+            i = wrap()
+            i.x = x
+            d[x] = i
+        def f(x):
+            return d[x].x
+        func = self.getcompiled(f, [int])
+        gcontainers = self.builder.db.globalcontainers()
+        dictvalnode = [node for node in gcontainers if "struct dicttable" in repr(node.obj)][0]
+        assert guess_size(self.builder.db, dictvalnode, set()) > 100
+        size, num = group_static_size(self.builder.db, gcontainers)
+        1/0



More information about the Pypy-commit mailing list