one file  was missing from the changeset

Change 20100507-hqm-p by [email protected] on 2010-05-07 11:13:40 EDT
    in /Users/hqm/openlaszlo/trunk
    for http://svn.openlaszlo.org/openlaszlo/trunk

Summary:  modify SWF9Writer to pass smaller chunks of javascript to script 
compiler

New Features:

Bugs Fixed: LPP-8978

Technical Reviewer: ptw
QA Reviewer: max
Doc Reviewer: (pending)

Documentation:

Release Notes:

Overview:

For swf10 compiles, instead of building one large javascript string
and passing it to the script compiler, this sends each chunk of script
that is passed to a persistent instance of the script compiler.

Calls to CompilationEnvironemnt.compileScript (hence to SWF9Writer.addScript)
are sent down to a new "compileBlock" method in sc.Compiler.
    

Details:
    
This implements a new subclass of sc.Compiler, sc.SWF10Compiler.

Instead of a monolithic call to sc.Compiler.compile(), a SWF10 compile
is initialized with a call to

sc.SWF10Compiler.startSWF10App()

then blocks of script are compiled via calls to compileBlock()

and the finalization is done with a call to finishSWF10App(). This
creates any needed interstitials and global var declarations, as well
as the main app boilerplate.

The flex compiler is then called. 

+ SWF9Generator has some things refactored into new methods:

makeInterstitials()
writeGlobalTUnitsToAS3()
writeMainTranslationUnit()
callFlexCompiler()

- a persistent pointer to a script parser and to the "main translation unit" is 
kept around so that
it can be reused for each call to compileBlock(). 

- the "classes" table, which kept a copy of all class defs in order to create 
interstitials, 
is now called "classConstructors", and only keeps a copy of the AST subtree 
that is the class
constructor. The tree is diked out of it's parent using the deepCopy method. 



Tests:

smokecheck, lzpix, test/snippets/import-class-and-view.lzx

A compile of the customer app now requires about 200-400 MB less of memory. 

The app can be compiled in non-debug mode with 640MB max heap (down from 800MB)
In backtrace mode, it requires 1000MB max heap (down from 1400MB). 





Files:
A       WEB-INF/lps/server/src/org/openlaszlo/sc/SWF10Compiler.java
M       WEB-INF/lps/server/src/org/openlaszlo/sc/SWF9External.java
M       WEB-INF/lps/server/src/org/openlaszlo/sc/ScriptCompiler.java
M       WEB-INF/lps/server/src/org/openlaszlo/sc/SWF9Generator.java
M       WEB-INF/lps/server/src/org/openlaszlo/sc/TranslationUnit.java
M       WEB-INF/lps/server/src/org/openlaszlo/compiler/ToplevelCompiler.java
M       WEB-INF/lps/server/src/org/openlaszlo/compiler/LibraryWriter.java
M       
WEB-INF/lps/server/src/org/openlaszlo/compiler/CompilationEnvironment.java
A       WEB-INF/lps/server/src/org/openlaszlo/compiler/IntermediateWriter.java
M       WEB-INF/lps/server/src/org/openlaszlo/compiler/Compiler.java
M       WEB-INF/lps/server/src/org/openlaszlo/compiler/Main.java
M       WEB-INF/lps/server/src/org/openlaszlo/compiler/SWF9Writer.java
M       WEB-INF/lps/server/src/org/openlaszlo/compiler/ViewSchema.java


Changeset: http://svn.openlaszlo.org/openlaszlo/patches/20100507-hqm-p.tar

Reply via email to