[Laszlo-dev] For Review: Change 20070919-dda-V Summary: script compiler refactoring
Donald Anderson
dda at ddanderson.com
Fri Sep 21 10:55:24 PDT 2007
Okay, made that change and committed.
Thanks.
- Don
On Sep 21, 2007, at 12:43 PM, P T Withington wrote:
> Approved. Good stuff.
>
> One comment. I might have named commonSuperCall translateSuperCall
> (in keeping with the other visit/translate pairs).
>
> On 2007-09-19, at 18:00 EDT, Donald Anderson wrote:
>
>> Change 20070919-dda-V by dda at freddie.local on 2007-09-19 17:35:41 EDT
>> in /Users/dda/laszlo/src/svn/openlaszlo/trunk/WEB-INF/lps/
>> server/src/org/openlaszlo/sc
>> for http://svn.openlaszlo.org/openlaszlo/trunk/WEB-INF/lps/
>> server/src/org/openlaszlo/sc
>>
>> Summary: script compiler refactoring
>>
>> New Features:
>> No externally visible changes. A rearrangement of source code
>> to allow for better
>> sharing between modules, and separation of most of the platform
>> independent parts of the compiler.
>> This more easily allows various future work (e.g. SWF9) to
>> proceed in parallel with
>> general maintenance changes.
>>
>> Bugs Fixed:
>>
>> Technical Reviewer: ptw
>> QA Reviewer: (pending)
>> Doc Reviewer: (pending)
>>
>> Documentation:
>>
>> Release Notes:
>>
>> Details:
>> Added a new class CommonGenerator that is the base class of
>> JavascriptGenerator and CodeGenerator. Methods from the two
>> subclasses that are textually the same, or can be easily coerced
>> to be the same are now only in CommonGenerator.
>> Data members and internal classes that are identical are
>> also now in the base class.
>>
>> To get even greater sharing, many methods (like virtually all the
>> visit* methods) that had signature changes in JavascriptGenerator
>> (that is, they return 'SimpleNode' rather than void), have
>> changed
>> across the board to return SimpleNode. That is, these
>> functions return
>> the possibly modified node that is visited. In the
>> CodeGenerator class, this
>> concept is generally not used, so even though this class plays
>> by the
>> same rules, return values from such methods are ultimately
>> ignored.
>> But this gives a lot more code sharing and many more functions
>> could be moved
>> to CommonGenerator.
>>
>> Likewise, methods that visit expressions that used to be declared
>> returning boolean in CodeGenerator now must return SimpleNode.
>> The backwards-seeming translation is that 'true' corresponds
>> to null,
>> and false corresponds to the existing node. Doing it this way
>> gets the maximum code sharing, it clearly reflects the way that
>> the code was originally transformed after splitting.
>>
>> CommonGenerator also implements a new interface: ASTVisitor,
>> which is
>> the union of all the visit* methods (returning a SimpleNode, of
>> course). This allows methods in CommonGenerator (esp.
>> visitStatement)
>> to freely call any other visit* method, whether or not it is
>> actually
>> defined in CommonGenerator.
>>
>> Most of these changes listed above are almost mechanical using
>> the
>> indicated strategy; only occasionally were small (equivalent)
>> coding
>> changes introduced, and then only if a method was otherwise
>> identical.
>> More elaborate code sharing is possible, and was attempted, but
>> such changes tended to inhibit overall readability and
>> maintainability.
>>
>> Tests:
>> built all files in lps/includes/lfc with the previous compiler
>> (without
>> these changes) using the flags "--option
>> generatePredictableTemps=true".
>> built the same files with the new compiler (with these changes).
>> All *.js files compare exactly, all *.lzl files were
>> disassembled,
>> and the output from that compares exactly.
>>
>> Files:
>> M JavascriptGenerator.java
>> A CommonGenerator.java
>> A ASTVisitor.java
>> M CodeGenerator.java
>>
>> Changeset: http://svn.openlaszlo.org/openlaszlo/patches/20070919-
>> dda-V.tar
>>
>>
>>
>> --
>>
>> Don Anderson
>> Java/C/C++, Berkeley DB, systems consultant
>>
>> Voice: 617-547-7881
>> Email: dda at ddanderson.com
>> WWW: http://www.ddanderson.com
>>
>
--
Don Anderson
Java/C/C++, Berkeley DB, systems consultant
Voice: 617-547-7881
Email: dda at ddanderson.com
WWW: http://www.ddanderson.com
More information about the Laszlo-dev
mailing list