|
|
(66 intermediate revisions by one other user not shown) |
Line 1: |
Line 1: |
| == Active ==
| | OdinMonkey was the optimizing AsmJS compiler. |
| * Add Math.min/max to asm.js standard math library : ({{bug|966295}})
| |
| * Mitigate 32-bit OOM problems: ({{bug|865959}})
| |
| * Add webapp manifest option to request AOT compilation at install (not first run) time: {{bug|965970}}
| |
| * Use the 'permanent' storage class for app:// webapps : {{bug|963588}}
| |
| * Standardize and implement SIMD extensions to JS ({{bug|894105}}) and then incorporate into asm.js
| |
| * Land experimental SharedArrayBuffer (pref'd off, {{bug|933001}}) and use this to add experimental pthreads support to Emscripten and evaluate on threaded codebases in preparation for a standards proposal.
| |
|
| |
|
| == Planned next projects ==
| |
| * ArrayBuffer.prototype.resize ({{bug|965880}}): to allow growable heap
| |
| * Record enough information at compile time so that asm.js functions show up in:
| |
| ** the builtin FF profiler ({{bug|947996}})
| |
| ** Error.stack
| |
| * Add && and || to asm.js to avoid sub-optimal control flow ({{bug|919052}}).
| |
| * Add inline fast implementation of sin/cos: {{bug|967709}}
| |
| * Fully optimize calls into ({{bug|962641}}) and out of ({{bug|882399}}) asm.js
| |
| * Move code generation into the parallel compilation tasks ({{bug|959263}})
| |
| * Remove async-script requirement for asm.js caching: ({{bug|961057}})
| |
|
| |
| == Possible further optimization projects ==
| |
| * Further improve load-time:
| |
| ** Start general JS parsing before the entire JS script has completed downloading so that asm.js compilation can overlap (and we'd be justified in doing all script parsing off the main thread)
| |
| ** 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
| |
| * Further improve heap access performance : {{bug|870743}}, {{bug|897425}}, {{bug|915157}}
| |
| * 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 stack overflow checks
| |
| ** Remove idiv branching
| |
| ** Remove double-to-int conversion branching (see also {{bug|818750}})
| |
|
| |
| == 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
| |
|
| |
| == Possible asm.js extensions that don't require new JS features ==
| |
| * 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 enough try/catch to asm.js to allow compilation of C++ exceptions using the zero-cost implementation strategy
| |
| * 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}}
| |
| * Add "AsmFunction" constructor that threw informative exception on validation failure.: ({{bug|952847}})
| |
|
| |
| == 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 |