mirror of
https://github.com/python/cpython
synced 2024-10-16 12:18:50 +00:00
When a recycled frame has more local+stack slots than needed,
give the extra slots to the stack rather than than forgetting about them (this reduces the number of reallocs done).
This commit is contained in:
parent
463e55a916
commit
747596a491
|
@ -172,6 +172,8 @@ newframeobject(back, code, globals, locals)
|
|||
if (f == NULL)
|
||||
return (PyFrameObject *)err_nomem();
|
||||
}
|
||||
else
|
||||
extras = f->f_nlocals + f->f_stacksize;
|
||||
f->ob_type = &Frametype;
|
||||
NEWREF(f);
|
||||
}
|
||||
|
@ -203,11 +205,11 @@ newframeobject(back, code, globals, locals)
|
|||
f->f_trace = NULL;
|
||||
|
||||
f->f_lasti = 0;
|
||||
f->f_lineno = -1;
|
||||
f->f_lineno = code->co_firstlineno;
|
||||
f->f_restricted = (builtins != getbuiltindict());
|
||||
f->f_iblock = 0;
|
||||
f->f_nlocals = code->co_nlocals;
|
||||
f->f_stacksize = code->co_stacksize;
|
||||
f->f_stacksize = extras - code->co_nlocals;
|
||||
|
||||
while (--extras >= 0)
|
||||
f->f_localsplus[extras] = NULL;
|
||||
|
|
Loading…
Reference in a new issue