Closed Bug 1660553 Opened 4 years ago Closed 4 years ago

Warp: Enable trial-inlining for FunCall

Categories

(Core :: JavaScript Engine: JIT, task, P1)

task

Tracking

()

RESOLVED FIXED
82 Branch
Tracking Status
firefox82 --- fixed

People

(Reporter: iain, Assigned: iain)

References

Details

Attachments

(2 files)

Building on the work done in bug 1646378, these patches allow us to inline through Function.prototype.call.

Baseline call ICs can have 5 different argument formats (normal, spread, funcall, funapply-args, funapply-array). Some of these, like funcall, can be converted into a normal MCall by modifying the fields of the CallInfo. Others, like spread calls, are represented by different MIR nodes.

Inlining doesn't generate an MCall but also has to use the correct arguments. To avoid duplicating code, this patch splits out a helper function that updates CallInfo where possible, and returns an enum value to trigger special handling for more exotic cases. (When handling spread calls and funapply-array, I suspect that we will want to move the enum inside CallInfo, but I'm holding off on that until I actually try writing that code.)

Depends on D87909

Status: NEW → RESOLVED
Closed: 4 years ago
Resolution: --- → FIXED
Target Milestone: --- → 82 Branch
Regressions: 1661530
Regressions: 1662146
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: