|
|
(25 intermediate revisions by one other user not shown) |
Line 1: |
Line 1: |
| == Active ==
| | OdinMonkey was the optimizing AsmJS compiler. |
| * 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: ([http://wiki.ecmascript.org/doku.php?id=harmony: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
| |
|
| |
| == Logo ==
| |
| [[File:Odinmonkey800.jpg]]<br> | | [[File:Odinmonkey800.jpg]]<br> |
| Credit to John Howard | | Credit to John Howard |