Friday, December 16, 2011

Hello, methodjit

bruce:/home/spectre/src/bruce/mozilla-9b/js/src/jit-test/% ./ --jitflags=mp,p ../../../obj-ff-dbg/dist/

[3544| 0|3544] 100% ===============================================>| 369.4s


More about that when RCs come out. mozilla-release is now up to date, so 9 RC builds will commence later today, and if they pass conformance testing, up tonight or tomorrow. (Ignore the elapsed time as this was an unoptimized debug js.)

One other note. Some well-meaning individual submitted the QTE to Softpedia as a download. Please don't do that. It's an alpha, it's not finished, it has known bugs and we're not ready to support it yet. If it was you, please indicate to them that it was an error and retract it until we're ready with a beta. (In fact, you probably shouldn't submit it at all, since when it does hit beta we will just integrate it with TenFourFox itself, probably.) I appreciate your enthusiasm, but it was premature. Thank you :)


  1. PASSED ALL -> congratulations! As someone who hasn't written a line of code in 20 years (if 250 line Borland Pascal programs in High School count at all) I'm completely impressed, because I can at least in part imagine what kind of labor this is. Thanks for your hard work.

  2. Yes, I'm pretty excited. I'm waiting for a G5 build to finish so I can see if the browser stands up with it. If nothing else this helps shore up the regex support until we wave goodbye to tracejit.

  3. Congratulations! All that hours of debugging and successful in the end!

    Would be nice to have at least one TFF release with hybrid tracejit and methodjit before abondoning tracejit.

  4. Actually, it looks like hybrid TM+JM does work (I'm using it right now). V8 really benefits from it, and Dromaeo as expected moves up a few notches, but SunSpider doesn't change much. Kraken is a bit faster. Seems like we just can't crack that one second limit on the G5 though.

    I'm a bit concerned about type inference; it keeps asserting out. We don't need to support that yet, however.

  5. >Would be nice to have at least one TFF release with hybrid tracejit and methodjit before abondoning tracejit.

    Likely v.9 will be the only such release (see

  6. FWIW, IonMonkey has stack overflow check now:

  7. Well, it may make little difference to the G5, but the G4 sure benefits. On my 1GHz iMac G4, JM+TM (I'm typing this on it) drops SunSpider from 3500 to 2900ms between 9.0b1 and 9.0-JM-final.

    This will be the only hybrid release probably, but not by default because there's not enough testing. However, you'll be able to switch it on in about:config. Obviously don't do it in the beta, do it only in the RC!

    zubr, that IonMonkey patch gives me hope, although it is still tied to our old f(r)iends JS_SetThreadStackLimit() and JS_SetNativeStackQuota().

  8. Just for general understanding: If both Tracejit and Methodjit are enabled in the RC, what happens? Do they benefit from each other? Do they disturb each other? Do they know about each other? Will one of them do one specific kind of task, and the other one different tasks? Or will they work together on one task? How do they know who does what? May Tracejit be faster on certain kinds of tasks?

  9. JavaScript uses internal heuristics and profiling to determine which one is more profitable. Tracejit is faster at some tasks, especially if compiling the function will require more overhead than simply following it through execution; methodjit is faster at others. Richards and DeltaBlue in V8 are extremely fast in tracejit, almost 3x the speed of methodjit, but methodjit is about 8x faster at splay and marginally faster at regexp and raytrace.

    Mozilla did observe a drop in performance when tracejit was turned off, which is why type inference is important to support or we will also observe a similar drop.


Due to an increased frequency of spam, comments are now subject to moderation.