[pypy-commit] pypy jitypes2: Double this test, once with asmgcc and once with shadowstack.
arigo
noreply at buildbot.pypy.org
Mon May 30 17:27:30 CEST 2011
Author: Armin Rigo <arigo at tunes.org>
Branch: jitypes2
Changeset: r44593:97707165f2fc
Date: 2011-05-30 16:51 +0200
http://bitbucket.org/pypy/pypy/changeset/97707165f2fc/
Log: Double this test, once with asmgcc and once with shadowstack.
diff --git a/pypy/jit/backend/x86/test/test_zrpy_gc.py b/pypy/jit/backend/x86/test/test_zrpy_gc.py
--- a/pypy/jit/backend/x86/test/test_zrpy_gc.py
+++ b/pypy/jit/backend/x86/test/test_zrpy_gc.py
@@ -606,72 +606,79 @@
self.run('compile_framework_minimal_size_in_nursery')
-def test_close_stack():
- from pypy.rlib.libffi import CDLL, types, ArgChain, clibffi
- from pypy.rpython.lltypesystem.ll2ctypes import libc_name
- from pypy.rpython.annlowlevel import llhelper
- from pypy.jit.metainterp.optimizeopt import ALL_OPTS_NAMES
- #
- class Glob(object):
- pass
- glob = Glob()
- class X(object):
- pass
- #
- def callback(p1, p2):
- for i in range(100):
- glob.lst.append(X())
- return rffi.cast(rffi.INT, 1)
- CALLBACK = lltype.Ptr(lltype.FuncType([lltype.Signed,
- lltype.Signed], rffi.INT))
- #
- @dont_look_inside
- def alloc1():
- return llmemory.raw_malloc(16)
- @dont_look_inside
- def free1(p):
- llmemory.raw_free(p)
- #
- def f42():
- length = len(glob.lst)
- c_qsort = glob.c_qsort
- raw = alloc1()
- fn = llhelper(CALLBACK, rffi._make_wrapper_for(CALLBACK, callback))
- argchain = ArgChain()
- argchain = argchain.arg(rffi.cast(lltype.Signed, raw))
- argchain = argchain.arg(rffi.cast(rffi.SIZE_T, 2))
- argchain = argchain.arg(rffi.cast(rffi.SIZE_T, 8))
- argchain = argchain.arg(rffi.cast(lltype.Signed, fn))
- c_qsort.call(argchain, lltype.Void)
- free1(raw)
- check(len(glob.lst) > length)
- del glob.lst[:]
- #
- def before():
- libc = CDLL(libc_name)
- types_size_t = clibffi.cast_type_to_ffitype(rffi.SIZE_T)
- c_qsort = libc.getpointer('qsort', [types.pointer, types_size_t,
- types_size_t, types.pointer],
- types.void)
- glob.c_qsort = c_qsort
- glob.lst = []
- #
- myjitdriver = JitDriver(greens=[], reds=['n'])
- def main(n, x):
- before()
- while n > 0:
- myjitdriver.jit_merge_point(n=n)
- f42()
- n -= 1
- #
- res = compile_and_run(get_entry(get_g(main)), DEFL_GC,
- gcrootfinder="asmgcc", jit=True,
- enable_opts=ALL_OPTS_NAMES)
- assert int(res) == 20
-
-
class TestShadowStack(CompileFrameworkTests):
gcrootfinder = "shadowstack"
class TestAsmGcc(CompileFrameworkTests):
gcrootfinder = "asmgcc"
+
+
+class OtherFrameworkGCTests(object):
+ def test_close_stack(self):
+ from pypy.rlib.libffi import CDLL, types, ArgChain, clibffi
+ from pypy.rpython.lltypesystem.ll2ctypes import libc_name
+ from pypy.rpython.annlowlevel import llhelper
+ from pypy.jit.metainterp.optimizeopt import ALL_OPTS_NAMES
+ #
+ class Glob(object):
+ pass
+ glob = Glob()
+ class X(object):
+ pass
+ #
+ def callback(p1, p2):
+ for i in range(100):
+ glob.lst.append(X())
+ return rffi.cast(rffi.INT, 1)
+ CALLBACK = lltype.Ptr(lltype.FuncType([lltype.Signed,
+ lltype.Signed], rffi.INT))
+ #
+ @dont_look_inside
+ def alloc1():
+ return llmemory.raw_malloc(16)
+ @dont_look_inside
+ def free1(p):
+ llmemory.raw_free(p)
+ #
+ def f42():
+ length = len(glob.lst)
+ c_qsort = glob.c_qsort
+ raw = alloc1()
+ fn = llhelper(CALLBACK, rffi._make_wrapper_for(CALLBACK, callback))
+ argchain = ArgChain()
+ argchain = argchain.arg(rffi.cast(lltype.Signed, raw))
+ argchain = argchain.arg(rffi.cast(rffi.SIZE_T, 2))
+ argchain = argchain.arg(rffi.cast(rffi.SIZE_T, 8))
+ argchain = argchain.arg(rffi.cast(lltype.Signed, fn))
+ c_qsort.call(argchain, lltype.Void)
+ free1(raw)
+ check(len(glob.lst) > length)
+ del glob.lst[:]
+ #
+ def before():
+ libc = CDLL(libc_name)
+ types_size_t = clibffi.cast_type_to_ffitype(rffi.SIZE_T)
+ c_qsort = libc.getpointer('qsort', [types.pointer, types_size_t,
+ types_size_t, types.pointer],
+ types.void)
+ glob.c_qsort = c_qsort
+ glob.lst = []
+ #
+ myjitdriver = JitDriver(greens=[], reds=['n'])
+ def main(n, x):
+ before()
+ while n > 0:
+ myjitdriver.jit_merge_point(n=n)
+ f42()
+ n -= 1
+ #
+ res = compile_and_run(get_entry(get_g(main)), DEFL_GC,
+ gcrootfinder=self.gcrootfinder, jit=True,
+ enable_opts=ALL_OPTS_NAMES)
+ assert int(res) == 20
+
+class TestOtherShadowStack(OtherFrameworkGCTests):
+ gcrootfinder = "shadowstack"
+
+class TestOtherAsmGcc(OtherFrameworkGCTests):
+ gcrootfinder = "asmgcc"
More information about the pypy-commit
mailing list