mirror of
https://github.com/python/cpython.git
synced 2025-11-01 02:38:53 +00:00
bpo-35059: Add Py_STATIC_INLINE() macro (GH-10093)
* Add Py_STATIC_INLINE() macro to declare a "static inline" function. If the compiler supports it, try to always inline the function even if no optimization level was specified. * Modify pydtrace.h to use Py_STATIC_INLINE() when WITH_DTRACE is not defined. * Add an unit test on Py_DECREF() to make sure that _Py_NegativeRefcount() reports the correct filename.
This commit is contained in:
parent
d03b775781
commit
18618e652c
6 changed files with 92 additions and 36 deletions
|
|
@ -4818,6 +4818,25 @@ fail:
|
|||
}
|
||||
|
||||
|
||||
#ifdef Py_REF_DEBUG
|
||||
static PyObject *
|
||||
negative_refcount(PyObject *self, PyObject *Py_UNUSED(args))
|
||||
{
|
||||
PyObject *obj = PyUnicode_FromString("negative_refcount");
|
||||
if (obj == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
assert(Py_REFCNT(obj) == 1);
|
||||
|
||||
Py_REFCNT(obj) = 0;
|
||||
/* Py_DECREF() must call _Py_NegativeRefcount() and abort Python */
|
||||
Py_DECREF(obj);
|
||||
|
||||
Py_RETURN_NONE;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
static PyMethodDef TestMethods[] = {
|
||||
{"raise_exception", raise_exception, METH_VARARGS},
|
||||
{"raise_memoryerror", raise_memoryerror, METH_NOARGS},
|
||||
|
|
@ -5043,6 +5062,9 @@ static PyMethodDef TestMethods[] = {
|
|||
{"EncodeLocaleEx", encode_locale_ex, METH_VARARGS},
|
||||
{"DecodeLocaleEx", decode_locale_ex, METH_VARARGS},
|
||||
{"get_coreconfig", get_coreconfig, METH_NOARGS},
|
||||
#ifdef Py_REF_DEBUG
|
||||
{"negative_refcount", negative_refcount, METH_NOARGS},
|
||||
#endif
|
||||
{NULL, NULL} /* sentinel */
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue