зеркало из https://github.com/mozilla/gecko-dev.git
7eda9d1a96
This removes LUL's ability to recover frames by the heuristic mechanism of stack scanning. Stack scanning is a last-ditch way to try to recover the unwind when all other methods (metadata-based, frame-pointer chasing) have failed, by scanning back up the stack and looking for the first word that could plausibly be a return address. It often mis-identifies return addresses because it has no way to distinguish live ones from dead ones that have not been overwritten, and very often causes the unwind to fail as a result. In any case LUL's stack scanning ability has actually been switched off (by the parameters passed to LUL::Unwind) for some considerable time now, so this change should make no observable difference to behaviour. Specific changes: In LUL::Unwind(): * Removes formal parameters |scannedFramesAcquired| and |scannedFramesAllowed| * Removes code that does stack scanning * Simplifies control flow in the main unwind loop, so that loop now has the easier-to-follow structure while (true) { // preliminary stuff if (CFI data available for current PC) { do CFI step; continue; } if (FP chasing possible for current PC) { do FP step; continue; } // give up break; } * Moves two #ifdefs upwards to enclose the comments pertaining to them, as well as the code. This makes the top level structure easier to follow. The corresponding #endifs are likewise commented with the condition. From class LULStats, removes |mScanned|. Removes PriMap::MaybeIsReturnPoint() entirely. This is a heuristic helper only used by stack scanning. In all, 395 lines of code are removed, according to hg diff --stat. --HG-- extra : rebase_source : 5ffa73c64923149a58df3228cf940cb539f8f707 |
||
---|---|---|
.. | ||
bloatview | ||
compare-locales | ||
coverity | ||
docs | ||
fuzzing | ||
git | ||
jprof | ||
leak-gauge | ||
lint | ||
memory-profiler | ||
mercurial | ||
power | ||
profiler | ||
quitter | ||
rb | ||
rewriting | ||
update-packaging | ||
mach_commands.py | ||
moz.build |