| Index: src/profiler/heap-profiler.cc
|
| diff --git a/src/profiler/heap-profiler.cc b/src/profiler/heap-profiler.cc
|
| index 4403e5d6c9c965cea6851644097200f90b6a64e8..a26e90fe6c6cfeb0003a7824d3fdef8046405d09 100644
|
| --- a/src/profiler/heap-profiler.cc
|
| +++ b/src/profiler/heap-profiler.cc
|
| @@ -5,9 +5,12 @@
|
| #include "src/profiler/heap-profiler.h"
|
|
|
| #include "src/api.h"
|
| +#include "src/base/utils/random-number-generator.h"
|
| #include "src/debug/debug.h"
|
| +#include "src/frames-inl.h"
|
| #include "src/profiler/allocation-tracker.h"
|
| #include "src/profiler/heap-snapshot-generator-inl.h"
|
| +#include "src/profiler/sampling-heap-profiler.h"
|
|
|
| namespace v8 {
|
| namespace internal {
|
| @@ -84,6 +87,31 @@ HeapSnapshot* HeapProfiler::TakeSnapshot(
|
| }
|
|
|
|
|
| +bool HeapProfiler::StartSamplingHeapProfiler(uint64_t sample_interval,
|
| + int stack_depth) {
|
| + if (sampling_heap_profiler_.get()) {
|
| + return false;
|
| + }
|
| + sampling_heap_profiler_.Reset(new SamplingHeapProfiler(
|
| + heap(), names_.get(), sample_interval, stack_depth));
|
| + return true;
|
| +}
|
| +
|
| +
|
| +void HeapProfiler::StopSamplingHeapProfiler() {
|
| + sampling_heap_profiler_.Reset(nullptr);
|
| +}
|
| +
|
| +
|
| +v8::AllocationProfile HeapProfiler::GetAllocationProfile() {
|
| + if (sampling_heap_profiler_.get()) {
|
| + return sampling_heap_profiler_->GetAllocationProfile();
|
| + } else {
|
| + return v8::AllocationProfile(); // Empty profile.
|
| + }
|
| +}
|
| +
|
| +
|
| void HeapProfiler::StartHeapObjectsTracking(bool track_allocations) {
|
| ids_->UpdateHeapObjectsMap();
|
| is_tracking_object_moves_ = true;
|
|
|