Javascript:SpiderMonkey:OdinMonkey: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
|||
Line 9: | Line 9: | ||
** Maybe remove it from QuotaManager: {{bug|961057}} | ** Maybe remove it from QuotaManager: {{bug|961057}} | ||
** More likely, just take (large) script parsing off the main thread: {{bug|1084009}} | ** More likely, just take (large) script parsing off the main thread: {{bug|1084009}} | ||
* | * Share compiled code between workers: {{bug|1168981}} | ||
== Possible further throughput optimizations == | == Possible further throughput optimizations == |
Revision as of 19:29, 27 May 2015
Active
- Continue iteration on SIMD proposal and implementation/optimization in Ion/Odin.
- pthreads
- Baseline compilation: bug 1157624
Possible further load-time optimizations
- Parse and AOT compile while downloading: bug 1061886
- 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: bug 1084009
- Share compiled code between workers: bug 1168981
Possible further throughput optimizations
- Optimize sin/cos: bug 967709
- Use callee-saved registers: bug 985065
- Heap access: bug 1145676, bug 897425, bug 870743, bug 983131, bug 1056027, bug 1136276
- Optimize add-with-overflow: bug 1043365
- Optimize min/max: bug 1060635
- For asm.js->asm.js calls on x86, pass the return value via xmm register, not fp stack
- Remove branching from double-to-int conversion using signal handler (see also bug 818750)
- Optimize calls into (bug 962641), out of (bug 1000632), and between (bug 982036) asm.js modules.
- Signed comparisons: bug 1141407
Possible asm.js extensions that don't require new JS features
- Zero-cost exception handling: bug 1065089
- 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
- int64 arithmetic: https://gist.github.com/BrendanEich/4294d5c212a6d2254703
- 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
- Add about:config option to throw for out-of-bounds or unaligned access (bug 1088655)
- Fix asm.js caching browser interop (bug 527667, bug 1047105
Current asm.js spec bugs
https://github.com/dherman/asm.js/issues?state=open