asm.js is a really big deal.
The two big things we need to do now is improve the speed of JITting, which we can do by taking the already unreadable asm.js from a "human-readable" pseudo language and make it into opcodes that are easier to convert into native assembly language. This should obviously be a language that is well standardized, and we should probably get some processor experts to help design the language so that it is easy to translate into processor opcodes at runtime.
Now, maybe I'm crazy, but I'm thinking if we choose a language that we already have good tooling for (say, x86), we might be able to get near native performance when your C++ application's x86 opcodes are "JITted" via an O(1) translation by removing the expense of the whole parsing step.
If we put these "x86.js" binaries encoded in the new standardized "x86" language on your disk via HTML5 storage or something, then we could even get rid of all that network noise during startup - and you'd even be able to run them offline!