Add `JS::ProfilingFrameIterator::getCppEntryRegisters()` to retrieve registers needed to resume stack-walking
Categories
(Core :: Gecko Profiler, task, P2)
Tracking
()
| Tracking | Status | |
|---|---|---|
| firefox89 | --- | fixed |
People
(Reporter: mozbugz, Assigned: mozbugz)
References
(Blocks 2 open bugs)
Details
Attachments
(3 files)
This bug will focus on the initial implementation of JS::ProfilingFrameIterator::getCppEntryRegisters(), doing nothing on all platforms, except on x64 to start with (as this will be the first platform where stack walkers will be updated).
| Assignee | ||
Comment 1•4 years ago
|
||
getCppEntryRegisters() for JIT frames delegates to jit::JitRuntime::getCppEntryRegisters(), which retrieves important state registers pointing at the native caller.
For now implementations on all platforms do nothing. They will be implemented in subsequent patches and bugs, to be used with modified stack walkers, so that they may resume sampling past JIT frames -- see main bug 1635987.
| Assignee | ||
Comment 2•4 years ago
|
||
EnterJITStack reflects the native entry stack.
Depends on D109696
| Assignee | ||
Comment 3•4 years ago
|
||
From a frame pointer, getCppEntryRegisters() can use the descriptor in CommonFrameLayout, first to verify that it's a CppToJit frame, and then to find the EnterJITStackEntry, in which the native call registers can be retrieved.
Depends on D109697
Comment 5•4 years ago
|
||
| bugherder | ||
https://hg.mozilla.org/mozilla-central/rev/bd43525ba2fc
https://hg.mozilla.org/mozilla-central/rev/9245b486d243
https://hg.mozilla.org/mozilla-central/rev/7dcf53ec0e8f
Description
•