Javascript:SpiderMonkey:OdinMonkey: Difference between revisions

no edit summary
No edit summary
Line 15: Line 15:
* Add enough try/catch to asm.js to allow compilation of C++ exceptions using the zero-cost implementation strategy  
* Add enough try/catch to asm.js to allow compilation of C++ exceptions using the zero-cost implementation strategy  
* Start general JS parsing before the entire JS script has completed downloadeding so that asm.js compilation can overlap
* Start general JS parsing before the entire JS script has completed downloadeding so that asm.js compilation can overlap
* Standardize and implement value objects ({{bug|749786}}) then add int64/uint64/float32 to asm.js
* Standardize and implement value objects ({{bug|749786}}) then add int64/uint64 to asm.js
* asm.js parser : {{bug|854061}}
* Support GC allocated Java-like objects to allow asm.js generation from JVM/CLR bytecode.  Use [http://wiki.ecmascript.org/doku.php?id=harmony:typed_objects Typed Objects] to describe class structure.  Use real vtables.
* fall back to baseline jit for very large functions (maybe not necessary with Emscripten [http://mozakai.blogspot.com/2013/08/outlining-workaround-for-jits-and-big.html outlining]): {{bug|875174}}
* FunctionFuture : {{bug|854627}}


== Potential optimizations ==
== Potential backend optimizations ==
* native vs. asm.js differential profiling : {{bug|861440}}, {{bug|863924}}
* native vs. asm.js differential profiling : {{bug|861440}}, {{bug|863924}}
* Revisit primary Ion algorithms (phi placement, gvn, regalloc) to avoid the quadratic blowup we see on huge functions (be more like LLVM)
* improve heap access performance : {{bug|865516}}, {{bug|865523}}, {{bug|869606}}, {{bug|870743}}, {{bug|897425}}
* improve heap access performance : {{bug|865516}}, {{bug|865523}}, {{bug|869606}}, {{bug|870743}}, {{bug|897425}}
* improve x86/ARM asm.js-to-asm.js ABI : {{bug|861785}}
* improve x86/ARM asm.js-to-asm.js ABI : {{bug|861785}}
Line 32: Line 37:
* Align loop headers on natural boundaries : {{bug|867001}}
* Align loop headers on natural boundaries : {{bug|867001}}
* Further optimize multiplication by a constant to use lea tricks for small constants (e.g. x*3 == x<<1+x)
* Further optimize multiplication by a constant to use lea tricks for small constants (e.g. x*3 == x<<1+x)
== Farther out ideas ==
* fall back to baseline jit for very large functions (maybe not necessary with Emscripten [http://mozakai.blogspot.com/2013/08/outlining-workaround-for-jits-and-big.html outlining]): {{bug|875174}}
* alternatively, revisit primary Ion algorithms (phi placement, gvn, regalloc) to avoid the quadratic blowup we see on huge functions (be more like LLVM)
* asm.js parser : {{bug|854061}}
* FunctionFuture : {{bug|854627}}
* Support GC allocated Java-like objects to allow asm.js generation from JVM/CLR bytecode.  Use [http://wiki.ecmascript.org/doku.php?id=harmony:typed_objects Typed Objects] to describe class structure.  Use real vtables.


== Current asm.js spec bugs ==
== Current asm.js spec bugs ==
Confirmed users
367

edits