diff options
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 7ffd7ee..0606f29 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)); |