mirror of
https://github.com/python/cpython.git
synced 2025-10-07 07:31:46 +00:00
GH-93897: Store frame size in code object and de-opt if insufficient space on thread frame stack. (GH-93908)
This commit is contained in:
parent
774ef28814
commit
45e62a2bc1
8 changed files with 50 additions and 67 deletions
|
@ -114,22 +114,6 @@ _PyFrame_Clear(_PyInterpreterFrame *frame)
|
|||
Py_DECREF(frame->f_code);
|
||||
}
|
||||
|
||||
/* Consumes reference to func */
|
||||
_PyInterpreterFrame *
|
||||
_PyFrame_Push(PyThreadState *tstate, PyFunctionObject *func)
|
||||
{
|
||||
PyCodeObject *code = (PyCodeObject *)func->func_code;
|
||||
size_t size = code->co_nlocalsplus + code->co_stacksize + FRAME_SPECIALS_SIZE;
|
||||
CALL_STAT_INC(frames_pushed);
|
||||
_PyInterpreterFrame *new_frame = _PyThreadState_BumpFramePointer(tstate, size);
|
||||
if (new_frame == NULL) {
|
||||
Py_DECREF(func);
|
||||
return NULL;
|
||||
}
|
||||
_PyFrame_InitializeSpecials(new_frame, func, NULL, code->co_nlocalsplus);
|
||||
return new_frame;
|
||||
}
|
||||
|
||||
int
|
||||
_PyInterpreterFrame_GetLine(_PyInterpreterFrame *frame)
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue