Approved!
Change 20080415-dda-G by <mailto:[EMAIL PROTECTED]>[EMAIL PROTECTED]
on 2008-04-15 19:43:52 EDT
in /Users/dda/laszlo/src/svn/openlaszlo/trunk-a
for
<http://svn.openlaszlo.org/openlaszlo/trunk>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<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>http://svn.openlaszlo.org/openlaszlo/patches/20080415-dda-G.tar
--
Don Anderson
Java/C/C++, Berkeley DB, systems consultant
voice: 617-547-7881
email: <mailto:[EMAIL PROTECTED]>[EMAIL PROTECTED]
www: <http://www.ddanderson.com>http://www.ddanderson.com