Closed Bug 1068960 Opened 11 years ago Closed 11 years ago

GVN: protecting foldsTo from discarded dependencies pessimizes redundance elimination

Categories

(Core :: JavaScript Engine: JIT, enhancement)

enhancement
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla35

People

(Reporter: sunfish, Assigned: sunfish)

Details

Attachments

(1 file)

As noted in bug 1029830 comment 34, bug 1029830 caused an AWFY regression on misc-bugs-608733-interpreter.js. Bug 1049691 added a foldsTo method to fold loads when their dependency() is a dominating store. This makes foldsTo depend on dependency() fields being in non-discarded blocks. To ensure this remains true as other patches in bug 1029830 enable GVN to discard blocks, bug 1029830 attachment 8476266 [details] [diff] [review] (gvn-clear-dependencies.patch) was added to clear problematic dependencies, protecting the foldsTo optimization. However, this causes GVN to miss the opportunity to eliminate redundant loads when their dependencies happen to be in discarded blocks. For congruence checking, a dependence in a discarded block is not a problem. The attached patch restores the dependence after the foldsTo call is done, before doing the redundancy check. It fixes the perf regression in misc-bugs-608733-interpreter.js. It admittedly looks a little silly clearing and restoring the dependency() field like this, but I'm open to suggestions for better ways to do this.
Attachment #8491079 - Flags: review?(nicolas.b.pierron)
Attachment #8491079 - Flags: review?(nicolas.b.pierron) → review+
Status: NEW → RESOLVED
Closed: 11 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla35
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: