Adam Olsen wrote: > On Thu, May 8, 2008 at 5:22 PM, Thomas Lee <tom at vector-seven.com> 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
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4