diff options
author | Irit Katriel <1055913+iritkatriel@users.noreply.github.com> | 2023-01-04 13:37:06 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-01-04 13:37:06 +0000 |
commit | c31e356a10aa60b5967b9aaf80b9984059e46461 (patch) | |
tree | 774e48afaea4e83f9b14c46e8d20cc14e018d92d /Objects | |
parent | 5fb1c08e15b864d8ea9353a0e013166e2e0e2160 (diff) | |
download | cpython-c31e356a10aa60b5967b9aaf80b9984059e46461.tar.gz cpython-c31e356a10aa60b5967b9aaf80b9984059e46461.zip |
gh-100720: refactor calculation of number of frame slots for a code object into the new function _PyFrame_NumSlotsForCodeObject (#100722)
Diffstat (limited to 'Objects')
-rw-r--r-- | Objects/frameobject.c | 2 | ||||
-rw-r--r-- | Objects/genobject.c | 4 |
2 files changed, 3 insertions, 3 deletions
diff --git a/Objects/frameobject.c b/Objects/frameobject.c index eab85c08fc0..98f0b383872 100644 --- a/Objects/frameobject.c +++ b/Objects/frameobject.c @@ -946,7 +946,7 @@ frame_sizeof(PyFrameObject *f, PyObject *Py_UNUSED(ignored)) Py_ssize_t res; res = offsetof(PyFrameObject, _f_frame_data) + offsetof(_PyInterpreterFrame, localsplus); PyCodeObject *code = f->f_frame->f_code; - res += (code->co_nlocalsplus+code->co_stacksize) * sizeof(PyObject *); + res += _PyFrame_NumSlotsForCodeObject(code) * sizeof(PyObject *); return PyLong_FromSsize_t(res); } diff --git a/Objects/genobject.c b/Objects/genobject.c index c006f1af217..ea3382d3e31 100644 --- a/Objects/genobject.c +++ b/Objects/genobject.c @@ -769,7 +769,7 @@ gen_sizeof(PyGenObject *gen, PyObject *Py_UNUSED(ignored)) Py_ssize_t res; res = offsetof(PyGenObject, gi_iframe) + offsetof(_PyInterpreterFrame, localsplus); PyCodeObject *code = gen->gi_code; - res += (code->co_nlocalsplus+code->co_stacksize) * sizeof(PyObject *); + res += _PyFrame_NumSlotsForCodeObject(code) * sizeof(PyObject *); return PyLong_FromSsize_t(res); } @@ -850,7 +850,7 @@ static PyObject * make_gen(PyTypeObject *type, PyFunctionObject *func) { PyCodeObject *code = (PyCodeObject *)func->func_code; - int slots = code->co_nlocalsplus + code->co_stacksize; + int slots = _PyFrame_NumSlotsForCodeObject(code); PyGenObject *gen = PyObject_GC_NewVar(PyGenObject, type, slots); if (gen == NULL) { return NULL; |