diff options
author | Victor Stinner <vstinner@python.org> | 2020-06-23 16:40:40 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-06-23 16:40:40 +0200 |
commit | 522691c46e2ae51faaad5bbbce7d959dd61770df (patch) | |
tree | b6f833b6712837379d135d56125b9f3fe0dc4fa0 /Objects/floatobject.c | |
parent | bc43f6e21244f31d25896875430174cd4ac7604c (diff) | |
download | cpython-git-522691c46e2ae51faaad5bbbce7d959dd61770df.tar.gz |
bpo-40521: Cleanup code of free lists (GH-21082)
Add get_xxx_state() function to factorize duplicated code.
Diffstat (limited to 'Objects/floatobject.c')
-rw-r--r-- | Objects/floatobject.c | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/Objects/floatobject.c b/Objects/floatobject.c index 7ffd7eebe5..0606f29ff5 100644 --- a/Objects/floatobject.c +++ b/Objects/floatobject.c @@ -23,6 +23,15 @@ class float "PyObject *" "&PyFloat_Type" # define PyFloat_MAXFREELIST 100 #endif + +static struct _Py_float_state * +get_float_state(void) +{ + PyInterpreterState *interp = _PyInterpreterState_GET(); + return &interp->float_state; +} + + double PyFloat_GetMax(void) { @@ -113,8 +122,7 @@ PyFloat_GetInfo(void) PyObject * PyFloat_FromDouble(double fval) { - PyInterpreterState *interp = _PyInterpreterState_GET(); - struct _Py_float_state *state = &interp->float_state; + struct _Py_float_state *state = get_float_state(); PyFloatObject *op = state->free_list; if (op != NULL) { #ifdef Py_DEBUG @@ -222,8 +230,7 @@ static void float_dealloc(PyFloatObject *op) { if (PyFloat_CheckExact(op)) { - PyInterpreterState *interp = _PyInterpreterState_GET(); - struct _Py_float_state *state = &interp->float_state; + struct _Py_float_state *state = get_float_state(); #ifdef Py_DEBUG // float_dealloc() must not be called after _PyFloat_Fini() assert(state->numfree != -1); @@ -236,8 +243,9 @@ float_dealloc(PyFloatObject *op) Py_SET_TYPE(op, (PyTypeObject *)state->free_list); state->free_list = op; } - else + else { Py_TYPE(op)->tp_free((PyObject *)op); + } } double @@ -2017,8 +2025,7 @@ _PyFloat_Fini(PyThreadState *tstate) void _PyFloat_DebugMallocStats(FILE *out) { - PyInterpreterState *interp = _PyInterpreterState_GET(); - struct _Py_float_state *state = &interp->float_state; + struct _Py_float_state *state = get_float_state(); _PyDebugAllocatorStats(out, "free PyFloatObject", state->numfree, sizeof(PyFloatObject)); |