Closed Bug 1685132 Opened 3 years ago Closed 3 years ago

Simplify tracing by removing the special case for tenuring in TraceEdgeInternal

Categories

(Core :: JavaScript: GC, enhancement, P3)

enhancement

Tracking

()

RESOLVED FIXED
86 Branch
Tracking Status
firefox86 --- fixed

People

(Reporter: jonco, Assigned: jonco)

References

Details

Attachments

(1 file)

TraceEdgeInternal has to dispatch based on the tracer kind. Currently we have special cases for marking and tenuring and otherwise we use virtual dispatch. I'd like to remove the case for tenuring. It should be possible to do this without regressing performance because this path is not the hot path during tenuring.

This simplifies tracing by removing the special case for the tenuring tracer in
TraceEdgeInternal. TenuringTracer becomes a GenericTracer and this path uses
virtual dispatch.

Most tenuring is not done by this path however and the compiler can optimise
away the virtual dispatch in the TenuringTracer::traverse methods.

I measured around 15% improvement for evicting a full nursery in local
benchmarking with this change.

Pushed by jcoppeard@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/8ccb4e4dcd08
Remove the special case for tenuring in TraceEdgeInternal r=sfink
Status: NEW → RESOLVED
Closed: 3 years ago
Resolution: --- → FIXED
Target Milestone: --- → 86 Branch
Regressions: 1689394
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: