Adam Olsen wrote:
On Thu, May 8, 2008 at 5:22 PM, Thomas Lee <[EMAIL PROTECTED]> wrote:
Nick Coghlan wrote:
There are a lot of micro-optimisations that are actually context
independent, so moving them before the symtable pass should be quite
feasible - e.g. replacing "return None" with "return", stripping dead code
after a return statement, changing a "if not" statement into an "if"
statement with the two suites reversed, changing "(1, 2, 3)" into a stored
constant, folding "1 + 2" into the constant "3".

I believe the goal is to see how many of the current bytecode
optimisations can actually be brought forward to the AST generation stage,
rather than waiting until after the bytecode symtable calculation and
compilation passes.

That's been the aim so far. It's been largely successful with the exception
of a few edge cases (most notably the functions vs. generator stuff). The
elimination of unreachable paths (whether they be things like "if 0: ..." or
"return; ... more code ...") completely breaks generators since we might
potentially be blowing away "yield" statements during the elimination
process.

Also breaks various sanity checks relating to the global statement.

What sanity checks are these exactly? Is this related to the lnotab?

Cheers,
T
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to