[pypy-svn] r77712 - in pypy/branch/jitffi/pypy: module/_ffi module/pypyjit rlib
antocuni at codespeak.net
antocuni at codespeak.net
Fri Oct 8 11:58:18 CEST 2010
Author: antocuni
Date: Fri Oct 8 11:58:17 2010
New Revision: 77712
Modified:
pypy/branch/jitffi/pypy/module/_ffi/interp_ffi.py
pypy/branch/jitffi/pypy/module/pypyjit/policy.py
pypy/branch/jitffi/pypy/rlib/libffi.py
Log:
be more jit-friendly
Modified: pypy/branch/jitffi/pypy/module/_ffi/interp_ffi.py
==============================================================================
--- pypy/branch/jitffi/pypy/module/_ffi/interp_ffi.py (original)
+++ pypy/branch/jitffi/pypy/module/_ffi/interp_ffi.py Fri Oct 8 11:58:17 2010
@@ -47,6 +47,9 @@
# ========================================================================
class W_FuncPtr(Wrappable):
+
+ _immutable_fields_ = ['func']
+
def __init__(self, func):
self.func = func
@@ -68,6 +71,7 @@
@unwrap_spec('self', ObjSpace, 'args_w')
def call(self, space, args_w):
+ self = jit.hint(self, promote=True)
argchain = self.build_argchain(space, self.func.argtypes, args_w)
reskind = libffi.types.getkind(self.func.restype)
if reskind == 'i':
Modified: pypy/branch/jitffi/pypy/module/pypyjit/policy.py
==============================================================================
--- pypy/branch/jitffi/pypy/module/pypyjit/policy.py (original)
+++ pypy/branch/jitffi/pypy/module/pypyjit/policy.py Fri Oct 8 11:58:17 2010
@@ -11,7 +11,7 @@
if '.' in modname:
modname, _ = modname.split('.', 1)
if modname in ['pypyjit', 'signal', 'micronumpy', 'math', 'exceptions',
- 'imp', 'sys', 'array']:
+ 'imp', 'sys', 'array', '_ffi']:
return True
return False
Modified: pypy/branch/jitffi/pypy/rlib/libffi.py
==============================================================================
--- pypy/branch/jitffi/pypy/rlib/libffi.py (original)
+++ pypy/branch/jitffi/pypy/rlib/libffi.py Fri Oct 8 11:58:17 2010
@@ -32,8 +32,9 @@
cls.ulong = clibffi.cast_type_to_ffitype(rffi.ULONG)
del cls._import
- @classmethod
- def getkind(cls, ffitype):
+ @staticmethod
+ @jit.purefunction
+ def getkind(ffitype):
# XXX: move this function outside the jit
from pypy.jit.backend.llsupport.ffisupport import get_ffi_type_kind
return get_ffi_type_kind(ffitype)
More information about the Pypy-commit
mailing list