The accompanying patch file (stack-diffs.out) modifies the Python interpreter to access the run-time stack more efficiently. Fewer temporary variables and fewer PUSH and POP operations are used. By relying less heavily on temporary variables, compiler optimizers have a better chance of keeping critical variables in registers. At least thirteen local variables in eval_code2 are declared with the register attribute. On a register-starved architecture like the Intel x86, they can't all be placed in registers. Here is a brief summary of the changes: * Include/listobject.h - A new macro, PyList_SET_ITEM, was added. It is analogous to PyTuple_SET_ITEM and should only be used to initialize lists. The Python interpreter uses it to speed up the BUILD_LIST opcode. * ceval.c - A new macro, FAST_STACK, is available. When defined, these optimizations are enabled. For example, no temporaries are used to duplicate the top of the stack: Py_INCREF(TOP()); PUSH(TOP()); * ceval.c - A few other miscellaneous optimizations are included: shortcutting error checking code when no error is possible and using macros to access tuples and lists where possible. If you have any questions or problems with this patch, contact me at skip@calendar.com. Skip Montanaro