Pulls out the CppFiltParser work into a worker to run in the
background and avoid the jank induced by the final
convertSymsMapToExpectedSymFormat call.
Profiling shows that after this change there is virtually no
jank when asking the geckoProfiler API for symbols.
MozReview-Commit-ID: CAKMvjLa4dl
--HG--
extra : rebase_source : de9202687ca8ffbfa5216f73fe57e97ffdbea8ef
Pulls out the NMParser work (parsing nm results and turning
them into an ArrayBuffer'd map of addresses to symbols) into
a worker.
For OSX we will still need to do some work to run c++filt in the
background, but this gets us most of the way there. Without a
Subprocess.jsm usable from a worker, we'll have to bounce data
back to the main thread in order to bounce it to the c++filt
worker.
MozReview-Commit-ID: LZi7J1qGpmh
--HG--
extra : rebase_source : 048329fb085542ecc4c8f8d872e6c4cf0b535376
Also changed some function names to attempt to guarantee uniqueness across API files.
MozReview-Commit-ID: FU5JU1lRHzn
--HG--
extra : rebase_source : 4fdda100649f1bf604f6d5445aa04ce561859964
In order to rewrite the Gecko Profiler add-on as a WebExtension,
we need an API for the profiler which allows us to control the
nsIProfiler, and symbolicate the stacks that it provides. This
is the implementation of the simpler parts of that API.
TODO:
- Support profiling of remote targets through a new devtools
API.
- Support the dump_syms breakpad code which was asm.js in the
old extension by directly calling into native code.
- Figure out a faster way to send the large volume of data from
getSymbols all the way from our extension down to the content
process and then into the page's context.
MozReview-Commit-ID: JzDbV4l2eXd
--HG--
extra : rebase_source : fee9acfaa522372c22c61f9b0f1cab13d5da2a86