Bug 118749

Summary: fourthTier: DFG should do a high-level LICM before going to FTL
Product: WebKit Reporter: Filip Pizlo <fpizlo>
Component: JavaScriptCoreAssignee: Filip Pizlo <fpizlo>
Status: RESOLVED FIXED    
Severity: Normal CC: barraclough, ggaren, mark.lam, mhahnenberg, msaboff, oliver, sam
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: All   
OS: All   
Bug Depends on: 118750, 118774, 118778, 118835, 118866, 118880, 118910, 118946, 118956, 118957    
Bug Blocks: 112840    
Attachments:
Description Flags
WRONG PATCH
none
work in progress
none
it might work
none
it just motioned some loop-invariant code
none
fixed some stuff
none
the patch
none
the patch
none
the patch oliver: review+

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