Compilers and Virtual Machines

Igalia is the most experienced JavaScript virtual machine engineering consultancy contributing code upstream to V8, JavaScriptCore and SpiderMonkey. We also apply our compilers knowledge to work in other dynamic language implementations like Python, Scheme, Ruby and more.

Compiler technology is at the heart of performance optimization: compilers generate the machine code that will run your software, and as such, they are the main responsible actors in making the best use of the CPU instruction set to get the job done in the most efficient way possible.

We have the best team of WebKit developers with a strong competence in JavaScript engines like V8, JavaScriptCore and SpiderMonkey, making Igalia the best partner of choice for optimizing consumer electronic solutions based on client-side web technology.

We specialize in JavaScript upstream work as well as other domains such as debuggers (GDB and integrated debuggers), dynamic language environments integration to existing C/C++ systems, and Guile Scheme compiler, especially in the optimizer and its next-generation virtual machine.

Igalia has talented engineers who understand how compilers work and can optimize how they generate machine code for your programs, providing that performance boost that can make a real difference. Our team can provide holistic optimizations: in the runtime, on the frontend, the optimizer and in the backend.

We can also help companies developing Javascript-based software and products, advising on their design and implementation choices or programming and upstreaming new features required in the javascript engine.

Featured Media

Andy Wingo: DIY Internet: Snappy, Secure Networking with MinimaLT -- JSConf EU 2013
Andy Wingo: JavaScriptCore's DFG JIT -- JSConf EU 2012
Andy Wingo at JSConf USA 2012


Andy Wingo 01/07/2014

flow analysis in guile

Greets, and welcome back to the solipsism! I've been wandering the wilderness with my Guile hackings lately, but I'm finally ready to come back to civilization. Hopefully you will enjoy my harvest of forest fruit. Today's article is about...

Andy Wingo 18/05/2014

effects analysis in guile

OK kids, so I had a bit of time recently and have been hacking on Guile's new CPS-based compiler slated for stable release in a few months. I have a few things to write about but today's article is on effects analysis.what it is, yoThe job of...

Andy Wingo 17/03/2014

stack overflow

Good morning, gentle hackers. Today's article is about stack representation, how stack representations affect programs, what it means to run out of stack, and that kind of thing. I've been struggling with the issue for a while now in Guile and...

Andy Wingo 07/03/2014

es6 generator and array comprehensions in spidermonkey

Good news, everyone: ES6 generator and array comprehensions just landed in SpiderMonkey! Thanks to Bloomberg for sponsoring this work.

Andy Wingo 18/02/2014

compost, a leaf function compiler for guile

What's that out by the woodshed? It's a steaming pile -- it's full of bugs -- it's compost, a leaf function compiler for Guile!Around this time last year, a few of us cooked up some hack-dishes to bring to a potluck for Guile...


Array.prototype.{reduce, reduceRight}: Wrong order of operations when determining initial value.

Array.prototype.{reduce, reduceRight}: Wrong order of operations when determining initial value. BUG=v8:3534 LOG= R=svenpanne@chromium.org, wingo@igalia.com Review URL: https://codereview.chromium.org/614733002 Patch from Diego Pino . git-svn-id:...

Andy Wingo22/10/2014

Assign bailout and type feedback IDs in a post-pass

Assign bailout and type feedback IDs in a post-pass This will allow us to move expressions from one function to another, for example when the parser determines that a given cover grammar instance is actually the default value initializer for an arrow...

Andy Wingo21/10/2014

Track usage of "this" and "arguments" in Scope

Track usage of "this" and "arguments" in Scope This adds flags in Scope to track wheter a Scope uses "this" and, "arguments". The information is exposed via Scope::uses_this(), and Scope::uses_arguments(), respectively. Flags for tracking usage on any...

Andy Wingo16/10/2014

Object.is should use SameValue

Object.is should use SameValue BUG=v8:3576 LOG= R=arv@chromium.org, svenpanne@chromium.org, wingo@igalia.com Review URL: https://codereview.chromium.org/626323002 Patch from Diego Pino . git-svn-id:...

Andy Wingo16/10/2014

Implement .forEach() on typed arrays

Implement .forEach() on typed arrays BUG=v8:3578 LOG=Y R=dslomov@chromium.org, wingo@igalia.com Review URL: https://codereview.chromium.org/583723002 Patch from Adrian Perez de Castro . git-svn-id:...

Andy Wingo16/10/2014