I didn't understand why JSEmitter uses lots of ABC classes. I got the answer from Bernd P.
Falcon's BURM handles generating instructions-or-JS-code for method bodies, but it doesn't generating higher-level constructs like classes, fields, etc. Bernd needed some data structures that could hold information about these higher-level constructs, until he was ready to spit them out as JS code. Rather than roll his own, he just re-used the ABC classes which represent these constructs. My opinion is that this is reasonable and expedient, especially for a prototype, but confusing to newcomers. I'd recommend making new structures to represent the higher-level JS constructs. - Gordon -----Original Message----- From: Gordon Smith [mailto:gosm...@adobe.com] Sent: Tuesday, December 04, 2012 3:31 PM To: flex-dev@incubator.apache.org Subject: RE: ABC -> JS I'm trying to stay out of FalconJS, but I will ask Bernd P about this. - Gordon -----Original Message----- From: Michael Schmalle [mailto:apa...@teotigraphix.com] Sent: Tuesday, December 04, 2012 2:53 PM To: flex-dev@incubator.apache.org Subject: RE: ABC -> JS The JSEmitter is littered with the whole; import org.apache.flex.abc.graph.IBasicBlock; import org.apache.flex.abc.semantics.ClassInfo; import org.apache.flex.abc.semantics.ExceptionInfo; import org.apache.flex.abc.semantics.InstanceInfo; import org.apache.flex.abc.semantics.Instruction; import org.apache.flex.abc.semantics.Label; import org.apache.flex.abc.semantics.Metadata; import org.apache.flex.abc.semantics.MethodBodyInfo; import org.apache.flex.abc.semantics.MethodInfo; import org.apache.flex.abc.semantics.Name; import org.apache.flex.abc.semantics.Namespace; import org.apache.flex.abc.semantics.Nsset; import org.apache.flex.abc.semantics.PooledValue; import org.apache.flex.abc.semantics.ScriptInfo; import org.apache.flex.abc.semantics.Trait; import org.apache.flex.abc.semantics.Traits; import org.apache.flex.abc.instructionlist.InstructionList; He used the IABCVisitor which is all ABC as well. Looking at this again, Alex put it well, it may be generating Strings but the WHOLE API of the class is abc.semantics. If you don't know abc semantics, there is nothing you can do other than learn it all. Mike Quoting Gordon Smith <gosm...@adobe.com>: > Interesting. I don't understand why it is doing anything with Traits. > Alex, you might want to ask Bernd P. > > - Gordon > > -----Original Message----- > From: Michael Schmalle [mailto:apa...@teotigraphix.com] > Sent: Tuesday, December 04, 2012 1:50 PM > To: flex-dev@incubator.apache.org > Subject: Re: ABC -> JS > > Quoting Alex Harui <aha...@adobe.com>: > >> >> On 12/4/12 12:37 PM, "Gordon Smith" <gosm...@adobe.com> wrote: >> >>>> SO I will say to anybody, in the current state of the FalconJS >>>> compiler, you NEED to know opcdes to be able to fix anything. >>> >>> I don't know much about FalconJS but I would be very surprised if >>> this is true. Can you show me one method of FalconJS that actually >>> writes out an ABC opcode? >> It isn't writing out ABC per-se, but the code in JSEmitter seems to >> require knowledge about the ABC block in the SWF. Its API is in >> terms of traits. I was surprised to see that when I first started >> poking at the code. > > Gordon, this is what I meant (what Alex said), sorry for getting > terminology mixed up here but the fact I am having trouble > understanding it is because of the ABC block stuff. I just don't know > enough to grasp the mechanics of the traversals. > > I just want to understand what is going on and it's the > addInstruction() stuff etc that seems to require some knowledge of ABC. > > Mike > > >> >> -- >> Alex Harui >> Flex SDK Team >> Adobe Systems, Inc. >> http://blogs.adobe.com/aharui >> >> > > -- > Michael Schmalle - Teoti Graphix, LLC > http://www.teotigraphix.com > http://blog.teotigraphix.com > > -- Michael Schmalle - Teoti Graphix, LLC http://www.teotigraphix.com http://blog.teotigraphix.com