Bug 112836 - JSC should be a quadruple-tier VM
Summary: JSC should be a quadruple-tier VM
Alias: None
Product: WebKit
Classification: Unclassified
Component: JavaScriptCore (show other bugs)
Version: 528+ (Nightly build)
Hardware: All All
: P2 Normal
Assignee: Filip Pizlo
Depends on: 112838 112839 112840 115464 115465 115466 116556 116557 116561 116630 116633 116748
  Show dependency treegraph
Reported: 2013-03-20 13:41 PDT by Filip Pizlo
Modified: 2014-04-29 15:08 PDT (History)
13 users (show)

See Also:


Note You need to log in before you can comment on or make changes to this bug.
Description Filip Pizlo 2013-03-20 13:41:02 PDT
Our existing DFG optimizing compiler is pretty good, but not as good as it could be.  In fact, we've even gone so far as de-tuned it to do fewer optimizations.  This is because we care about compile times, and we want the DFG to be able to give profit to even very-short-running functions.  Right now it can produce significant speed-ups even for things that only run for ~2ms or less, and even in cases where the relevant functions are relatively complex.  But this approach also means that for longer-running code, we get less win.

This can be fixed by having an alternate, more powerful, but longer-compiling, tier of the DFG.  This would be the fourth tier of JSC.  Here's the wishlist for this tier:

1) Bring back the optimization fixpoint to allow CFG simplification to feed back into things like CSE.

2) Run the compiler on a separate thread.

3) Use a proper compiler backend that does global register allocation, GVN, PRE, LICM, etc.
Comment 1 Filip Pizlo 2013-03-20 13:48:00 PDT
Branched for this work in http://trac.webkit.org/changeset/146384
Comment 2 Sam Weinig 2013-03-20 14:17:28 PDT
Why not 5 onion.com/bWBRid ?
Comment 3 Filip Pizlo 2013-03-20 14:19:26 PDT
(In reply to comment #2)
> Why not 5 onion.com/bWBRid ?

Assign that bug to Gavin.  He was saying something about doing AST interpretation for really simple code.
Comment 4 Filip Pizlo 2013-03-27 14:25:16 PDT
(In reply to comment #1)
> Branched for this work in http://trac.webkit.org/changeset/146384

The branch is called "fourthTier".  I'm prefixing all bugs that are intended to land on this branch with "fourthTier: ".
Comment 5 Filip Pizlo 2014-04-29 15:08:36 PDT
Aaaannnnnd we're done.