Javascript:SpiderMonkey:OdinMonkey: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
|||
Line 1: | Line 1: | ||
== Active == | == Active == | ||
* Heap resizing: {{bug|965880}} | |||
* Implement SIMD proposal ({{bug|894105}}) and incorporate into asm.js ({{bug|992267}}) | * Implement SIMD proposal ({{bug|894105}}) and incorporate into asm.js ({{bug|992267}}) | ||
* Continued SharedArrayBuffer prototyping in SpiderMonkey and Emscripten | * Continued SharedArrayBuffer prototyping in SpiderMonkey and Emscripten | ||
* Optimize sin/cos: {{bug|967709}} | * Optimize sin/cos: {{bug|967709}} | ||
== Planned next projects == | == Planned next projects == | ||
* Move code generation into the parallel compilation tasks: {{bug|959263}} | * Move code generation into the parallel compilation tasks: {{bug|959263}} | ||
* Zero-cost exception handling: {{bug|1065089}} | * Zero-cost exception handling: {{bug|1065089}} | ||
* Optimize calls into ({{bug|962641}}), out of ({{bug|1000632}}), and between ({{bug|982036}}) asm.js modules. | * Optimize calls into ({{bug|962641}}), out of ({{bug|1000632}}), and between ({{bug|982036}}) asm.js modules. | ||
* Remove async-script requirement for asm.js caching: {{bug|961057}} | * Remove async-script requirement for asm.js caching: | ||
** Maybe remove it from QuotaManager: {{bug|961057}} | |||
** More likely, just take (large) script parsing off the main thread. | |||
* Fix asm.js caching browser interop ({{bug|1047098}}, {{bug|1047105}} | * Fix asm.js caching browser interop ({{bug|1047098}}, {{bug|1047105}} | ||
Revision as of 13:29, 26 September 2014
Active
- Heap resizing: bug 965880
- Implement SIMD proposal (bug 894105) and incorporate into asm.js (bug 992267)
- Continued SharedArrayBuffer prototyping in SpiderMonkey and Emscripten
- Optimize sin/cos: bug 967709
Planned next projects
- Move code generation into the parallel compilation tasks: bug 959263
- Zero-cost exception handling: bug 1065089
- Optimize calls into (bug 962641), out of (bug 1000632), and between (bug 982036) asm.js modules.
- Remove async-script requirement for asm.js caching:
- Maybe remove it from QuotaManager: bug 961057
- More likely, just take (large) script parsing off the main thread.
- Fix asm.js caching browser interop (bug 1047098, bug 1047105
Possible further optimization projects
- General backend optimizations:
- Use callee-saved registers: bug 985065
- Enable backtracking allocator: bug 983580
- Avoid over-recursed check in leaf functions: bug 985130
- Heap access: bug 986981, bug 870743, bug 897425, bug 915157, bug 983131, bug 865523, bug 984478, bug 1056027
- Optimize add-with-overflow: bug 1043365
- Optimize min/max: bug 1060635
- Further improve load-time:
- Parse and AOT compile while downloading: bug 1061886
- asm.js parser: Avoid building an intermediate parse tree; type check during recursive descent bug 854061
- Further improve caching:
- Compress more than just the source in asm.js cache entries
- Improve compile time on pathological functions:
- Break up super-large functions into disjoint regions that can be regalloc'd and optimized separately
- Investigate GVN quadratic behavior : bug 845068
- For asm.js->asm.js calls on x86, pass the return value via xmm register, not fp stack
- Extend the asm.js signal handler tricks to:
- Remove idiv branching
- Remove double-to-int conversion branching (see also bug 818750)
Possible asm.js extensions that don't require new JS features
- Extend asm.js to allow proper tail calls for all return types and do the tail-call optimization
- Effectively support 'goto' (even computed 'goto') by formalizing a pattern of while+switch that gets compiled as if it was goto
- Extend asm.js to better support dynamically linking asm.js modules (a mutable, callable array argument to asm.js module, like the PLT)
- Add DataView to avoid the alignment mask on asm.js heap accesses (this is mostly a problem of DataView being slow in all browsers)
Proposed future JS features that would be useful to asm.js
- ArrayBuffer.prototype.discard (bug 855669): to allow madvise(DONTNEED)
- Typed Objects: (Typed Objects)
- This feature comes with float32/uint64/int64 value types, which would be useful as scalar types in asm.js.
- Formalize Typed Object "class declarations" in asm.js which could make asm.js a target for JVM/CLR/TypeScript (and allow these languages to reuse the builtin JS GC)
- FunctionPromise: bug 854627, or perhaps just make some functions (asm.js, no-free-variables) structured-cloneable
- Add way to programmatically observe whether asm.js validated: bug 952847
Usability improvements
- Print warning on out-of-bounds heap access: bug 879891
- Add about:config option to check for and emit warning on unaligned heap access
Current asm.js spec bugs
https://github.com/dherman/asm.js/issues?state=open