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.
diff --git a/Objects/frameobject.c b/Objects/frameobject.c
index cec0502..85c89f6 100644
--- a/Objects/frameobject.c
+++ b/Objects/frameobject.c
@@ -38,6 +38,8 @@
{"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 @@
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 @@
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);