Author: Ronan Lamy <ronan.l...@gmail.com> Branch: py3.5 Changeset: r91671:d5cde34e0278 Date: 2017-07-03 18:49 +0100 http://bitbucket.org/pypy/pypy/changeset/d5cde34e0278/
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 @@ -459,13 +459,15 @@ return decorate def api_func_from_cdef(func, cdef, cts, - error=_NOT_SPECIFIED, header=DEFAULT_HEADER): + error=_NOT_SPECIFIED, header=DEFAULT_HEADER, + result_is_ll=False): func._always_inline_ = 'try' cdecl = cts.parse_func(cdef) RESULT = cdecl.get_llresult(cts) api_function = ApiFunction( cdecl.get_llargs(cts), RESULT, func, - error=_compute_error(error, RESULT), cdecl=cdecl) + error=_compute_error(error, RESULT), cdecl=cdecl, + result_is_ll=result_is_ll) FUNCTIONS_BY_HEADER[header][cdecl.name] = api_function unwrapper = api_function.get_unwrapper() unwrapper.func = func @@ -670,10 +672,12 @@ class CpyextTypeSpace(CTypeSpace): - def decl(self, cdef, error=_NOT_SPECIFIED, header=DEFAULT_HEADER): + def decl(self, cdef, error=_NOT_SPECIFIED, header=DEFAULT_HEADER, + result_is_ll=False): def decorate(func): return api_func_from_cdef( - func, cdef, self, error=error, header=header) + func, cdef, self, error=error, header=header, + result_is_ll=result_is_ll) return decorate diff --git a/pypy/module/cpyext/include/memoryobject.h b/pypy/module/cpyext/include/memoryobject.h --- a/pypy/module/cpyext/include/memoryobject.h +++ b/pypy/module/cpyext/include/memoryobject.h @@ -5,14 +5,7 @@ extern "C" { #endif -/* The struct is declared here but it shouldn't - be considered public. Don't access those fields directly, - use the functions instead! */ -typedef struct { - PyObject_HEAD - Py_buffer view; -} PyMemoryViewObject; - +#include "cpyext_memoryobject.h" /* Get a pointer to the memoryview's private copy of the exporter's buffer. */ #define PyMemoryView_GET_BUFFER(op) (&((PyMemoryViewObject *)(op))->view) diff --git a/pypy/module/cpyext/memoryobject.py b/pypy/module/cpyext/memoryobject.py --- a/pypy/module/cpyext/memoryobject.py +++ b/pypy/module/cpyext/memoryobject.py @@ -1,11 +1,8 @@ -from rpython.rlib.objectmodel import keepalive_until_here -from pypy.interpreter.error import oefmt from pypy.module.cpyext.api import ( - cpython_api, Py_buffer, CANNOT_FAIL, Py_MAX_FMT, Py_MAX_NDIMS, - build_type_checkers, Py_ssize_tP, PyObjectFields, cpython_struct, - bootstrap_function, Py_bufferP, slot_function, generic_cpy_call) + cpython_api, CANNOT_FAIL, Py_MAX_FMT, Py_MAX_NDIMS, build_type_checkers, + Py_ssize_tP, cts, parse_dir, bootstrap_function, Py_bufferP, slot_function) from pypy.module.cpyext.pyobject import ( - PyObject, make_ref, as_pyobj, decref, from_ref, make_typedescr, + PyObject, make_ref, decref, from_ref, make_typedescr, get_typedescr, track_reference) from rpython.rtyper.lltypesystem import lltype, rffi from rpython.rlib.rarithmetic import widen @@ -14,17 +11,12 @@ from pypy.module.cpyext.object import _dealloc from pypy.module.cpyext.import_ import PyImport_Import +cts.parse_header(parse_dir / 'cpyext_memoryobject.h') +PyMemoryViewObject = cts.gettype('PyMemoryViewObject*') + PyMemoryView_Check, PyMemoryView_CheckExact = build_type_checkers("MemoryView") -PyMemoryViewObjectStruct = lltype.ForwardReference() -PyMemoryViewObject = lltype.Ptr(PyMemoryViewObjectStruct) -PyMemoryViewObjectFields = PyObjectFields + \ - (("view", Py_buffer),) -cpython_struct( - "PyMemoryViewObject", PyMemoryViewObjectFields, PyMemoryViewObjectStruct, - level=2) - @bootstrap_function def init_memoryobject(space): "Type description of PyDictObject" @@ -33,7 +25,7 @@ attach=memory_attach, dealloc=memory_dealloc, realize=memory_realize, - ) + ) def memory_attach(space, py_obj, w_obj, w_userdata=None): """ _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit