Closed Bug 1441587 Opened 2 years ago Closed 2 years ago

Some call optimizations

Categories

(Core :: JavaScript Engine: JIT, enhancement, P3)

enhancement

Tracking

()

RESOLVED FIXED
mozilla60
Tracking Status
firefox60 --- fixed

People

(Reporter: jandem, Assigned: jandem)

References

Details

Attachments

(2 files)

Bug 1437483 introduced a few Octane regressions. Some of these we can mitigate a bit.
We have an optimization in Ion to skip the callee's argument type checks if we know the caller's types match.

We can change makeCall/makeCallHelper to take a Maybe<Vector> of targets (instead of a JSFunction* target) and then we can also use this optimization when we have multiple known targets.

This patch also has a minor/related optimization to skip the JSFunction* Class check in CallGeneric if we know the callee is always a function.
Attachment #8954422 - Flags: review?(bhackett1024)
This CALLELEM optimization was added 5 years ago (bug 870821). According to that bug, it was a 13% improvement on Octane-gameboy.

However, nowadays *removing* this optimization is a pretty big win on Gameboy. I also don't see regressions on other benchmarks, so I think it's worth doing this.
Attachment #8954423 - Flags: review?(bhackett1024)
Attachment #8954422 - Flags: review?(bhackett1024) → review+
Attachment #8954423 - Flags: review?(bhackett1024) → review+
Pushed by jandemooij@gmail.com:
https://hg.mozilla.org/integration/mozilla-inbound/rev/ffc903ba2f04
part 1 - Track polymorphic call targets better in IonBuilder. r=bhackett
https://hg.mozilla.org/integration/mozilla-inbound/rev/99f75fa495ae
part 2 - Remove AddObjectsForPropertyRead optimization. r=bhackett
Priority: -- → P3
https://hg.mozilla.org/mozilla-central/rev/ffc903ba2f04
https://hg.mozilla.org/mozilla-central/rev/99f75fa495ae
Status: ASSIGNED → RESOLVED
Closed: 2 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla60
You need to log in before you can comment on or make changes to this bug.