Closed Bug 1716712 Opened 4 years ago Closed 4 years ago

Use C++ to JIT entry registers on Mac&Linux/x64 to resume frame stack walking when lost

Categories

(Core :: Gecko Profiler, enhancement, P2)

x86_64
Unspecified
enhancement

Tracking

()

RESOLVED FIXED
91 Branch
Tracking Status
firefox91 --- fixed

People

(Reporter: mozbugz, Assigned: mozbugz)

References

Details

Attachments

(1 file)

Similar to https://phabricator.services.mozilla.com/D116379 , it is possible to restart the frame stack walker (used on Mac Nightly, and on Linux but only for backtraces) using x86-64 JIT information.

Quick test on Mac: Before, after
It's not as dramatic as on Windows, but still good: The "Web Content" main thread for Reddit went from 17% of "bad" stacks down to 3.6%.

This is similar to what DoMozStackWalkBacktrace does, by looking where the stack walker stopped, and if it can be restarted at a calling C++-to-JIT entry frame.

Note: The code is pretty much a modified copy, but factoring out the common parts would be difficult because of the specific local variables, the different stack-walking functions, and the different register storages.

Also, instead of mentioning the OS (was only Windows), the choice of platform support is now based on the actual Profiler stack walkers that are used.

Pushed by gsquelart@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/f12d9f8337b0 Use JIT information in DoFramePointerBacktrace on x64 - r=canaltinova
Status: NEW → RESOLVED
Closed: 4 years ago
Resolution: --- → FIXED
Target Milestone: --- → 91 Branch
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: