[pypy-svn] r74341 - pypy/trunk/pypy/module/cpyext

fijal at codespeak.net fijal at codespeak.net
Mon May 3 16:03:58 CEST 2010


Author: fijal
Date: Mon May  3 16:03:57 2010
New Revision: 74341

Modified:
   pypy/trunk/pypy/module/cpyext/typeobject.py
Log:
Replace one piece of broken untested code with something that is slightly
more correct (IMO). IN-PROGRESS


Modified: pypy/trunk/pypy/module/cpyext/typeobject.py
==============================================================================
--- pypy/trunk/pypy/module/cpyext/typeobject.py	(original)
+++ pypy/trunk/pypy/module/cpyext/typeobject.py	Mon May  3 16:03:57 2010
@@ -158,11 +158,11 @@
         add_tp_new_wrapper(space, dict_w, pto)
 
 @cpython_api([PyObject, PyObject, PyObject], PyObject, external=False)
-def tp_new_wrapper(space, w_self, w_args, w_kwds): # XXX untested code
-    args_w = space.listview(w_args)[:]
-    args_w.insert(0, w_self)
-    w_args_new = space.newlist(args_w)
-    return space.call(space.lookup(space.w_type, "__new__"), w_args_new, w_kwds)
+def tp_new_wrapper(space, w_self, w_args, w_kwds):
+    fn = rffi.cast(PyTypeObjectPtr, make_ref(space, w_self)).c_tp_new
+    pyo = make_ref(space, w_self)
+    pto = rffi.cast(PyTypeObjectPtr, pyo)
+    return generic_cpy_call(space, fn, pto, w_args, w_kwds)
 
 @specialize.memo()
 def get_new_method_def(space):



More information about the Pypy-commit mailing list