Bug 185060

Summary: [negative result] B3 should have generalized path specialization
Product: WebKit Reporter: Filip Pizlo <fpizlo>
Component: JavaScriptCoreAssignee: Filip Pizlo <fpizlo>
Status: RESOLVED WONTFIX    
Severity: Normal CC: benjamin, cdumez, cmarcelo, dbates, ews-watchlist, keith_miller, mark.lam, msaboff, saam
Priority: P2    
Version: WebKit Nightly Build   
Hardware: All   
OS: All   
Bug Depends on: 185069, 185123    
Bug Blocks:    
Attachments:
Description Flags
it's a start
none
a bit more
none
this phase is nuts
none
I'm slowly putting this phase together
none
close to written
none
it might be written
none
it's starting to compile
none
it specialized something without crashing or emitting broken code
none
it's starting to come to life
none
mostly works, not a speed-up none

Filip Pizlo
Reported 2018-04-26 17:17:45 PDT
Patch forthcoming. I don't know if this will be profitable yet. Reading IR in Octane, it seems like it might be. Only one way to find out!
Attachments
it's a start (22.27 KB, patch)
2018-04-26 17:18 PDT, Filip Pizlo
no flags
a bit more (25.99 KB, patch)
2018-04-26 19:31 PDT, Filip Pizlo
no flags
this phase is nuts (27.50 KB, patch)
2018-04-26 19:43 PDT, Filip Pizlo
no flags
I'm slowly putting this phase together (29.98 KB, patch)
2018-04-26 21:38 PDT, Filip Pizlo
no flags
close to written (35.77 KB, patch)
2018-04-27 16:40 PDT, Filip Pizlo
no flags
it might be written (50.17 KB, patch)
2018-04-27 19:23 PDT, Filip Pizlo
no flags
it's starting to compile (52.66 KB, patch)
2018-04-28 12:46 PDT, Filip Pizlo
no flags
it specialized something without crashing or emitting broken code (53.71 KB, patch)
2018-04-28 19:24 PDT, Filip Pizlo
no flags
it's starting to come to life (54.73 KB, patch)
2018-04-29 21:29 PDT, Filip Pizlo
no flags
mostly works, not a speed-up (64.69 KB, patch)
2018-04-30 17:03 PDT, Filip Pizlo
no flags
Filip Pizlo
Comment 1 2018-04-26 17:18:18 PDT
Created attachment 338939 [details] it's a start
Filip Pizlo
Comment 2 2018-04-26 19:31:12 PDT
Created attachment 338952 [details] a bit more
Filip Pizlo
Comment 3 2018-04-26 19:43:20 PDT
Created attachment 338954 [details] this phase is nuts
Filip Pizlo
Comment 4 2018-04-26 21:38:25 PDT
Created attachment 338965 [details] I'm slowly putting this phase together
Filip Pizlo
Comment 5 2018-04-27 16:40:44 PDT
Created attachment 339038 [details] close to written
Filip Pizlo
Comment 6 2018-04-27 19:23:41 PDT
Created attachment 339050 [details] it might be written
Filip Pizlo
Comment 7 2018-04-28 12:46:02 PDT
Created attachment 339075 [details] it's starting to compile
Filip Pizlo
Comment 8 2018-04-28 19:24:26 PDT
Created attachment 339087 [details] it specialized something without crashing or emitting broken code It was a small function, too small to cause interesting compiler problems.
Filip Pizlo
Comment 9 2018-04-29 10:05:05 PDT
It's a 14% speed-up on the following benchmark. Note that we're duplicating a CheckAdd (which has a full OSR thingy). Note that we're not (yet) unswitching the loop, because the structure load is not hoisted out of the loop. function foo(o) { var result = 0; for (var i = 0; i < 100; ++i) { result += o.f; o.f = i; } return result; } noInline(foo); var before = preciseTime(); for (var i = 0; i < 100000; ++i) { var result = foo(i & 1 ? {f:42} : {e:41, f:42}); if (result != (99 * 98) / 2 + 42) throw "Error: bad result: " + result; } var after = preciseTime(); print("That took " + (after - before) * 1000 + " ms");
Filip Pizlo
Comment 10 2018-04-29 21:29:29 PDT
Created attachment 339104 [details] it's starting to come to life
Filip Pizlo
Comment 11 2018-04-30 16:38:42 PDT
Current perf data suggests that this is not a speed-up. Will verify again once I fix some bugs. But this is looking like a negative result, mostly because taildup is too darn good.
Filip Pizlo
Comment 12 2018-04-30 17:03:10 PDT
Created attachment 339163 [details] mostly works, not a speed-up Still has test failures. But it's definitely not a speed-up, so I'm going to stop working on it.
Note You need to log in before you can comment on or make changes to this bug.