def test_list_operations(): class A(object): pass def f(): l = [A(), A()] l.append(A()) l[1] = l[0] return len(l) t = rtype(f, []) backend_optimizations(t, clever_malloc_removal=False, storesink=True) etrafo = ExceptionTransformer(t) graph = etrafo.transform_completely() collect_analyzer = CollectAnalyzer(t) clean_setarrayitems = find_clean_setarrayitems(collect_analyzer, t.graphs[0]) assert len(clean_setarrayitems) == 1
def test_list_operations(): class A(object): pass def f(): l = [A(), A()] l.append(A()) l[1] = l[0] return len(l) t = rtype(f, []) backend_optimizations(t, clever_malloc_removal=False, storesink=True) etrafo = ExceptionTransformer(t) graph = etrafo.transform_completely() collect_analyzer = CollectAnalyzer(t) clean_setarrayitems = find_clean_setarrayitems(collect_analyzer, t.graphs[0]) assert len(clean_setarrayitems) == 1
def test_find_clean_setarrayitems(): S = lltype.GcStruct('S') A = lltype.GcArray(lltype.Ptr(S)) def f(): l = lltype.malloc(A, 3) l[0] = lltype.malloc(S) l[1] = lltype.malloc(S) l[2] = lltype.malloc(S) x = l[1] l[0] = x return len(l) t = rtype(f, []) etrafo = ExceptionTransformer(t) graph = etrafo.transform_completely() collect_analyzer = CollectAnalyzer(t) clean_setarrayitems = find_clean_setarrayitems(collect_analyzer, t.graphs[0]) assert len(clean_setarrayitems) == 1
def test_find_clean_setarrayitems(): S = lltype.GcStruct('S') A = lltype.GcArray(lltype.Ptr(S)) def f(): l = lltype.malloc(A, 3) l[0] = lltype.malloc(S) l[1] = lltype.malloc(S) l[2] = lltype.malloc(S) x = l[1] l[0] = x return len(l) t = rtype(f, []) etrafo = ExceptionTransformer(t) graph = etrafo.transform_completely() collect_analyzer = CollectAnalyzer(t) clean_setarrayitems = find_clean_setarrayitems(collect_analyzer, t.graphs[0]) assert len(clean_setarrayitems) == 1