x Share your thoughts on trends and content!

WebKit Team Announces SquirrelFish, a Bytecode Based JavaScript Interpreter

by Nick Laiacona on Jun 09, 2008 |

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


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

General Feedback
Marketing and all content copyright © 2006-2016 C4Media Inc. hosted at Contegix, the best ISP we've ever worked with.
Privacy policy

We notice you're using an ad blocker

We understand why you use ad blockers. However to keep InfoQ free we need your support. InfoQ will not provide your data to third parties without individual opt-in consent. We only work with advertisers relevant to our readers. Please consider whitelisting us.