Author: Armin Rigo <ar...@tunes.org> Branch: shadowstack-perf-2 Changeset: r84458:1e781611bfbb Date: 2016-05-15 13:19 +0200 http://bitbucket.org/pypy/pypy/changeset/1e781611bfbb/
Log: More tests diff --git a/rpython/memory/gctransform/test/test_shadowcolor.py b/rpython/memory/gctransform/test/test_shadowcolor.py --- a/rpython/memory/gctransform/test/test_shadowcolor.py +++ b/rpython/memory/gctransform/test/test_shadowcolor.py @@ -444,3 +444,73 @@ 'int_sub': 1, 'direct_call': 2, } + +def test_move_pushes_earlier_rename_3(): + def g(a): + pass + def f(a, b): + llop.gc_push_roots(lltype.Void, b) + g(a) + llop.gc_pop_roots(lltype.Void, b) + while a > 10: + a -= 2 + c = lltype.cast_opaque_ptr(PSTRUCT, b) + while a > 10: + a -= 2 + llop.gc_push_roots(lltype.Void, c) + g(a) + llop.gc_pop_roots(lltype.Void, c) + return c + + graph = make_graph(f, [int, llmemory.GCREF]) + regalloc = allocate_registers(graph) + expand_push_roots(graph, regalloc) + move_pushes_earlier(graph, regalloc) + expand_pop_roots(graph, regalloc) + assert graphmodel.summary(graph) == { + 'gc_save_root': 1, + 'gc_restore_root': 2, + 'cast_opaque_ptr': 1, + 'int_gt': 2, + 'int_sub': 2, + 'direct_call': 2, + } + +def test_move_pushes_earlier_rename_4(): + def g(a): + return a - 2 + def f(a, b): + while a > 10: + b1 = lltype.cast_opaque_ptr(PSTRUCT, b) + while a > 100: + a -= 3 + b2 = lltype.cast_opaque_ptr(llmemory.GCREF, b1) + llop.gc_push_roots(lltype.Void, b2) + a = g(a) + llop.gc_pop_roots(lltype.Void, b2) + b3 = lltype.cast_opaque_ptr(PSTRUCT, b2) + while a > 100: + a -= 4 + b4 = lltype.cast_opaque_ptr(llmemory.GCREF, b3) + llop.gc_push_roots(lltype.Void, b4) + a = g(a) + llop.gc_pop_roots(lltype.Void, b4) + b5 = lltype.cast_opaque_ptr(PSTRUCT, b4) + while a > 100: + a -= 5 + b = lltype.cast_opaque_ptr(llmemory.GCREF, b5) + return b + + graph = make_graph(f, [int, llmemory.GCREF]) + regalloc = allocate_registers(graph) + expand_push_roots(graph, regalloc) + move_pushes_earlier(graph, regalloc) + expand_pop_roots(graph, regalloc) + assert graphmodel.summary(graph) == { + 'gc_save_root': 1, + 'gc_restore_root': 2, + 'cast_opaque_ptr': 6, + 'int_gt': 4, + 'int_sub': 3, + 'direct_call': 2, + } _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit