Cleaner fall-back stack capture for --enable-heap-profiling=native.

This generalizes the fall-back to using base::debug::StackTrace to
capture stack traces in builds which lack frame pointers, allowing
native heap profiling to generate useful data, albeit with a more
significant performance penalty.

Changes made in the earlier patch for native heap profiling stack
capture under Windows are un-done in favour of the following:
1. MemoryDumpManager always allows native heap profiling[1].
2. HeapProfilerAllocationContextTracker chooses whether to use
   base::debug::StackTrace or TraceStackFramePointers() based on
   the value of BUILDFLAG(CAN_UNWIND_WITH_FRAME_POINTERS).
3. BUILDFLAG(CAN_UNWIND_WITH_FRAME_POINTERS) is no longer defined in
   configurations which we cannot use frame pointers for unwinding[2].

[1] Though note that only certain build configs actually support
    the necessary allocator shims; this will be addressed later.
[2] Frame pointers are only available in profiling & Debug builds on
    some platforms, and are available but unsuitable for us to use for
    stack unwinding, on others.

BUG=686208

Review-Url: https://codereview.chromium.org/2757123002
Cr-Original-Commit-Position: refs/heads/master@{#460311}
Committed: https://chromium.googlesource.com/chromium/src/+/22b017b9b241c47db8cf25c57c89c0b0d7fcfbe2
Review-Url: https://codereview.chromium.org/2757123002
Cr-Commit-Position: refs/heads/master@{#463411}


CrOS-Libchrome-Original-Commit: 460b12442f72be8185a80cbf1ec0be6d11a27515
5 files changed
tree: 0d7afa8ab52889dc72be6392e9d62eaef2e211bc
  1. base/
  2. build/
  3. components/
  4. dbus/
  5. device/
  6. ipc/
  7. mojo/
  8. testing/
  9. third_party/
  10. ui/