We really really want a 7.9 anyway.
But since that's not likely to happen I'll bring up some performance issues as well:
1: In the Opera Mini code the function using most CPU time is the one indexing an object (using an identifier id, not string).
It might be worth looking into why this is the case. A few things that could be fixed is that this:
final constant A = 10;
bool foo(int i) { return i == A; }
actually index out 'A' each time the code is run. So using enums and other symbolic 'constants' is rather bad for performance.
Note that:
switch(i) case A: return true; return false;
is actually optimized above, which would perhaps have been a bug if 'A' was not final. :-)
2: The machinecode generation code is really really really bad.
It would help to inline things like
o index a string with an integer o index an array with an integer o index an object with the same index you just indexed it with (keep a small cache for indexing, have assembler code for checking the case, then a 'slow' fallback version) o 'simple' for loops
Well. I guess that's enough for now, although I initially did write a long text about lessons learned from compiling javascript to assembler. :-)