Given the words, our first project will be the engine “Iron for HyperText”, instead of an Adobe AIR project that would otherwise target AVM2. This will be easier as I will not be dealing with control flow analysis, but instead will generate JavaScript break [label]
and continue [label]
statements rather than jump instructions.
I know that WASM exposes an easier control flow than that of AVM2, but it either misses break
or continue
.
Here is a look into the runtime API
Basically there is a semi AVM2 inside JavaScript, but it is different in some ways; for example, the ES3 prototype chain will be semi broken as I do not want to deal with instance objects built from a Function
object.
About E4X, I will probably ship a good NPM package in the runtime so I can ease the task list.
So I have gave up in MXMLC for now; if I get back, I will target JavaScript using that semi AVM2 runtime. (Where, I hope, the V8 and Apple JavaScriptCore engines will optimize the Iron engine significantly.)