Author: Armin Rigo <ar...@tunes.org> Branch: py3.5 Changeset: r90614:6e674eb4be9f Date: 2017-03-10 07:46 +0100 http://bitbucket.org/pypy/pypy/changeset/6e674eb4be9f/
Log: Move PyObject_CallFinalizerFromDealloc() to a no-op stub 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 @@ -618,6 +618,7 @@ 'PyMem_RawMalloc', 'PyMem_RawCalloc', 'PyMem_RawRealloc', 'PyMem_RawFree', 'PyMem_Malloc', 'PyMem_Calloc', 'PyMem_Realloc', 'PyMem_Free', + 'PyObject_CallFinalizerFromDealloc', ] TYPES = {} FORWARD_DECLS = [] @@ -1338,6 +1339,7 @@ source_dir / "import.c", source_dir / "_warnings.c", source_dir / "pylifecycle.c", + source_dir / "object.c", ] def build_eci(code, use_micronumpy=False, translating=False): diff --git a/pypy/module/cpyext/include/object.h b/pypy/module/cpyext/include/object.h --- a/pypy/module/cpyext/include/object.h +++ b/pypy/module/cpyext/include/object.h @@ -275,6 +275,9 @@ #define PyObject_Del PyObject_Free #define PyObject_DEL PyObject_Free +#ifndef Py_LIMITED_API +PyAPI_FUNC(int) PyObject_CallFinalizerFromDealloc(PyObject *); +#endif /* PyPy internal ----------------------------------- */ diff --git a/pypy/module/cpyext/src/object.c b/pypy/module/cpyext/src/object.c new file mode 100644 --- /dev/null +++ b/pypy/module/cpyext/src/object.c @@ -0,0 +1,15 @@ + +#include "Python.h" + +int +PyObject_CallFinalizerFromDealloc(PyObject *self) +{ + /* STUB */ + if (self->ob_type->tp_finalize) { + fprintf(stderr, "WARNING: PyObject_CallFinalizerFromDealloc() " + "not implemented (objects of type '%s')\n", + self->ob_type->tp_name); + self->ob_type->tp_finalize = NULL; /* only once */ + } + return 0; +} diff --git a/pypy/module/cpyext/stubs.py b/pypy/module/cpyext/stubs.py --- a/pypy/module/cpyext/stubs.py +++ b/pypy/module/cpyext/stubs.py @@ -2077,12 +2077,3 @@ it causes an exception to immediately be thrown; this is used for the throw() methods of generator objects.""" raise NotImplementedError - -@cpython_api([PyObject], rffi.INT_real, error=-1) -def PyObject_CallFinalizerFromDealloc(space, self): - """Call tp_finalize() once, taking care of reference counting. - - NOT IMPLEMENTED: might need to keep the PyPy object alive even while - tp_dealloc() is called, which the GC doesn't do so far. - """ - raise NotImplementedError _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit