Ok ... in a final struggle to at least have something to show at my talk at 
ApacheCon I dug really deep into the compiler and noticed one thing:


There's a class called: JSSharedData, which contains a set of public static 
variables for containing the state of a compilation (I guess). The problem is 
that the values inside are set by the constructors of the compilers ... well 
actually just MXMLJSC but as COMPJSC extends from that also from that. In the 
FlexJSToolGroup I create an instance of any tool the group has. First one of 
COMPJSC and then MXMLJSC. So when creating the MXMLJSC instance all the static 
global variables correctly initialized by COMPJSC are overwritten by those of 
MXMLJSC. The reason I didn't notice this, was that in my last attempt I only 
used MXMLJSC in my examples from Flexmojos.


This "one state that's shared between compiler instances" is really bad as the 
VM isn't destroyed during the build, this means that eventually settings from 
one module could leak to another module. I guess it would be absolutely 
impossible to track down problems like this. "public static"-Variables for 
maintaining the State of an instance of anything is super-duper-ultra-bad ... 
we have to change this.


Chris

Reply via email to