[pypy-commit] pypy op_malloc_gc: Move the new tests to their own file.

arigo noreply at buildbot.pypy.org
Fri Nov 18 19:02:44 CET 2011


Author: Armin Rigo <arigo at tunes.org>
Branch: op_malloc_gc
Changeset: r49536:feae28c11d92
Date: 2011-11-18 19:02 +0100
http://bitbucket.org/pypy/pypy/changeset/feae28c11d92/

Log:	Move the new tests to their own file.

diff --git a/pypy/jit/backend/llsupport/test/test_gc.py b/pypy/jit/backend/llsupport/test/test_gc.py
--- a/pypy/jit/backend/llsupport/test/test_gc.py
+++ b/pypy/jit/backend/llsupport/test/test_gc.py
@@ -547,184 +547,6 @@
             assert operations[1].getarg(2) == v_value
             assert operations[1].getdescr() == array_descr
 
-    def check_rewrite(self, frm_operations, to_operations):
-        self.gc_ll_descr.translate_support_code = False
-        try:
-            S = lltype.GcStruct('S', ('x', lltype.Signed),
-                                     ('y', lltype.Signed))
-            sdescr = get_size_descr(self.gc_ll_descr, S)
-            sdescr.tid = 1234
-            #
-            T = lltype.GcStruct('T', ('y', lltype.Signed),
-                                     ('z', lltype.Signed),
-                                     ('t', lltype.Signed))
-            tdescr = get_size_descr(self.gc_ll_descr, T)
-            tdescr.tid = 5678
-            #
-            A = lltype.GcArray(lltype.Signed)
-            adescr = get_array_descr(self.gc_ll_descr, A)
-            adescr.tid = 4321
-            alendescr = get_field_arraylen_descr(self.gc_ll_descr, A)
-            #
-            B = lltype.GcArray(lltype.Char)
-            bdescr = get_array_descr(self.gc_ll_descr, B)
-            bdescr.tid = 8765
-            blendescr = get_field_arraylen_descr(self.gc_ll_descr, B)
-            #
-            E = lltype.GcStruct('Empty')
-            edescr = get_size_descr(self.gc_ll_descr, E)
-            edescr.tid = 9000
-            #
-            tiddescr = self.gc_ll_descr.fielddescr_tid
-            WORD = globals()['WORD']
-            #
-            ops = parse(frm_operations, namespace=locals())
-            expected = parse(to_operations % Evaluator(locals()),
-                             namespace=locals())
-            operations = get_deep_immutable_oplist(ops.operations)
-            operations = self.gc_ll_descr.rewrite_assembler(self.fake_cpu,
-                                                            operations, [])
-        finally:
-            self.gc_ll_descr.translate_support_code = True
-        equaloplists(operations, expected.operations)
-
-    def test_rewrite_assembler_new_to_malloc(self):
-        self.check_rewrite("""
-            [p1]
-            p0 = new(descr=sdescr)
-            jump()
-        """, """
-            [p1]
-            p0 = malloc_gc(%(sdescr.size)d)
-            setfield_gc(p0, 1234, descr=tiddescr)
-            jump()
-        """)
-
-    def test_rewrite_assembler_new3_to_malloc(self):
-        self.check_rewrite("""
-            []
-            p0 = new(descr=sdescr)
-            p1 = new(descr=tdescr)
-            p2 = new(descr=sdescr)
-            jump()
-        """, """
-            []
-            p0 = malloc_gc(%(sdescr.size + tdescr.size + sdescr.size)d)
-            setfield_gc(p0, 1234, descr=tiddescr)
-            p1 = int_add(p0, %(sdescr.size)d)
-            setfield_gc(p1, 5678, descr=tiddescr)
-            p2 = int_add(p1, %(tdescr.size)d)
-            setfield_gc(p2, 1234, descr=tiddescr)
-            jump()
-        """)
-
-    def test_rewrite_assembler_new_array_fixed_to_malloc(self):
-        self.check_rewrite("""
-            []
-            p0 = new_array(10, descr=adescr)
-            jump()
-        """, """
-            []
-            p0 = malloc_gc(%(adescr.get_base_size(False) +        \
-                             10 * adescr.get_item_size(False))d)
-            setfield_gc(p0, 4321, descr=tiddescr)
-            setfield_gc(p0, 10, descr=alendescr)
-            jump()
-        """)
-
-    def test_rewrite_assembler_new_and_new_array_fixed_to_malloc(self):
-        self.check_rewrite("""
-            []
-            p0 = new(descr=sdescr)
-            p1 = new_array(10, descr=adescr)
-            jump()
-        """, """
-            []
-            p0 = malloc_gc(%(sdescr.size +                        \
-                             adescr.get_base_size(False) +        \
-                             10 * adescr.get_item_size(False))d)
-            setfield_gc(p0, 1234, descr=tiddescr)
-            p1 = int_add(p0, %(sdescr.size)d)
-            setfield_gc(p1, 4321, descr=tiddescr)
-            setfield_gc(p1, 10, descr=alendescr)
-            jump()
-        """)
-
-    def test_rewrite_assembler_round_up(self):
-        self.check_rewrite("""
-            []
-            p0 = new_array(6, descr=bdescr)
-            jump()
-        """, """
-            []
-            p0 = malloc_gc(%(adescr.get_base_size(False) + 8)d)
-            setfield_gc(p0, 8765, descr=tiddescr)
-            setfield_gc(p0, 6, descr=blendescr)
-            jump()
-        """)
-
-    def test_rewrite_assembler_round_up_always(self):
-        self.check_rewrite("""
-            []
-            p0 = new_array(5, descr=bdescr)
-            p1 = new_array(5, descr=bdescr)
-            p2 = new_array(5, descr=bdescr)
-            p3 = new_array(5, descr=bdescr)
-            jump()
-        """, """
-            []
-            p0 = malloc_gc(%(4 * (adescr.get_base_size(False) + 8))d)
-            setfield_gc(p0, 8765, descr=tiddescr)
-            setfield_gc(p0, 5, descr=blendescr)
-            p1 = int_add(p0, %(adescr.get_base_size(False) + 8)d)
-            setfield_gc(p1, 8765, descr=tiddescr)
-            setfield_gc(p1, 5, descr=blendescr)
-            p2 = int_add(p1, %(adescr.get_base_size(False) + 8)d)
-            setfield_gc(p2, 8765, descr=tiddescr)
-            setfield_gc(p2, 5, descr=blendescr)
-            p3 = int_add(p2, %(adescr.get_base_size(False) + 8)d)
-            setfield_gc(p3, 8765, descr=tiddescr)
-            setfield_gc(p3, 5, descr=blendescr)
-            jump()
-        """)
-
-    def test_rewrite_assembler_minimal_size(self):
-        self.check_rewrite("""
-            []
-            p0 = new(descr=edescr)
-            p1 = new(descr=edescr)
-            jump()
-        """, """
-            []
-            p0 = malloc_gc(%(4*WORD)d)
-            setfield_gc(p0, 9000, descr=tiddescr)
-            p1 = int_add(p0, %(2*WORD)d)
-            setfield_gc(p1, 9000, descr=tiddescr)
-            jump()
-        """)
-
-    def test_rewrite_assembler_maximal_size(self):
-        xxx
-
-    def test_rewrite_assembler_variable_size(self):
-        xxx
-
-    def test_rewrite_assembler_new_with_vtable(self):
-        self.check_rewrite("""
-            [p1]
-            p0 = new_with_vtable(descr=vdescr)
-            jump()
-        """, """
-            [p1]
-            p0 = malloc_gc(%(vdescr.size)d)
-            setfield_gc(p0, 1234, descr=tiddescr)
-            ...
-            jump()
-        """)
-
-    def test_rewrite_assembler_newstr_newunicode(self):
-        xxx
-
     def test_rewrite_assembler_initialization_store(self):
         S = lltype.GcStruct('S', ('parent', OBJECT),
                             ('x', lltype.Signed))
@@ -794,11 +616,6 @@
                                                         operations, [])
         equaloplists(operations, expected.operations)
 
-class Evaluator(object):
-    def __init__(self, scope):
-        self.scope = scope
-    def __getitem__(self, key):
-        return eval(key, self.scope)
 
 class TestFrameworkMiniMark(TestFramework):
     gc = 'minimark'
diff --git a/pypy/jit/backend/llsupport/test/test_rewrite.py b/pypy/jit/backend/llsupport/test/test_rewrite.py
new file mode 100644
--- /dev/null
+++ b/pypy/jit/backend/llsupport/test/test_rewrite.py
@@ -0,0 +1,267 @@
+from pypy.jit.backend.llsupport.descr import *
+from pypy.jit.backend.llsupport.gc import *
+from pypy.jit.metainterp.gc import get_description
+from pypy.jit.tool.oparser import parse
+
+
+class Evaluator(object):
+    def __init__(self, scope):
+        self.scope = scope
+    def __getitem__(self, key):
+        return eval(key, self.scope)
+
+
+class RewriteTests(object):
+    def check_rewrite(self, frm_operations, to_operations):
+        self.gc_ll_descr.translate_support_code = False
+        try:
+            S = lltype.GcStruct('S', ('x', lltype.Signed),
+                                     ('y', lltype.Signed))
+            sdescr = get_size_descr(self.gc_ll_descr, S)
+            sdescr.tid = 1234
+            #
+            T = lltype.GcStruct('T', ('y', lltype.Signed),
+                                     ('z', lltype.Signed),
+                                     ('t', lltype.Signed))
+            tdescr = get_size_descr(self.gc_ll_descr, T)
+            tdescr.tid = 5678
+            #
+            A = lltype.GcArray(lltype.Signed)
+            adescr = get_array_descr(self.gc_ll_descr, A)
+            adescr.tid = 4321
+            alendescr = get_field_arraylen_descr(self.gc_ll_descr, A)
+            #
+            B = lltype.GcArray(lltype.Char)
+            bdescr = get_array_descr(self.gc_ll_descr, B)
+            bdescr.tid = 8765
+            blendescr = get_field_arraylen_descr(self.gc_ll_descr, B)
+            #
+            E = lltype.GcStruct('Empty')
+            edescr = get_size_descr(self.gc_ll_descr, E)
+            edescr.tid = 9000
+            #
+            tiddescr = self.gc_ll_descr.fielddescr_tid
+            WORD = globals()['WORD']
+            #
+            ops = parse(frm_operations, namespace=locals())
+            expected = parse(to_operations % Evaluator(locals()),
+                             namespace=locals())
+            operations = self.gc_ll_descr.rewrite_assembler(None,
+                                                            ops.operations,
+                                                            [])
+        finally:
+            self.gc_ll_descr.translate_support_code = True
+        equaloplists(operations, expected.operations)
+
+    def test_new_array_variable(self):
+        self.check_rewrite("""
+            [i1]
+            p0 = new_array(i1, descr=adescr)
+            jump()
+        """, """
+            [i1]
+            p0 = malloc_gc(%(adescr.get_base_size(False))d,         \
+                           i1, %(adescr.get_item_size(False))d)
+            setfield_gc(p0, 4321, descr=tiddescr)
+            setfield_gc(p0, 10, descr=alendescr)
+            jump()
+        """)
+
+
+class TestBoehm(RewriteTests):
+    def setup_method(self, meth):
+        self.gc_ll_descr = GcLLDescr_boehm(None, None, None)
+
+    def test_new(self):
+        self.check_rewrite("""
+            []
+            p0 = new(descr=sdescr)
+            jump()
+        """, """
+            [p1]
+            p0 = malloc_gc(%(sdescr.size)d, 0, 0)
+            setfield_gc(p0, 1234, descr=tiddescr)
+            jump()
+        """)
+
+    def test_no_collapsing(self):
+        self.check_rewrite("""
+            []
+            p0 = new(descr=sdescr)
+            p1 = new(descr=sdescr)
+            jump()
+        """, """
+            [p1]
+            p0 = malloc_gc(%(sdescr.size)d, 0, 0)
+            setfield_gc(p0, 1234, descr=tiddescr)
+            p1 = malloc_gc(%(sdescr.size)d, 0, 0)
+            setfield_gc(p1, 1234, descr=tiddescr)
+            jump()
+        """)
+
+    def test_new_array_fixed(self):
+        self.check_rewrite("""
+            []
+            p0 = new_array(10, descr=adescr)
+            jump()
+        """, """
+            []
+            p0 = malloc_gc(%(adescr.get_base_size(False))d,         \
+                           10, %(adescr.get_item_size(False))d)
+            setfield_gc(p0, 4321, descr=tiddescr)
+            setfield_gc(p0, 10, descr=alendescr)
+            jump()
+        """)
+
+
+class TestFramework(RewriteTests):
+    def setup_method(self, meth):
+        class config_(object):
+            class translation(object):
+                gc = 'hybrid'
+                gcrootfinder = 'asmgcc'
+                gctransformer = 'framework'
+                gcremovetypeptr = False
+        class FakeTranslator(object):
+            config = config_
+        gcdescr = get_description(config_)
+        self.gc_ll_descr = GcLLDescr_framework(gcdescr, FakeTranslator(),
+                                               None, None)
+
+    def test_rewrite_assembler_new_to_malloc(self):
+        self.check_rewrite("""
+            [p1]
+            p0 = new(descr=sdescr)
+            jump()
+        """, """
+            [p1]
+            p0 = malloc_nursery(%(sdescr.size)d)
+            setfield_gc(p0, 1234, descr=tiddescr)
+            jump()
+        """)
+
+    def test_rewrite_assembler_new3_to_malloc(self):
+        self.check_rewrite("""
+            []
+            p0 = new(descr=sdescr)
+            p1 = new(descr=tdescr)
+            p2 = new(descr=sdescr)
+            jump()
+        """, """
+            []
+            p0 = malloc_nursery(%(sdescr.size + tdescr.size + sdescr.size)d)
+            setfield_gc(p0, 1234, descr=tiddescr)
+            p1 = int_add(p0, %(sdescr.size)d)
+            setfield_gc(p1, 5678, descr=tiddescr)
+            p2 = int_add(p1, %(tdescr.size)d)
+            setfield_gc(p2, 1234, descr=tiddescr)
+            jump()
+        """)
+
+    def test_rewrite_assembler_new_array_fixed_to_malloc(self):
+        self.check_rewrite("""
+            []
+            p0 = new_array(10, descr=adescr)
+            jump()
+        """, """
+            []
+            p0 = malloc_nursery(%(adescr.get_base_size(False) +        \
+                                  10 * adescr.get_item_size(False))d)
+            setfield_gc(p0, 4321, descr=tiddescr)
+            setfield_gc(p0, 10, descr=alendescr)
+            jump()
+        """)
+
+    def test_rewrite_assembler_new_and_new_array_fixed_to_malloc(self):
+        self.check_rewrite("""
+            []
+            p0 = new(descr=sdescr)
+            p1 = new_array(10, descr=adescr)
+            jump()
+        """, """
+            []
+            p0 = malloc_nursery(%(sdescr.size +                        \
+                                  adescr.get_base_size(False) +        \
+                                  10 * adescr.get_item_size(False))d)
+            setfield_gc(p0, 1234, descr=tiddescr)
+            p1 = int_add(p0, %(sdescr.size)d)
+            setfield_gc(p1, 4321, descr=tiddescr)
+            setfield_gc(p1, 10, descr=alendescr)
+            jump()
+        """)
+
+    def test_rewrite_assembler_round_up(self):
+        self.check_rewrite("""
+            []
+            p0 = new_array(6, descr=bdescr)
+            jump()
+        """, """
+            []
+            p0 = malloc_nursery(%(adescr.get_base_size(False) + 8)d)
+            setfield_gc(p0, 8765, descr=tiddescr)
+            setfield_gc(p0, 6, descr=blendescr)
+            jump()
+        """)
+
+    def test_rewrite_assembler_round_up_always(self):
+        self.check_rewrite("""
+            []
+            p0 = new_array(5, descr=bdescr)
+            p1 = new_array(5, descr=bdescr)
+            p2 = new_array(5, descr=bdescr)
+            p3 = new_array(5, descr=bdescr)
+            jump()
+        """, """
+            []
+            p0 = malloc_nursery(%(4 * (adescr.get_base_size(False) + 8))d)
+            setfield_gc(p0, 8765, descr=tiddescr)
+            setfield_gc(p0, 5, descr=blendescr)
+            p1 = int_add(p0, %(adescr.get_base_size(False) + 8)d)
+            setfield_gc(p1, 8765, descr=tiddescr)
+            setfield_gc(p1, 5, descr=blendescr)
+            p2 = int_add(p1, %(adescr.get_base_size(False) + 8)d)
+            setfield_gc(p2, 8765, descr=tiddescr)
+            setfield_gc(p2, 5, descr=blendescr)
+            p3 = int_add(p2, %(adescr.get_base_size(False) + 8)d)
+            setfield_gc(p3, 8765, descr=tiddescr)
+            setfield_gc(p3, 5, descr=blendescr)
+            jump()
+        """)
+
+    def test_rewrite_assembler_minimal_size(self):
+        self.check_rewrite("""
+            []
+            p0 = new(descr=edescr)
+            p1 = new(descr=edescr)
+            jump()
+        """, """
+            []
+            p0 = malloc_nursery(%(4*WORD)d)
+            setfield_gc(p0, 9000, descr=tiddescr)
+            p1 = int_add(p0, %(2*WORD)d)
+            setfield_gc(p1, 9000, descr=tiddescr)
+            jump()
+        """)
+
+    def test_rewrite_assembler_maximal_size(self):
+        xxx
+
+    def test_rewrite_assembler_variable_size(self):
+        xxx
+
+    def test_rewrite_assembler_new_with_vtable(self):
+        self.check_rewrite("""
+            [p1]
+            p0 = new_with_vtable(descr=vdescr)
+            jump()
+        """, """
+            [p1]
+            p0 = malloc_nursery(%(vdescr.size)d)
+            setfield_gc(p0, 1234, descr=tiddescr)
+            ...
+            jump()
+        """)
+
+    def test_rewrite_assembler_newstr_newunicode(self):
+        xxx
+


More information about the pypy-commit mailing list