[pypy-svn] r67704 - pypy/branch/asmgcroot-callback/pypy/translator/c/gcc/test
arigo at codespeak.net
arigo at codespeak.net
Tue Sep 15 20:27:05 CEST 2009
Author: arigo
Date: Tue Sep 15 20:27:02 2009
New Revision: 67704
Modified:
pypy/branch/asmgcroot-callback/pypy/translator/c/gcc/test/test_asmgcroot.py
Log:
Add a test. Passing, annoyingly.
Modified: pypy/branch/asmgcroot-callback/pypy/translator/c/gcc/test/test_asmgcroot.py
==============================================================================
--- pypy/branch/asmgcroot-callback/pypy/translator/c/gcc/test/test_asmgcroot.py (original)
+++ pypy/branch/asmgcroot-callback/pypy/translator/c/gcc/test/test_asmgcroot.py Tue Sep 15 20:27:02 2009
@@ -95,5 +95,37 @@
# for the individual tests see
# ====> ../../test/test_newgc.py
+ def test_callback_simple(self):
+ import gc
+ from pypy.rpython.lltypesystem import lltype, rffi
+ from pypy.rpython.annlowlevel import llhelper
+ from pypy.translator.tool.cbuild import ExternalCompilationInfo
+
+ c_source = py.code.Source("""
+ int mystuff(int(*cb)(int, int))
+ {
+ return cb(40, 2);
+ }
+ """)
+ eci = ExternalCompilationInfo(separate_module_sources=[c_source])
+ S = lltype.GcStruct('S', ('x', lltype.Signed))
+ CALLBACK = lltype.FuncType([lltype.Signed, lltype.Signed],
+ lltype.Signed)
+ z = rffi.llexternal('mystuff', [lltype.Ptr(CALLBACK)], lltype.Signed,
+ compilation_info=eci)
+
+ def mycallback(a, b):
+ gc.collect()
+ return a + b
+
+ def f():
+ p = lltype.malloc(S)
+ p.x = 100
+ result = z(mycallback)
+ return result * p.x
+
+ c_fn = self.getcompiled(f)
+ assert c_fn() == 4200
+
#def test_callback_with_collect(self):
# py.test.skip("in-progress")
More information about the Pypy-commit
mailing list