[Laszlo-dev] For Review: Change 20080415-dda-G Summary: Line number tracking and options for debugging compiler for development

Donald Anderson dda at ddanderson.com
Tue Apr 15 17:33:00 PDT 2008


Change 20080415-dda-G by dda at lester.local on 2008-04-15 19:43:52 EDT
     in /Users/dda/laszlo/src/svn/openlaszlo/trunk-a
     for http://svn.openlaszlo.org/openlaszlo/trunk

Summary: Line number tracking and options for debugging compiler for  
development

New Features:  New compilation options for lzc:
     -DtrackLines
     -DdumpASTInput=filename
     -DdumpASTOutput=filename

Bugs Fixed: LPP-5784: Need option to track input line numbers to  
output code
AKA nexb bugs
#285 LZX: Relocate sourcelocator assigned donalda enhancement 1 - ASAP  
LZX: OpenLaszlo core  (mostly fixed, see below))
#262 LZX: Wrong sourcelocator for <script> tags assigned donalda  
defect 2 - Must Be LZX: OpenLaszlo core  (mostly fixed)
#290 LZX: sourcelocator line numbers messed up assigned donalda defect  
1 - ASAP LZX: OpenLaszlo core  (mostly fixed)


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

Documentation:

Release Notes:

Details:
     There are two parts to this change.

     First - When 'trackLines' is set to 'true' in the compiler  
options, some extra /* -*- file: #XXX -*- */
     entries will be emitted into the output script.  This will happen  
at most(**) statements,
     but will not happen when the line number can be otherwise deduced  
by counting
     from the previous /* -*- file: #XXX -*- */ seen.  Tracklines can  
be set in lzc via:
        lzc -DtrackLines --runtime=dthml file.lzx
     or can be set in the Compiler.Options object.  It only has an  
effect when script output is
     produced (dhtml or swf9).

     The /* -*- file: #XXX -*- */ is an abbreviated format, we aren't  
showing the line or column number.

     (**) The flaw is that not all statements are being tracked with  
line number information, so it
     is possible to have some statements not be tracked right.  The  
aberation in output is temporary - at the next
     statement that is tracked, we see we are off, and emit a line  
number.  An example of the flaw:

         var y1 = 17; var y2 = 37; var y3 = 43;
         var xx = new String("");
         y1 += y2; y2 = y3; y3 += y1 + y2;
         for (var i=0; i&lt;arr.length; i++) {

     emits:

       var $3_y1 = 17;
       /* -*- file: #30 -*- */
       var $4_y2 = 37;
       /* -*- file: #30 -*- */
       var $5_y3 = 43;
       var $6_xx = new String("");
       $3_y1 += $4_y2;
       $4_y2 = $5_y3;
       $5_y3 += $3_y1 + $4_y2;
       /* -*- file: #33 -*- */
       for (var $7_i = 0;$7_i < $1_arr.length;$7_i++) {

     Notice that the line beginning y += y2 does not track correctly  
for subsequent statements
     on that line, but at the following 'for' statement, everything is  
okay.
     Due to the need to get this out and in use, we're reviewing  
before these
     flaws can be addressed.  I hope to correct this with a followup  
changeset.

     Second, in trying to track this problem, is was convenient to  
have a mechanism to dump the
     compiler's AST to files before and after it is transformed by the  
generator.  SWF9 had a
     way to do this (it was always put in the temp build directory),  
I've pushed this capability into
     all the compilers.  There are now two options, invoked from lzc  
via:
        -DdumpASTInput=filename
        -DdumpASTOutput=filename


Tests:
    Ran compiler on optarg.lzx and observed output.
    Added unusually formatted input and observed output.

    Ran usual regressions, including runlzunit and lztest

Files:
M      WEB-INF/lps/server/src/org/openlaszlo/sc/JavascriptGenerator.java
M      WEB-INF/lps/server/src/org/openlaszlo/sc/SWF9External.java
M      WEB-INF/lps/server/src/org/openlaszlo/sc/SWF9Generator.java
M      WEB-INF/lps/server/src/org/openlaszlo/sc/ 
SWF9ParseTreePrinter.java
M      WEB-INF/lps/server/src/org/openlaszlo/sc/Compiler.java
M      WEB-INF/lps/server/src/org/openlaszlo/sc/TranslationUnit.java
M      WEB-INF/lps/server/src/org/openlaszlo/sc/ParseTreePrinter.java

Changeset: http://svn.openlaszlo.org/openlaszlo/patches/20080415-dda-G.tar



--

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