[Laszlo-dev] For Review: Change 20090206-dda-z Summary: With catcherrors=true, disable try/catch/closure when 'arguments' is used.
Donald Anderson
dda at ddanderson.com
Sat Feb 7 11:58:17 PST 2009
Committed. Future work is in LPP-7732 assigned to me for now.
On Feb 7, 2009, at 2:33 PM, P T Withington wrote:
> I'm approving this because it appears safe and we would like it in
> 4.2.0.1.
>
> I think we should file an improvement to re-address this in 4.2.1,
> using something more like the Debug.evalCarefully technology, which
> is used in DHTML. The evalCarefully approach would be to wrap the
> potentially erring function at the call site, where the analysis of
> free references will be much simpler, hence the creation of a
> closure that does not perturb those references will be simpler too.
>
> We can analyze whether putting the try/catch inline at call sites
> rather than in function bodies causes too much code bloat and
> measure that against the speed penalty of using an evalCarefully
> subroutine instead.
>
> Please check in this fix and create a new bug with the above
> suggestions.
>
> On 2009-02-06, at 22:48EST, Donald Anderson wrote:
>
>> Change 20090206-dda-z by dda at lester-2.local on 2009-02-06 22:16:07
>> EST
>> in /Users/dda/laszlo/src/svn/openlaszlo/trunk-g/test
>> for http://svn.openlaszlo.org/openlaszlo/trunk/test
>>
>> Summary: With catcherrors=true, disable try/catch/closure when
>> 'arguments' is used.
>>
>> New Features:
>>
>> Bugs Fixed: LPP-7721 [xml-rpc is not working when
>> "compiler.swf9.catcherrors=true"]
>>
>> Technical Reviewer: ptw (pending)
>> QA Reviewer: (pending)
>> Doc Reviewer: (pending)
>>
>> Documentation:
>>
>> Release Notes:
>>
>> Details:
>> ** for consideration in 4.2.0.1
>>
>> 'arguments' refers to the arguments passed to the enclosing
>> function, and allows some
>> clever examination of arguments dynamically. With
>> catcherrors=true, an additional
>> function closure is wrapped around each function within a try/
>> catch, and the extra
>> function thwarts the use of 'arguments' within the body of the
>> original function.
>> To avoid such problems, we disable catcherrors for any functions
>> that refer to
>> the magic 'arguments'. This allows us to remove the workaround
>> pragmas added
>> to lps/components (which also disabled catcherrors, but for
>> specific functions)
>> As a bonus, smokecheck now passes with catcherrors enabled.
>>
>> It's true that now a small percentage of functions will not have
>> the try/catch wrapping
>> that used to have it. However, such functions should be relative
>> rare, will probably
>> be in component code rather than user code, and if in user code,
>> would probably not
>> be a top level function. Any such functions that are not top
>> level functions would
>> will be under the control of a higher level try/catch block.
>> Finally, any such functions
>> that we now don't wrap may well have been broken under the
>> previous implementation.
>>
>> Tests:
>> With catcherrors=true:
>> {smokecheck,lzpix,weather} x {swf8,swf9,dhtml}
>> Verified that testcase submitted with LPP-7721 works.
>> Verified that Tucker's test case from LPP-7514 works. (illustrating
>> that an error in a function
>> is ignored, allowing the function to return 'normally' and
>> execution to continue).
>>
>> Files:
>> M WEB-INF/lps/server/src/org/openlaszlo/sc/
>> JavascriptGenerator.java
>> M lps/components/rpc/xmlrpc.lzx
>> M lps/components/rpc/javarpc.lzx
>> M lps/components/rpc/soap.lzx
>>
>> Changeset: http://svn.openlaszlo.org/openlaszlo/patches/20090206-dda-z.tar
>>
>>
>>
>> --
>>
>> Don Anderson
>> Java/C/C++, Berkeley DB, systems consultant
>>
>> voice: 617-306-2057
>> email: dda at ddanderson.com
>> www: http://www.ddanderson.com
>>
>>
>>
>>
>>
>
--
Don Anderson
Java/C/C++, Berkeley DB, systems consultant
voice: 617-306-2057
email: dda at ddanderson.com
www: http://www.ddanderson.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.openlaszlo.org/pipermail/laszlo-dev/attachments/20090207/30298f2a/attachment-0001.html
More information about the Laszlo-dev
mailing list