flex-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Michael Schmalle <apa...@teotigraphix.com>
Subject Re: Writable AST and Code generation for Falcon was: [Re: [jira] [Commented] (FLEX-33330) ... )
Date Sat, 29 Dec 2012 16:58:27 GMT
And one other thing;

I thought this compiler was written for FlashBuilder, this means Adobe  
has a huge API for saying files have changed, updating scopes ect.

In the IWorkspace API you can see evidence of this. Which means in a  
code editor, you are updating source files all the time and  
reconnecting definitions in the global symbol table which is the  
workspace which holds projects which hold their compilation units. I  
see the projects ass the ponds holding the compilation unit boats and  
the workspace as the earth holding all the ponds, excuse the cheesy  

I might be looking at this naively but I think my assumptions have some value.


Quoting Michael Schmalle <apache@teotigraphix.com>:

> Quoting Alex Harui <aharui@adobe.com>:
>> On 12/29/12 8:26 AM, "Michael Schmalle" <apache@teotigraphix.com> wrote:
>>>> FWIW, my understanding of Falcon is that each class source file is a
>>>> compilation unit and compilation units are parsed in separate threads.
>>>> Therefore there is no actual point where all ASTs are sitting  
>>>> around.  I can
>>>> see a callback when the ASTs for a individual compilation unit is ready to
>>>> be reduced, but I don't know if you can or want to synchronize all AST
>>>> generation across all compilation units.
>>> I think you're half correct. If you look at it from a parsing point
>>> your correct, but if you look at it from a definition compilation
>>> point it's incorrect.
>>> To create a SWF file, Falcon uses the Workspace and a step to
>>> reconnect all scopes which is syncornized after all compilation units
>>> have been parsed.
>> I hadn't noticed that.  I will look for it next time I'm wading through the
>> compiler.  What I thought I saw was that a unit would request abc from
>> another unit, which would result not only in its parsing but in its
>> reduction to byte code which I would think you would want to avoid if you
>> are trying to sync everything up.
> Well I'm not in the mood to stick my foot in my mouth so I am on a  
> mission to demystify the compiler's actions.
> I will post my result on the wiki. I have to many projects I want to  
> do now where not "konwing" this exactly is going to end up wasting  
> my time.
> I know when I wrote ASDoc, I was able to resolve everything but I  
> used the MXML compiler as a base. I just need to really understand  
> what is going on now. I takled the multithreading in FalconJx, but  
> when I debug, the multithreading is over after;
>                 final File outputFolder = new File(outputFile.getParent());
>                 List<ICompilationUnit> reachableCompilationUnits = project
>                         .getReachableCompilationUnitsInSWFOrder(ImmutableSet
>                                 .of(mainCU));
> Once this returns I swear it's synced back on 1 thread. After that  
> call I loop through all reachable units and produce .js files for  
> each.
> 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

View raw message