BT

New Early adopter or innovator? InfoQ has been working on some new features for you. Learn more

WebKit Team Announces SquirrelFish, a Bytecode Based JavaScript Interpreter

| by Nick Laiacona on Jun 09, 2008. Estimated reading time: 1 minute |

The WebKit development team announced last week the development of a new interpreter for the WebKit JavaScript engine code-named SquirrelFish. According to official WebKit blog: "SquirrelFish is 1.6 times faster than WebKit's previous interpreter."

SquirrelFish differs from the previous implementation of the interpreter in that it uses a bytecode based strategy rather than syntax tree-walking interpretation.

SquirrelFish's bytecode engine elegantly eliminates almost all of the overhead of a tree-walking interpreter. First, a bytecode stream exactly describes the operations needed to execute a program. Compiling to bytecode implicitly strips away irrelevant grammatical structure. Second, a bytecode dispatch is a single direct memory read, followed by a single indirect branch. Therefore, executing a bytecode instruction is much faster than visiting a syntax tree node. Third, with the syntax tree gone, the interpreter no longer needs to propagate execution state between syntax tree nodes.

Because the interpreter is now using bytecodes, it can take advantage of all of the optimizations available to bytecode interpreters. This means we can expect further speed improvements in SquirrelFish's future.

Some of the compile-time optimizations we're looking at, now that we have a bytecode representation, include:
  • constant folding
  • more aggressive copy propagation
  • type inference-both exact and speculative
  • specialization based on expression context-especially void and boolean context
  • peephole optimization
  • escape analysis

In their announcement, the SquirrelFish team acknowledged the work of others in this field from whose work their project drew inspiration.

SquirrelFish owes a lot of its design to some of the latest research in the field of efficient virtual machines, including research done by Professor M. Anton Ertl, et al, Professor David Gregg, et al, and the developers of the Lua programming language.

Rate this Article

Adoption Stage
Style

Hello stranger!

You need to Register an InfoQ account or or login to post comments. But there's so much more behind being registered.

Get the most out of the InfoQ experience.

Tell us what you think

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread
Community comments

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

Discuss

Login to InfoQ to interact with what matters most to you.


Recover your password...

Follow

Follow your favorite topics and editors

Quick overview of most important highlights in the industry and on the site.

Like

More signal, less noise

Build your own feed by choosing topics you want to read about and editors you want to hear from.

Notifications

Stay up-to-date

Set up your notifications and don't miss out on content that matters to you

BT