[Laszlo-dev] For Review: Change 20080724-dda-2 Summary: minor cleanup of SWF6 compiler transforms
Donald Anderson
dda at ddanderson.com
Fri Jul 25 16:02:23 PDT 2008
Thanks. I also found this very good page:
http://www.m2osw.com/fr/swf_alexref.html
On Jul 24, 2008, at 7:00 PM, P T Withington wrote:
> Approved. Rats on the no new instructions!
>
> Possibly worth investigating for more info on swf8 byte codes: http://www.mtasc.org/
>
> On 2008-07-24, at 17:50EDT, Donald Anderson wrote:
>
>> Change 20080724-dda-2 by dda at lester.local on 2008-07-24 16:43:04 EDT
>> in /Users/dda/laszlo/src/svn/openlaszlo/trunk-a
>> for http://svn.openlaszlo.org/openlaszlo/trunk
>>
>> Summary: minor cleanup of SWF6 compiler transforms
>>
>> New Features:
>>
>> Bugs Fixed: LPP-6669 (Remove swf6 byte-code kludges from
>> CodeGenerator.java)
>>
>> Technical Reviewer: ptw (pending)
>> QA Reviewer: (pending)
>> Doc Reviewer: (pending)
>>
>> Documentation:
>>
>> Release Notes:
>>
>> Details:
>> Most of the issues implied by the LPP-6669 cannot be fixed - but
>> details are listed here.
>>
>> 0) Removed some code specific to swf6 involving using lower case
>> for variable and register names
>>
>> Examined and tested the various transforms in question:
>>
>> 1)
>> // swf6 returns undefined for comparisons with NaN, it
>> // is supposed to return false (note that you cannot
>> // eliminate one NOT by inverting the sense of the
>> // comparison
>> BinopInstrs.put(ParserConstants.LT, new Instruction[]
>> {Instructions.LessThan, Instructions.NOT, Instructions.NOT});
>>
>> Tried setting this to just Instructions.LesThan, but smokecheck
>> gives errors on NaN comparisons.
>>
>> 2)
>> // swf6 does not have GE or LE, but inverting the
>> // complement operator does not work for NaN ordering
>> // Luckily, LogicalOr coerces undefined to false, so we
>> // don't have to play the NOT NOT trick above
>> BinopInstrs.put(ParserConstants.LE, new Instruction[]
>>
>> Tried setting LE to { Instructions.GT, Instructions.NOT }
>> smokecheck also gives errors on NaN comparisons.
>> For kicks, also tried setting LE to { Instructions.GT,
>> Instructions.NOT , Instructions.NOT , Instructions.NOT }
>> to see if the 'double NOT' trick might work, but also gives the
>> same smokecheck errors.
>>
>> Also examined flasm source to see if GE or LE has been added (they
>> have not).
>>
>> 3)
>> // swf6 does not have NE or SNE either, but inverting
>> // the complement is correct for NaN
>>
>> There are no new opcodes for NE or SNE (at least as known to flasm)
>>
>> 4)
>> // Approximate a in b as b.a =! void 0
>>
>> No new opcodes for 'in'
>>
>> 5) Special case of 'is' in translateBinaryExpression.
>>
>> No new opcodes for 'is'
>>
>> 6) Special case of 'cast' in translateBinaryExpression.
>>
>> There is a SWF 'CAST' operator that leaves a 'null' on the stack in
>> case of error.
>> This is not being utilized, and there's already a separate TODO for
>> this item.
>> It didn't seem to be under the purvue of this Jira bug.
>>
>>
>> Tests:
>> regression: smokecheck swf8/dhtml
>>
>> Files:
>> M WEB-INF/lps/server/src/org/openlaszlo/sc/CodeGenerator.java
>>
>> Changeset: http://svn.openlaszlo.org/openlaszlo/patches/20080724-dda-2.tar
>>
>>
>>
>> --
>>
>> Don Anderson
>> Java/C/C++, Berkeley DB, systems consultant
>>
>> voice: 617-547-7881
>> email: dda at ddanderson.com
>> www: http://www.ddanderson.com
>>
>>
>>
>
--
Don Anderson
Java/C/C++, Berkeley DB, systems consultant
voice: 617-547-7881
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/20080725/fa9f1c9f/attachment.html
More information about the Laszlo-dev
mailing list