[issue2181] optimize out local variables at end of function
report at bugs.python.org
Wed Feb 27 17:32:13 CET 2008
Neal Norwitz added the comment:
> I suppose you are aware that performing this optimization in general
> would break a lot of existing code that uses inspect.getstack() or
> sys._getframe() to peek at the caller's local variables. I know this
Yes, with this optimization the variable might never be set or when
the function exits, the value would be set to the previous value.
Note that the current optimization only works just before a return and
only for local variables. It doesn't generally optimize out
variables, although that would be a good next step.
> because it's one thing that Psyco doesn't do correctly, and one of the
> most common causes I'm aware of for a random existing program to break
> under Psyco.
How often does this cause problems? Do you view this as psyco's
problem or broken user code?
I don't view this any different that a C compiler optimizing out
variables. It can make debugging harder since the symbols no longer
exist. In this case the variable name is not removed from the
co_varnames even if it is the only reference. That would also be
nice, but left for another patch. Since this will only be used with
-O and is currently limited, this seems reasonable to me. But I would
like to know if others disagree.
Tracker <report at bugs.python.org>
More information about the Python-bugs-list