Bug 118749 - fourthTier: DFG should do a high-level LICM before going to FTL
Summary: fourthTier: DFG should do a high-level LICM before going to FTL
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: JavaScriptCore (show other bugs)
Version: 528+ (Nightly build)
Hardware: All All
: P2 Normal
Assignee: Filip Pizlo
URL:
Keywords:
Depends on: 118750 118774 118778 118835 118866 118880 118910 118946 118956 118957
Blocks: 112840
  Show dependency treegraph
 
Reported: 2013-07-16 14:51 PDT by Filip Pizlo
Modified: 2013-07-22 22:39 PDT (History)
7 users (show)

See Also:


Attachments
WRONG PATCH (13.13 KB, patch)
2013-07-16 21:31 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
work in progress (12.38 KB, patch)
2013-07-21 15:29 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
it might work (22.54 KB, patch)
2013-07-21 16:20 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
it just motioned some loop-invariant code (39.12 KB, patch)
2013-07-21 21:57 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
fixed some stuff (40.04 KB, patch)
2013-07-21 22:12 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
the patch (47.59 KB, patch)
2013-07-22 11:45 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
the patch (45.47 KB, patch)
2013-07-22 11:47 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
the patch (57.37 KB, patch)
2013-07-22 15:22 PDT, Filip Pizlo
oliver: review+
Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Filip Pizlo 2013-07-16 14:51:05 PDT
Fun!
Comment 1 Filip Pizlo 2013-07-16 21:31:50 PDT
Created attachment 206847 [details]
WRONG PATCH
Comment 2 Filip Pizlo 2013-07-19 18:48:19 PDT
Some notes:

- We cannot hoist, or sink, anything that has effects. This means that the easiest way of indicating that something cannot be hoisted is to claim that it side-effects some miscellaneous thing.

- Whenever we hoist, we must replace the original node with a Phantom.

- We cannot hoist forward-exiting nodes without some additional effort.  I believe that what it comes down to is that forward-exiting generally have their NodeExitsForward cleared upon hoist, except for forward-exiting nodes that take bogus state as their input.  Those are substantially harder. :-/
Comment 3 Filip Pizlo 2013-07-21 15:29:25 PDT
Created attachment 207215 [details]
work in progress
Comment 4 Filip Pizlo 2013-07-21 16:20:56 PDT
Created attachment 207218 [details]
it might work

But I can't test it because the prerequisites haven't landed yet.
Comment 5 Filip Pizlo 2013-07-21 20:37:00 PDT
Comment on attachment 207218 [details]
it might work

I didn't mean to set r?, since I haven't even compiled this yet.
Comment 6 Filip Pizlo 2013-07-21 21:57:03 PDT
Created attachment 207225 [details]
it just motioned some loop-invariant code
Comment 7 Filip Pizlo 2013-07-21 22:04:50 PDT
Comment on attachment 207225 [details]
it just motioned some loop-invariant code

Once again, I didn't mean to r?.  I haven't fully tested it yet.
Comment 8 Filip Pizlo 2013-07-21 22:12:44 PDT
Created attachment 207226 [details]
fixed some stuff

I totally forgot about updating the state-at-tail.
Comment 9 Filip Pizlo 2013-07-22 11:45:48 PDT
Created attachment 207259 [details]
the patch
Comment 10 Filip Pizlo 2013-07-22 11:47:14 PDT
Created attachment 207260 [details]
the patch

Fix changelog.
Comment 11 Filip Pizlo 2013-07-22 15:22:05 PDT
Created attachment 207286 [details]
the patch

Lifted the inner-most loop restriction.
Comment 12 Filip Pizlo 2013-07-22 22:39:03 PDT
Landed in http://trac.webkit.org/changeset/153033