| Index: Source/core/inspector/InspectorHeapProfilerAgent.cpp
|
| diff --git a/Source/core/inspector/InspectorHeapProfilerAgent.cpp b/Source/core/inspector/InspectorHeapProfilerAgent.cpp
|
| index 28575a3007165f7d34f2a61cb6c295f98d01587c..4598a0749bab7e75bcffdd02a5cf1bd998550990 100644
|
| --- a/Source/core/inspector/InspectorHeapProfilerAgent.cpp
|
| +++ b/Source/core/inspector/InspectorHeapProfilerAgent.cpp
|
| @@ -45,6 +45,8 @@ typedef uint32_t SnapshotObjectId;
|
|
|
| namespace HeapProfilerAgentState {
|
| static const char heapProfilerEnabled[] = "heapProfilerEnabled";
|
| +static const char heapObjectsTrackingEnabled[] = "heapObjectsTrackingEnabled";
|
| +static const char allocationTrackingEnabled[] = "allocationTrackingEnabled";
|
| }
|
|
|
| class InspectorHeapProfilerAgent::HeapStatsUpdateTask {
|
| @@ -97,6 +99,8 @@ void InspectorHeapProfilerAgent::restore()
|
| {
|
| if (m_state->getBoolean(HeapProfilerAgentState::heapProfilerEnabled))
|
| m_frontend->resetProfiles();
|
| + if (m_state->getBoolean(HeapProfilerAgentState::heapObjectsTrackingEnabled))
|
| + startTrackingHeapObjectsInternal(m_state->getBoolean(HeapProfilerAgentState::allocationTrackingEnabled));
|
| }
|
|
|
| void InspectorHeapProfilerAgent::collectGarbage(WebCore::ErrorString*)
|
| @@ -142,11 +146,10 @@ private:
|
|
|
| void InspectorHeapProfilerAgent::startTrackingHeapObjects(ErrorString*, const bool* trackAllocations)
|
| {
|
| - if (m_heapStatsUpdateTask)
|
| - return;
|
| - ScriptProfiler::startTrackingHeapObjects(trackAllocations && *trackAllocations);
|
| - m_heapStatsUpdateTask = adoptPtr(new HeapStatsUpdateTask(this));
|
| - m_heapStatsUpdateTask->startTimer();
|
| + m_state->setBoolean(HeapProfilerAgentState::heapObjectsTrackingEnabled, true);
|
| + bool allocationTrackingEnabled = trackAllocations && *trackAllocations;
|
| + m_state->setBoolean(HeapProfilerAgentState::allocationTrackingEnabled, allocationTrackingEnabled);
|
| + startTrackingHeapObjectsInternal(allocationTrackingEnabled);
|
| }
|
|
|
| void InspectorHeapProfilerAgent::requestHeapStatsUpdate()
|
| @@ -179,6 +182,15 @@ void InspectorHeapProfilerAgent::stopTrackingHeapObjects(ErrorString* error, con
|
| stopTrackingHeapObjectsInternal();
|
| }
|
|
|
| +void InspectorHeapProfilerAgent::startTrackingHeapObjectsInternal(bool trackAllocations)
|
| +{
|
| + if (m_heapStatsUpdateTask)
|
| + return;
|
| + ScriptProfiler::startTrackingHeapObjects(trackAllocations);
|
| + m_heapStatsUpdateTask = adoptPtr(new HeapStatsUpdateTask(this));
|
| + m_heapStatsUpdateTask->startTimer();
|
| +}
|
| +
|
| void InspectorHeapProfilerAgent::stopTrackingHeapObjectsInternal()
|
| {
|
| if (!m_heapStatsUpdateTask)
|
| @@ -186,6 +198,8 @@ void InspectorHeapProfilerAgent::stopTrackingHeapObjectsInternal()
|
| ScriptProfiler::stopTrackingHeapObjects();
|
| m_heapStatsUpdateTask->resetTimer();
|
| m_heapStatsUpdateTask.clear();
|
| + m_state->setBoolean(HeapProfilerAgentState::heapObjectsTrackingEnabled, false);
|
| + m_state->setBoolean(HeapProfilerAgentState::allocationTrackingEnabled, false);
|
| }
|
|
|
| void InspectorHeapProfilerAgent::enable(ErrorString*)
|
|
|