Approved!  I diffed a decompiled swf8 LFC as well as the lzc --script 
output for a webtop compile.  It all looks good!

I wish there was better documentation and naming - it took me a bit of 
reading to figure out what verious methods and classes were doing.  For 
example, the name CodeGenerator doesn't really say anything about doing 
swf8 bytecode generation.  I think your new method names are an improvement.

P T Withington wrote:
> Change 20091029-ptw-1 by [email protected] on 2009-10-29 15:18:26 EDT
>     in /Users/ptw/OpenLaszlo/trunk
>     for http://svn.openlaszlo.org/openlaszlo/trunk
> 
> Summary: Remodularize the AST walkers
> 
> Bugs Fixed: LPP-7184 Binary libraries don't work in swf9 (substrate)
> 
> Technical Reviewer: max (pending)
> QA Reviewer: hminsky (pending)
> 
> Details:
> 
>     Overview
> 
>     Create a generic abstract syntax tree walker that knows how to
>     visit every node and (possibly) rewrite it.  Subclass that for
>     each of the possible code generators.  Use that to untangle the
>     compressor from the code generator.  In the future, it can be used
>     to create other compiler phases, like to pre-analyze global
>     declarations and class models, to do inlining, and to
>     post-optimize, compress, and obfuscate.
> 
>     There is more cleanup that could be done to create a class that is
>     for JS1 platforms separate from JS2 platforms, but that is not
>     required for LPP-7184, so I have not attempted that here.
> 
>     JavascriptGenerator, CommonGenerator: Remove methods that
>     duplicate GenericVisitor or are only required in CodeGenerator
>     (swf8).
> 
>     JavascriptGenerator: Customize translateFunctionInternal for
>     Javascript (new name because it requires a different signature for
>     now).
> 
>     VariableAnalyzer:  Only requires ASTVisitor interface.
> 
>     CommonGenerator:  Extend GenericVisitor.  Move include parsing up
>     to GenericVisitor.
> 
>     TranslationContext:  Remove methods only needed for swf8.
> 
>     ASTVisitor:  Move options here from Translator.  Complete
>     signature for all AST's.
> 
>     Compiler:  Remove ACTIVATION_OBJECT default (not needed since
>     swf5!).  Continue to kludge interface to CodeGenerator.
> 
>     CodeGenerator:  Create SWFTranslationContext that extends
>     TranslationContext with the features only needed for swf8.  Move
>     swf8 overrides from CommonGenerator here.
> 
>     JavascriptCompressor:  Extend GenericVisitor, overriding just
>     enough visitors to analyze and rename function locals.
> 
>     Translator:  Move options to ASTVisitor and swf8-specific
>     interfaces to CodeGenerator.
> 
>     GenericVisitor:  (new) Knows how to expand includes and walk all
>     nodes of the parse tree, possibly rewriting.  What we should have
>     done when we started the DHTML project, but did not have time
>     for...
> 
>     ParseTreePrinter:  Debug and name tweaks.
> 
> Tests:
>     Smokecheck on all platforms, diff of LFCdhtml.js before and after.
> 
> Files:
> M      WEB-INF/lps/server/src/org/openlaszlo/sc/JavascriptGenerator.java
> M      WEB-INF/lps/server/src/org/openlaszlo/sc/VariableAnalyzer.java
> M      WEB-INF/lps/server/src/org/openlaszlo/sc/CommonGenerator.java
> M      WEB-INF/lps/server/src/org/openlaszlo/sc/TranslationContext.java
> M      WEB-INF/lps/server/src/org/openlaszlo/sc/ASTVisitor.java
> M      WEB-INF/lps/server/src/org/openlaszlo/sc/Compiler.java
> M      WEB-INF/lps/server/src/org/openlaszlo/sc/CodeGenerator.java
> M      WEB-INF/lps/server/src/org/openlaszlo/sc/JavascriptCompressor.java
> M      WEB-INF/lps/server/src/org/openlaszlo/sc/Translator.java
> A      WEB-INF/lps/server/src/org/openlaszlo/sc/GenericVisitor.java
> M      WEB-INF/lps/server/src/org/openlaszlo/sc/ParseTreePrinter.java
> 
> Changeset: http://svn.openlaszlo.org/openlaszlo/patches/20091029-ptw-1.tar

-- 
Regards,
Max Carlson
OpenLaszlo.org
_______________________________________________
Laszlo-reviews mailing list
[email protected]
http://www.openlaszlo.org/mailman/listinfo/laszlo-reviews

Reply via email to