mirror of
https://github.com/python/cpython.git
synced 2025-07-15 23:35:23 +00:00
gh-110481: Implement biased reference counting (gh-110764)
This commit is contained in:
parent
05f2f0ac92
commit
6dfb8fe023
29 changed files with 511 additions and 52 deletions
|
@ -46,12 +46,13 @@
|
|||
# error "ceval.c must be build with Py_BUILD_CORE define for best performance"
|
||||
#endif
|
||||
|
||||
#if !defined(Py_DEBUG) && !defined(Py_TRACE_REFS)
|
||||
#if !defined(Py_DEBUG) && !defined(Py_TRACE_REFS) && !defined(Py_NOGIL)
|
||||
// GH-89279: The MSVC compiler does not inline these static inline functions
|
||||
// in PGO build in _PyEval_EvalFrameDefault(), because this function is over
|
||||
// the limit of PGO, and that limit cannot be configured.
|
||||
// Define them as macros to make sure that they are always inlined by the
|
||||
// preprocessor.
|
||||
// TODO: implement Py_DECREF macro for Py_NOGIL
|
||||
|
||||
#undef Py_DECREF
|
||||
#define Py_DECREF(arg) \
|
||||
|
|
|
@ -19,17 +19,9 @@
|
|||
/* Uncomment this to dump debugging output when assertions fail */
|
||||
// #define INSTRUMENT_DEBUG 1
|
||||
|
||||
PyObject _PyInstrumentation_DISABLE =
|
||||
{
|
||||
.ob_refcnt = _Py_IMMORTAL_REFCNT,
|
||||
.ob_type = &PyBaseObject_Type
|
||||
};
|
||||
PyObject _PyInstrumentation_DISABLE = _PyObject_HEAD_INIT(&PyBaseObject_Type);
|
||||
|
||||
PyObject _PyInstrumentation_MISSING =
|
||||
{
|
||||
.ob_refcnt = _Py_IMMORTAL_REFCNT,
|
||||
.ob_type = &PyBaseObject_Type
|
||||
};
|
||||
PyObject _PyInstrumentation_MISSING = _PyObject_HEAD_INIT(&PyBaseObject_Type);
|
||||
|
||||
static const int8_t EVENT_FOR_OPCODE[256] = {
|
||||
[RETURN_CONST] = PY_MONITORING_EVENT_PY_RETURN,
|
||||
|
|
|
@ -2525,7 +2525,7 @@ static const PyBytesObject no_location = {
|
|||
};
|
||||
|
||||
const struct _PyCode_DEF(8) _Py_InitCleanup = {
|
||||
_PyVarObject_HEAD_INIT(&PyCode_Type, 3)
|
||||
_PyVarObject_HEAD_INIT(&PyCode_Type, 3),
|
||||
.co_consts = (PyObject *)&_Py_SINGLETON(tuple_empty),
|
||||
.co_names = (PyObject *)&_Py_SINGLETON(tuple_empty),
|
||||
.co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue