Author: Armin Rigo <[email protected]>
Branch: op_malloc_gc
Changeset: r49511:b5fdf3f1574e
Date: 2011-11-17 17:59 +0100
http://bitbucket.org/pypy/pypy/changeset/b5fdf3f1574e/
Log: Clean up the tests.
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,95 +547,96 @@
assert operations[1].getarg(2) == v_value
assert operations[1].getdescr() == array_descr
- def test_rewrite_assembler_new_to_malloc(self):
+ def check_rewrite(self, frm_operations, to_operations):
self.gc_ll_descr.translate_support_code = False
try:
S = lltype.GcStruct('S', ('x', lltype.Signed))
sdescr = get_size_descr(self.gc_ll_descr, S)
sdescr.tid = 1234
- finally:
- self.gc_ll_descr.translate_support_code = True
- tiddescr = self.gc_ll_descr.fielddescr_tid
- ops = parse("""
- [p1]
- p0 = new(descr=sdescr)
- jump()
- """, namespace=locals())
- expected = parse("""
- [p1]
- p0 = malloc_gc(%d)
- setfield_gc(p0, 1234, descr=tiddescr)
- jump()
- """ % (sdescr.size,), namespace=locals())
- operations = get_deep_immutable_oplist(ops.operations)
- operations = self.gc_ll_descr.rewrite_assembler(self.fake_cpu,
- operations, [])
- equaloplists(operations, expected.operations)
-
- def test_rewrite_assembler_new3_to_malloc(self):
- self.gc_ll_descr.translate_support_code = False
- try:
- S = lltype.GcStruct('S', ('x', lltype.Signed))
- sdescr = get_size_descr(self.gc_ll_descr, S)
- sdescr.tid = 1234
+ #
T = lltype.GcStruct('T', ('y', lltype.Signed),
('z', 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)
+ #
+ tiddescr = self.gc_ll_descr.fielddescr_tid
+ #
+ 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
- tiddescr = self.gc_ll_descr.fielddescr_tid
- ops = parse("""
- []
- p0 = new(descr=sdescr)
- p1 = new(descr=tdescr)
- p2 = new(descr=sdescr)
- jump()
- """, namespace=locals())
- expected = parse("""
- []
- p0 = malloc_gc(%d)
- setfield_gc(p0, 1234, descr=tiddescr)
- p1 = int_add(p0, %d)
- setfield_gc(p1, 5678, descr=tiddescr)
- p2 = int_add(p1, %d)
- setfield_gc(p2, 1234, descr=tiddescr)
- jump()
- """ % (sdescr.size + tdescr.size + sdescr.size,
- sdescr.size,
- tdescr.size), namespace=locals())
- operations = get_deep_immutable_oplist(ops.operations)
- operations = self.gc_ll_descr.rewrite_assembler(self.fake_cpu,
- operations, [])
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.gc_ll_descr.translate_support_code = False
- try:
- A = lltype.GcArray(lltype.Signed)
- adescr = get_array_descr(self.gc_ll_descr, A)
- adescr.tid = 1234
- lengthdescr = get_field_arraylen_descr(self.gc_ll_descr, A)
- finally:
- self.gc_ll_descr.translate_support_code = True
- tiddescr = self.gc_ll_descr.fielddescr_tid
- ops = parse("""
- []
- p0 = new_array(10, descr=adescr)
- jump()
- """, namespace=locals())
- expected = parse("""
- []
- p0 = malloc_gc(%d)
- setfield_gc(p0, 1234, descr=tiddescr)
- setfield_gc(p0, 10, descr=lengthdescr)
- jump()
- """ % (adescr.get_base_size(False) + 10 *
adescr.get_item_size(False),),
- namespace=locals())
- operations = get_deep_immutable_oplist(ops.operations)
- operations = self.gc_ll_descr.rewrite_assembler(self.fake_cpu,
- operations, [])
- equaloplists(operations, expected.operations)
+ 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_initialization_store(self):
S = lltype.GcStruct('S', ('parent', OBJECT),
@@ -706,5 +707,11 @@
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'
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit