Closed Bug 831773 Opened 12 years ago Closed 3 months ago

IonMonkey: rerun GVN after LICM (or subset)

Categories

(Core :: JavaScript Engine, defect)

defect

Tracking

()

RESOLVED WONTFIX

People

(Reporter: h4writer, Unassigned)

References

Details

This is visible in raytrace.js:709 with almost all functions inlined. LICM hoists a lot of definitions out of the loop. Afterwards there are some definitions that could get removed again by running GVN again. Off-course we could be smarter and only check hoisted MIR's and we only have to compare in the current block. So could be a really small pass. Shows a 1.5% improvement on raytrace by running full GVN again after LICM
Blocks: 768745
Assignee: general → nobody
Severity: normal → S3

Is this potential optimization still relevant?

Flags: needinfo?(iireland)

This is unlikely to be relevant on Speedometer; in general, LICM is surprisingly ineffective there. It might be more useful on jetstream-like code. I note that the original comment says this occurs in raytrace with almost all functions inlined, which is not going to be the case these days because our inliner is tuned for Speedometer and is not nearly as aggressive as it used to be.

I tried simply inserting a second pass of GVN after LICM, and didn't see any improvement. Cranking smallFunctionLength up to 600 (the default is 130) gives a ~5% improvement overall, but I don't see any particular synergy with the extra GVN pass. We get the same improvement with or without GVN. (In fact, in both cases the more-GVN case was very slightly slower over a sample of 10 runs than the status quo, although the difference is not significant.)

I don't think this seems promising.

Status: NEW → RESOLVED
Closed: 3 months ago
Flags: needinfo?(iireland)
Resolution: --- → WONTFIX
You need to log in before you can comment on or make changes to this bug.