I’m going to try to consolidate your last set of emails into this post.

On 11/2/14, 12:45 PM, "Christofer Dutz" <christofer.d...@c-ware.de> wrote:

>Even if I could not 100% confirm the code was doing the same as compared
>to the default compiler. I could confirm that removing the code I was
>thinking of being redundant didn't have any effect on the generated
>output. The classes abc code were identical. So I guess it's safe to
>assume, that removing the code doen't break anything.

I’m concerned that removing that code is going to break some scenario
involving binding to a bindable class.  Maybe Darrell or Gordon can
provide more information, but the code you are removing is in
handleSyntaxTreeRequest, and the code you are relying on is part of
handleABCBytesRequest.  I think handleSyntaxTreeRequest is called when
some other class is trying to reference members of the class being
compiled, and handleABCBytesRequest is called to output the ABC to the
SWF/SWC.  Did your scenario have some other class call addEventListener on
the class being compiled, or bind to the class being compiled?

>
>Ok ... so I found out what the first two commands are:
>
>get "this" and make it the scope ... makes sense to have this in every
>non-static function, but why is this missing in falcon?
>
>Every function call in the default compiler results in these two lines of
>code:
>
>      0       getlocal0
>      1       pushscope
>
>these are missing in Falcon compiled code.

I don’t know for sure.  It could be that, with strict mode, you don’t need
scope in certain scenarios.  Again, maybe Darrell or Gordon can answer.


>
>Another change I found was that in Falcon compiled code the Metadata is
>kept at class level while the default compiler moves the metadata to the
>property. Ist this of any significance? I could immagine that if I have a
>class extending a falcon compiled class then all properties in this
>extension would be bindable too, if extending a default compiler compiled
>class I would only expect the properties of the base class bindable. But
>that's just wild guessing ... reading ABC code is something I'm not
>really familiar with.

That could be a bug.  Again we’ll need to find a test case that exploits
it.

>But ignoring the first two statements (even a one-line return null
>function had these). The results were semantically allmost identical.
>Only the setter of a Bindable variable were slightly differntly
>implemented and the private variable didn't have the number prefix ...
>don't know if this could be a problem:
>
>private var tst:String;
>
>public function set tst(val:String):void { ...
>}
>
>pubic function get tst():String {
>...
>}

In theory, the private var is actually in a namespace.

-Alex

Reply via email to