[Laszlo-dev] For Review: Change 20090415-ptw-w Summary: Improve catch-errors and backtrace efficiency

P T Withington ptw at pobox.com
Thu Apr 16 05:59:18 PDT 2009


I'll take all your suggestions.  We want a compromise between what  
_would_ have been returned in as2 and what _can_ be returned in ES5/ 
as3.  I honestly forgot about `int` and `uint`.  Hopefully no one  
actually uses those, since they are not ECMAScript types (and will not  
be in ES5).

Approved with your changes?

On 2009-04-16, at 05:01EDT, André Bargull wrote:

> Why do you return the empty string if returnType is "String"?  
> Strings can be `null`. And you've missed to include "int" and  
> "uint" (both are coerced to 0 in AS3).
> I'd say the return values should be (for best cross-runtime  
> compliance):
> void -> no return
> int, uint, Number -> 0
> Boolean -> false
> all other -> null
>
> <canvas debug="true">
> <script when="immediate"><![CDATA[
>   public class Foo {
>     // void must not have return value in AS3
>     // public function f_void () :void {return null;}
>     // coerced to 0 in AS3
>     public function f_int () :int {return null;}
>     // coerced to 0 in AS3
>     public function f_uint () :uint {return null;}
>     // coerced to 0 in AS3
>     public function f_Number () :Number {return null;}
>     // coerced to false in AS3
>     public function f_Boolean () :Boolean {return null;}
>     // returns null
>     public function f_String () :String {return null;}
>     // returns null
>     public function f_Object () :Object {return null;}
>     // returns null
>     public function f_Date () :Date {return null;}
>   }
>   // make a reference to class so it'll be compiled...
>   Foo;
> ]]></script>
> </canvas>
>
> On 4/16/2009 1:54 AM, P T Withington wrote:
>> Change 20090415-ptw-w by ptw at dueling-banjos.home on 2009-04-15  
>> 19:34:51 EDT
>>    in /Users/ptw/OpenLaszlo/trunk-3
>>    for http://svn.openlaszlo.org/openlaszlo/trunk
>>
>> Summary: Improve catch-errors and backtrace efficiency
>>
>> Bugs Fixed: LPP-8008 Optimize catcherrors
>>
>> Technical Reviewer: a.bargull at intensis.de, hminksy (pending)
>> QA Reviewer: dda at ddanderson.com (pending)
>>
>> Details:
>>    LzMessage: Correct stack skip for $reportSourceWarning (which was
>>    one too many).
>>
>>    JavascriptGenerator:  Eliminate the need for the inner closure to
>>    catch errors.  Merge catching of errors with the backtrace
>>    maintainer.
>>
>>    - noteCallSite should only emit line numbers for positive line
>>      numbers (generated nodes sometimes have -1 as a line number).
>>
>>    - predecls no longer needed, but need postfix to insert a default
>>      return value to keep the flex compiler happy.
>>
>>    - Only enable catching of errors if variable analysis shows that
>>      there are dereferences (calls, or property references) that
>>      could err
>>
>>    - If generating for swf9 and catching errors, insert a 'null'
>>      return at the end of the function that matches the return type
>>      of the function to mimic as2.
>>
>>    - Eliminate the inner closure for tryAll, we can just wrap the
>>      body directly in a try/catch and eliminate the extra function
>>      call overhead.
>>
>>    VariableAnalyzer: Make it possible to call computeReferences more
>>    than once (so we can analyze the body before and after the try
>>    wrapper is added).  Also, calculate a new property, dereferenced,
>>    that tells if any calls or property references occured.
>>
>> Tests:
>>    Turned on lps.properties:compiler.catcherrors, [all demos,  
>> smokecheck] x [dhtml, swf9]
>>
>> Files:
>> M      WEB-INF/lps/lfc/debugger/LzMessage.lzs
>> M      WEB-INF/lps/server/src/org/openlaszlo/sc/ 
>> JavascriptGenerator.java
>> M      WEB-INF/lps/server/src/org/openlaszlo/sc/VariableAnalyzer.java
>>
>>
>> Changeset: http://svn.openlaszlo.org/openlaszlo/patches/20090415-ptw-w.tar
>>




More information about the Laszlo-dev mailing list