Author: Antonio Cuni <[email protected]>
Branch: cpyext-refactor-methodobject
Changeset: r92819:1c00ece5b913
Date: 2017-10-21 15:55 +0200
http://bitbucket.org/pypy/pypy/changeset/1c00ece5b913/

Log:    implement call_KEYWORDS and fix the test

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
@@ -99,9 +99,21 @@
             decref(space, py_args)
 
     def call_keywords(self, space, w_self, __args__):
-        import pdb;pdb.set_trace()
         func = rffi.cast(PyCFunctionKwArgs, self.ml.c_ml_meth)
-        return generic_cpy_call(space, func, w_self, w_args, w_kw)
+        py_args = tuple_from_args_w(space, __args__.arguments_w)
+        w_kwargs = None
+        if __args__.keywords:
+            # CCC: we should probably have a @jit.look_inside_iff if the
+            # keyword count is constant, as we do in Arguments.unpack
+            w_kwargs = space.newdict()
+            for i in range(len(__args__.keywords)):
+                key = __args__.keywords[i]
+                w_obj = __args__.keywords_w[i]
+                space.setitem(w_kwargs, space.newtext(key), w_obj)
+        try:
+            return generic_cpy_call(space, func, w_self, py_args, w_kwargs)
+        finally:
+            decref(space, py_args)
 
     def call_oldargs(self, space, w_self, __args__):
         func = self.ml.c_ml_meth
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to