コード例 #1
0
def test_constfold():
    layoutbuilder = TypeLayoutBuilder(FakeGC, {})
    tid1 = layoutbuilder.get_type_id(GC_A)
    tid2 = layoutbuilder.get_type_id(GC_S3)

    class MockGC:
        def set_query_functions(self, is_varsize, has_gcptr_in_varsize,
                                is_gcarrayofgcptr, *rest):
            self.is_varsize = is_varsize
            self.has_gcptr_in_varsize = has_gcptr_in_varsize
            self.is_gcarrayofgcptr = is_gcarrayofgcptr

    gc = MockGC()
    layoutbuilder.initialize_gc_query_function(gc)

    #
    def f():
        return (1 * gc.is_varsize(tid1) + 10 * gc.has_gcptr_in_varsize(tid1) +
                100 * gc.is_gcarrayofgcptr(tid1) + 1000 * gc.is_varsize(tid2) +
                10000 * gc.has_gcptr_in_varsize(tid2) +
                100000 * gc.is_gcarrayofgcptr(tid2))

    interp, graph = get_interpreter(f, [], backendopt=True)
    assert interp.eval_graph(graph, []) == 11001
    assert graph.startblock.exits[0].args == [Constant(11001, lltype.Signed)]
コード例 #2
0
ファイル: test_gctypelayout.py プロジェクト: griels/pypy-sc
def test_layout_builder():
    # XXX a very minimal test
    layoutbuilder = TypeLayoutBuilder()
    for T1, T2 in [(GC_A, GC_S), (GC_A2, GC_S2), (GC_S3, GC_S2)]:
        tid1 = layoutbuilder.get_type_id(T1)
        tid2 = layoutbuilder.get_type_id(T2)
        gcdata = GCData(layoutbuilder.type_info_list)
        lst1 = gcdata.q_varsize_offsets_to_gcpointers_in_var_part(tid1)
        lst2 = gcdata.q_offsets_to_gc_pointers(tid2)
        assert len(lst1) == len(lst2)
コード例 #3
0
ファイル: test_direct.py プロジェクト: griels/pypy-sc
 def setup_method(self, meth):
     self.stackroots = []
     self.gc = self.GCClass(**self.GC_PARAMS)
     self.gc.DEBUG = True
     self.rootwalker = DirectRootWalker(self)
     self.gc.set_root_walker(self.rootwalker)
     self.layoutbuilder = TypeLayoutBuilder()
     self.get_type_id = self.layoutbuilder.get_type_id
     self.layoutbuilder.initialize_gc_query_function(self.gc)
     self.gc.setup()
コード例 #4
0
 def setup_method(self, meth):
     from pypy.config.pypyoption import get_pypy_config
     config = get_pypy_config(translating=True).translation
     self.stackroots = []
     self.gc = self.GCClass(config, **self.GC_PARAMS)
     self.gc.DEBUG = True
     self.rootwalker = DirectRootWalker(self)
     self.gc.set_root_walker(self.rootwalker)
     self.layoutbuilder = TypeLayoutBuilder(self.GCClass, {})
     self.get_type_id = self.layoutbuilder.get_type_id
     self.layoutbuilder.initialize_gc_query_function(self.gc)
     self.gc.setup()
コード例 #5
0
 def setup_method(self, meth):
     from pypy.config.pypyoption import get_pypy_config
     config = get_pypy_config(translating=True).translation
     self.stackroots = []
     GC_PARAMS = self.GC_PARAMS.copy()
     if hasattr(meth, 'GC_PARAMS'):
         GC_PARAMS.update(meth.GC_PARAMS)
     GC_PARAMS['translated_to_c'] = False
     self.gc = self.GCClass(config, **GC_PARAMS)
     self.gc.DEBUG = True
     self.rootwalker = DirectRootWalker(self)
     self.gc.set_root_walker(self.rootwalker)
     self.layoutbuilder = TypeLayoutBuilder(self.GCClass)
     self.get_type_id = self.layoutbuilder.get_type_id
     self.layoutbuilder.initialize_gc_query_function(self.gc)
     self.gc.setup()