[pypy-commit] pypy reflex-support: (hager, cfbolz): this should fix the fast path ffi call again

cfbolz noreply at buildbot.pypy.org
Mon Jul 11 19:08:35 CEST 2011


Author: Carl Friedrich Bolz <cfbolz at gmx.de>
Branch: reflex-support
Changeset: r45464:156e6910a76d
Date: 2011-07-11 19:08 +0200
http://bitbucket.org/pypy/pypy/changeset/156e6910a76d/

Log:	(hager, cfbolz): this should fix the fast path ffi call again

diff --git a/pypy/module/cppyy/interp_cppyy.py b/pypy/module/cppyy/interp_cppyy.py
--- a/pypy/module/cppyy/interp_cppyy.py
+++ b/pypy/module/cppyy/interp_cppyy.py
@@ -78,7 +78,7 @@
     'CPPLibrary',
 )
 
- at jit.purefunction
+ at jit.elidable_promote()
 def get_methptr_getter(handle, method_index):
     return capi.c_get_methptr_getter(handle, method_index)
 
@@ -125,8 +125,8 @@
             raise OperationError(space.w_TypeError, space.wrap("wrong number of args"))
         if self.arg_converters is None:
             self._build_converters()
-        funcptr = jit.hint(self.methgetter, promote=True)(cppthis)
-        libffi_func = self._get_libffi_func(jit.hint(funcptr, promote=True))
+        funcptr = jit.promote(self.methgetter)(cppthis)
+        libffi_func = self._get_libffi_func(funcptr)
         if not libffi_func:
             raise FastCallNotPossible
 
@@ -138,7 +138,7 @@
             conv.convert_argument_libffi(space, w_arg, argchain)
         return self.executor.execute_libffi(space, libffi_func, argchain)
 
-    @jit.purefunction
+    @jit.elidable_promote()
     def _get_libffi_func(self, funcptr):
         key = rffi.cast(rffi.LONG, funcptr)
         if key in self._libffifunc_cache:
@@ -353,7 +353,7 @@
     def get_method_names(self):
         return self.space.newlist([self.space.wrap(name) for name in self.methods])
 
-    @jit.purefunction
+    @jit.elidable_promote()
     def get_overload(self, name):
         try:
             return self.methods[name]
@@ -365,7 +365,7 @@
     def get_data_member_names(self):
         return self.space.newlist([self.space.wrap(name) for name in self.data_members])
 
-    @jit.purefunction
+    @jit.elidable_promote()
     def get_data_member(self, name):
         try:
             return self.data_members[name]


More information about the pypy-commit mailing list