Main menu:

Site search



JS Team Newsletter 8/11-8/30

I’ve been swamped the past few weeks, so this is a bigger catch-up newsletter. I’ll just give the big news because there’s plenty of it.

New Hire

Nicolas Pierron has joined the JS team to work on IonMonkey. He has done a lot of work on the NixOS package system as well as a few different programming languages research project. He’s starting out by teaching IonMonkey how to call C++ functions from jitcode. Welcome Nicolas!

2011 Summer Internship Program

The JavaScript team 2011 summer internship program is now complete. Our interns:

  • Andrew Drake, returning from last summer, this time implemented linear scan register allocation.
  • Ryan Pearl implemented SSA-based optimistic global value numbering, an optimization that eliminates redundant computations.
  • Andy Scheff implemented loop invariant code motion, an optimization that hoists expressions out of the loop that compute the same thing every iteration. He also wrote the trampolines that allow us to jump from C++ into the generated jitcode.
  • Hannes Verschore added compiler support for more opcodes, including conditional branches, multiplication, and a jump table implementation of switch statements, so now IonMonkey can run programs that aren’t entirely trivial.

Each one made a valuable contribution to the project that will (barring meteor strike) eventually ship to hundreds of millions of Firefox users and make their JS faster! Goodbye, and thanks! It was a pleasure having you here!

Project Status Updates

Type Inference has landed to mozilla-central! Huge congrats to Brian Hackett, who conceived and executed the project, and to Jan de Mooij, who contributed many patches. TI is a truly novel JavaScript performance technology and the product version that just landed is the culmination over over a year’s work. On my machine, TI takes our Kraken score from about 4900 to about 3400, a 1.44x speedup. And on V8-v6, our score goes from about 5000 to about 6600, a 1.3x speedup. Try it in nightly builds now!

We’ve formed a dedicated project team for IonMonkey. David Anderson is the IonMonkey Project Leader, and the core team members are Chris Leary, Nicolas Pierron, Marty Rosenberg, and Sean Stangl. Brian Hackett will also be working alongside the team to integrate the type inference analysis with the IonMonkey compiler.

The new Debug API has landed! Congrats to Jim Blandy and Jason Orendorff. This is a major improvement to our debugging infrastructure that will make it easier to develop debugging tools for Firefox and help make those tools more reliable. The new Debug API has a well-defined protocol that can operate over a network, so it also makes remote debugging possible.


Comment from dbcooper
Time: August 31, 2011, 1:35 am

Thanks for all the great work.

What is the status of Incremental GC? Is it ready to land?

Comment from Funtom
Time: August 31, 2011, 5:29 am

Dave, how is TI impact on SunSpider? It looks like it got badly affected.

Comment from Daniel
Time: August 31, 2011, 6:02 am

Big thanks for the update! I’m off to try out the new nightly builds then

Comment from Grant Galitz
Time: September 1, 2011, 12:57 am

Is it TI that’s causing some bigger GC pauses now? I noticed the GC all-stops the JavaScript GameBoy Color emulator ( now for a half a second a times now in the nightly. Much better performance though, and not every game experiences the GC pauses as much as some (I wonder if its Firefox acting up on the x-coord caching for optimizing GB-classic mode sprite priority rendering (TL;DR – A sort algorithm that rebuilds a multidimensional array for a performance trick not even desktop GBC emulators do (But necessary otherwise firefox would run some games 1/3 speed.).)).