[pypy-commit] pypy py3.5: hg merge default
rlamy
pypy.commits at gmail.com
Thu Sep 28 17:49:17 EDT 2017
Author: Ronan Lamy <ronan.lamy at gmail.com>
Branch: py3.5
Changeset: r92495:9d4f0cdad713
Date: 2017-09-28 23:48 +0200
http://bitbucket.org/pypy/pypy/changeset/9d4f0cdad713/
Log: hg merge default
diff --git a/pypy/module/cpyext/api.py b/pypy/module/cpyext/api.py
--- a/pypy/module/cpyext/api.py
+++ b/pypy/module/cpyext/api.py
@@ -1338,17 +1338,20 @@
for decl in FORWARD_DECLS:
decls[pypy_decl].append("%s;" % (decl,))
decls[pypy_decl].append("""
- /* hack for https://bugs.python.org/issue29943 */
- PyAPI_FUNC(int) %s(PySliceObject *arg0,
- Signed arg1, Signed *arg2,
- Signed *arg3, Signed *arg4, Signed *arg5);
- static int PySlice_GetIndicesEx(PySliceObject *arg0, Py_ssize_t arg1,
- Py_ssize_t *arg2, Py_ssize_t *arg3, Py_ssize_t *arg4,
- Py_ssize_t *arg5) {
- return %s(arg0, arg1, arg2, arg3,
- arg4, arg5);
- }
- """ % ((mangle_name(prefix, 'PySlice_GetIndicesEx'),)*2))
+/* hack for https://bugs.python.org/issue29943 */
+
+PyAPI_FUNC(int) %s(PySliceObject *arg0,
+ Signed arg1, Signed *arg2,
+ Signed *arg3, Signed *arg4, Signed *arg5);
+#ifdef __GNUC__
+__attribute__((__unused__))
+#endif
+static int PySlice_GetIndicesEx(PySliceObject *arg0, Py_ssize_t arg1,
+ Py_ssize_t *arg2, Py_ssize_t *arg3, Py_ssize_t *arg4,
+ Py_ssize_t *arg5) {
+ return %s(arg0, arg1, arg2, arg3,
+ arg4, arg5);
+}""" % ((mangle_name(prefix, 'PySlice_GetIndicesEx'),)*2))
for header_name, header_functions in FUNCTIONS_BY_HEADER.iteritems():
header = decls[header_name]
diff --git a/pypy/module/cpyext/include/descrobject.h b/pypy/module/cpyext/include/descrobject.h
--- a/pypy/module/cpyext/include/descrobject.h
+++ b/pypy/module/cpyext/include/descrobject.h
@@ -1,34 +1,6 @@
#ifndef Py_DESCROBJECT_H
#define Py_DESCROBJECT_H
-#define PyDescr_COMMON \
- PyObject_HEAD \
- PyTypeObject *d_type; \
- PyObject *d_name
-
-typedef struct {
- PyDescr_COMMON;
-} PyDescrObject;
-
-typedef struct {
- PyDescr_COMMON;
- PyMethodDef *d_method;
-} PyMethodDescrObject;
-
-typedef struct {
- PyDescr_COMMON;
- struct PyMemberDef *d_member;
-} PyMemberDescrObject;
-
-typedef struct {
- PyDescr_COMMON;
- PyGetSetDef *d_getset;
-} PyGetSetDescrObject;
-
-typedef struct {
- PyDescr_COMMON;
- struct wrapperbase *d_base;
- void *d_wrapped; /* This can be any function pointer */
-} PyWrapperDescrObject;
+#include "cpyext_descrobject.h"
#endif
diff --git a/pypy/module/cpyext/parse/cpyext_descrobject.h b/pypy/module/cpyext/parse/cpyext_descrobject.h
new file mode 100644
--- /dev/null
+++ b/pypy/module/cpyext/parse/cpyext_descrobject.h
@@ -0,0 +1,29 @@
+#define PyDescr_COMMON \
+ PyObject_HEAD \
+ PyTypeObject *d_type; \
+ PyObject *d_name
+
+typedef struct {
+ PyDescr_COMMON;
+} PyDescrObject;
+
+typedef struct {
+ PyDescr_COMMON;
+ PyMethodDef *d_method;
+} PyMethodDescrObject;
+
+typedef struct {
+ PyDescr_COMMON;
+ struct PyMemberDef *d_member;
+} PyMemberDescrObject;
+
+typedef struct {
+ PyDescr_COMMON;
+ PyGetSetDef *d_getset;
+} PyGetSetDescrObject;
+
+typedef struct {
+ PyDescr_COMMON;
+ struct wrapperbase *d_base;
+ void *d_wrapped; /* This can be any function pointer */
+} PyWrapperDescrObject;
diff --git a/pypy/module/cpyext/typeobject.py b/pypy/module/cpyext/typeobject.py
--- a/pypy/module/cpyext/typeobject.py
+++ b/pypy/module/cpyext/typeobject.py
@@ -19,7 +19,8 @@
Py_TPFLAGS_TUPLE_SUBCLASS, Py_TPFLAGS_UNICODE_SUBCLASS,
Py_TPFLAGS_DICT_SUBCLASS, Py_TPFLAGS_BASE_EXC_SUBCLASS,
Py_TPFLAGS_TYPE_SUBCLASS,
- Py_TPFLAGS_BYTES_SUBCLASS)
+ Py_TPFLAGS_INT_SUBCLASS, Py_TPFLAGS_STRING_SUBCLASS, # change on py3
+ )
from pypy.module.cpyext.cparser import CTypeSpace
from pypy.module.cpyext.methodobject import (W_PyCClassMethodObject,
W_PyCWrapperObject, PyCFunction_NewEx, PyCFunction, PyMethodDef,
@@ -39,6 +40,8 @@
from pypy.objspace.std.typeobject import W_TypeObject, find_best_base
+cts.parse_header(parse_dir / "cpyext_descrobject.h")
+
#WARN_ABOUT_MISSING_SLOT_FUNCTIONS = False
PyType_Check, PyType_CheckExact = build_type_checkers_flags("Type")
@@ -115,57 +118,24 @@
)
assert not W_MemberDescr.typedef.acceptable_as_base_class # no __new__
-PyDescrObject = lltype.ForwardReference()
-PyDescrObjectPtr = lltype.Ptr(PyDescrObject)
-PyDescrObjectFields = PyObjectFields + (
- ("d_type", PyTypeObjectPtr),
- ("d_name", PyObject),
- )
-cpython_struct("PyDescrObject", PyDescrObjectFields,
- PyDescrObject)
-
-PyMemberDescrObjectStruct = lltype.ForwardReference()
-PyMemberDescrObject = lltype.Ptr(PyMemberDescrObjectStruct)
-PyMemberDescrObjectFields = PyDescrObjectFields + (
- ("d_member", lltype.Ptr(PyMemberDef)),
- )
-cpython_struct("PyMemberDescrObject", PyMemberDescrObjectFields,
- PyMemberDescrObjectStruct, level=2)
-
-PyGetSetDescrObjectStruct = lltype.ForwardReference()
-PyGetSetDescrObject = lltype.Ptr(PyGetSetDescrObjectStruct)
-PyGetSetDescrObjectFields = PyDescrObjectFields + (
- ("d_getset", lltype.Ptr(PyGetSetDef)),
- )
-cpython_struct("PyGetSetDescrObject", PyGetSetDescrObjectFields,
- PyGetSetDescrObjectStruct, level=2)
-
-PyMethodDescrObjectStruct = lltype.ForwardReference()
-PyMethodDescrObject = lltype.Ptr(PyMethodDescrObjectStruct)
-PyMethodDescrObjectFields = PyDescrObjectFields + (
- ("d_method", lltype.Ptr(PyMethodDef)),
- )
-cpython_struct("PyMethodDescrObject", PyMethodDescrObjectFields,
- PyMethodDescrObjectStruct, level=2)
-
@bootstrap_function
def init_memberdescrobject(space):
make_typedescr(W_MemberDescr.typedef,
- basestruct=PyMemberDescrObject.TO,
+ basestruct=cts.gettype('PyMemberDescrObject'),
attach=memberdescr_attach,
realize=memberdescr_realize,
)
make_typedescr(W_GetSetPropertyEx.typedef,
- basestruct=PyGetSetDescrObject.TO,
+ basestruct=cts.gettype('PyGetSetDescrObject'),
attach=getsetdescr_attach,
)
make_typedescr(W_PyCClassMethodObject.typedef,
- basestruct=PyMethodDescrObject.TO,
+ basestruct=cts.gettype('PyMethodDescrObject'),
attach=methoddescr_attach,
realize=classmethoddescr_realize,
)
make_typedescr(W_PyCMethodObject.typedef,
- basestruct=PyMethodDescrObject.TO,
+ basestruct=cts.gettype('PyMethodDescrObject'),
attach=methoddescr_attach,
realize=methoddescr_realize,
)
@@ -175,7 +145,7 @@
Fills a newly allocated PyMemberDescrObject with the given W_MemberDescr
object. The values must not be modified.
"""
- py_memberdescr = rffi.cast(PyMemberDescrObject, py_obj)
+ py_memberdescr = cts.cast('PyMemberDescrObject*', py_obj)
# XXX assign to d_dname, d_type?
assert isinstance(w_obj, W_MemberDescr)
py_memberdescr.c_d_member = w_obj.member
@@ -194,7 +164,7 @@
Fills a newly allocated PyGetSetDescrObject with the given W_GetSetPropertyEx
object. The values must not be modified.
"""
- py_getsetdescr = rffi.cast(PyGetSetDescrObject, py_obj)
+ py_getsetdescr = cts.cast('PyGetSetDescrObject*', py_obj)
if isinstance(w_obj, GetSetProperty):
py_getsetdef = make_GetSet(space, w_obj)
assert space.isinstance_w(w_userdata, space.w_type)
@@ -206,7 +176,7 @@
py_getsetdescr.c_d_getset = w_obj.getset
def methoddescr_attach(space, py_obj, w_obj, w_userdata=None):
- py_methoddescr = rffi.cast(PyMethodDescrObject, py_obj)
+ py_methoddescr = cts.cast('PyMethodDescrObject*', py_obj)
# XXX assign to d_dname, d_type?
assert isinstance(w_obj, W_PyCFunctionObject)
py_methoddescr.c_d_method = w_obj.ml
More information about the pypy-commit
mailing list