Author: Antonio Cuni <anto.c...@gmail.com>
Branch: cpyext-fast-typecheck
Changeset: r94065:a0cad484bfaf
Date: 2018-03-22 12:24 +0100
http://bitbucket.org/pypy/pypy/changeset/a0cad484bfaf/

Log:    move this logic inside W_PyCWrapperObject.descr_call, for
        consistency with the other classes, and allow the jit to look inside
        it

diff --git a/pypy/module/cpyext/methodobject.py 
b/pypy/module/cpyext/methodobject.py
--- a/pypy/module/cpyext/methodobject.py
+++ b/pypy/module/cpyext/methodobject.py
@@ -229,6 +229,14 @@
         assert isinstance(w_type, W_TypeObject)
         self.w_objclass = w_type
 
+    def descr_call(self, space, w_self, __args__):
+        args_w, kw_w = __args__.unpack()
+        w_args = space.newtuple(args_w)
+        w_kw = space.newdict()
+        for key, w_obj in kw_w.items():
+            space.setitem(w_kw, space.newtext(key), w_obj)
+        return self.call(space, w_self, w_args, w_kw)
+
     def call(self, space, w_self, w_args, w_kw):
         func_to_call = self.func
         if self.offset:
@@ -261,16 +269,6 @@
                                   (self.method_name,
                                    self.w_objclass.name))
 
-@jit.dont_look_inside
-def cwrapper_descr_call(space, w_self, __args__):
-    self = space.interp_w(W_PyCWrapperObject, w_self)
-    args_w, kw_w = __args__.unpack()
-    w_args = space.newtuple(args_w[1:])
-    w_self = args_w[0]
-    w_kw = space.newdict()
-    for key, w_obj in kw_w.items():
-        space.setitem(w_kw, space.newtext(key), w_obj)
-    return self.call(space, w_self, w_args, w_kw)
 
 def cmethod_descr_get(space, w_function, w_obj, w_cls=None):
     asking_for_bound = (space.is_none(w_cls) or
@@ -323,7 +321,7 @@
 
 W_PyCWrapperObject.typedef = TypeDef(
     'wrapper_descriptor',
-    __call__ = interp2app(cwrapper_descr_call),
+    __call__ = interp2app(W_PyCWrapperObject.descr_call),
     __get__ = interp2app(cmethod_descr_get),
     __name__ = interp_attrproperty('method_name', cls=W_PyCWrapperObject,
         wrapfn="newtext_or_none"),
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to