Author: Armin Rigo <[email protected]>
Branch:
Changeset: r72261:0bbd2a9b36a6
Date: 2014-06-28 10:57 +0200
http://bitbucket.org/pypy/pypy/changeset/0bbd2a9b36a6/
Log: Oups, fix -- can't use the GC here, at least in some tests
diff --git a/rpython/rtyper/lltypesystem/rffi.py
b/rpython/rtyper/lltypesystem/rffi.py
--- a/rpython/rtyper/lltypesystem/rffi.py
+++ b/rpython/rtyper/lltypesystem/rffi.py
@@ -193,11 +193,20 @@
else:
# ...well, unless it's a macro, in which case we still have
# to hide it from the JIT...
- @jit.dont_look_inside
- def call_external_function(*args):
- return funcptr(*args)
+ argnames = ', '.join(['a%d' % i for i in range(len(args))])
+ source = py.code.Source("""
+ def call_external_function(%(argnames)s):
+ return funcptr(%(argnames)s)
+ """ % locals())
+ miniglobals = {'funcptr': funcptr,
+ '__name__': __name__,
+ }
+ exec source.compile() in miniglobals
+ call_external_function = miniglobals['call_external_function']
call_external_function = func_with_new_name(call_external_function,
'ccall_' + name)
+ call_external_function = jit.dont_look_inside(
+ call_external_function)
unrolling_arg_tps = unrolling_iterable(enumerate(args))
def wrapper(*args):
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit