mirror of
https://github.com/python/cpython.git
synced 2025-08-02 16:13:13 +00:00
Changes to speed up local variables enormously, by avoiding dictionary
lookup (opcode.h, ceval.[ch], compile.c, frameobject.[ch], pythonrun.c, import.c). The .pyc MAGIC number is changed again. Added get_menu_text to flmodule.
This commit is contained in:
parent
0023078a0b
commit
8b17d6bd89
9 changed files with 245 additions and 71 deletions
|
@ -38,6 +38,8 @@ static struct memberlist frame_memberlist[] = {
|
|||
{"f_code", T_OBJECT, OFF(f_code)},
|
||||
{"f_globals", T_OBJECT, OFF(f_globals)},
|
||||
{"f_locals", T_OBJECT, OFF(f_locals)},
|
||||
{"f_fastlocals",T_OBJECT, OFF(f_fastlocals)},
|
||||
{"f_localmap", T_OBJECT, OFF(f_localmap)},
|
||||
{"f_lasti", T_INT, OFF(f_lasti)},
|
||||
{"f_lineno", T_INT, OFF(f_lineno)},
|
||||
{NULL} /* Sentinel */
|
||||
|
@ -82,6 +84,8 @@ frame_dealloc(f)
|
|||
XDECREF(f->f_code);
|
||||
XDECREF(f->f_globals);
|
||||
XDECREF(f->f_locals);
|
||||
XDECREF(f->f_fastlocals);
|
||||
XDECREF(f->f_localmap);
|
||||
f->f_back = free_list;
|
||||
free_list = f;
|
||||
}
|
||||
|
@ -142,6 +146,8 @@ newframeobject(back, code, globals, locals, nvalues, nblocks)
|
|||
f->f_globals = globals;
|
||||
INCREF(locals);
|
||||
f->f_locals = locals;
|
||||
f->f_fastlocals = NULL;
|
||||
f->f_localmap = NULL;
|
||||
if (nvalues > f->f_nvalues || f->f_valuestack == NULL) {
|
||||
XDEL(f->f_valuestack);
|
||||
f->f_valuestack = NEW(object *, nvalues+1);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue