RESOLVED WONTFIX 185060
[negative result] B3 should have generalized path specialization
https://bugs.webkit.org/show_bug.cgi?id=185060
Summary [negative result] B3 should have generalized path specialization
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.