Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1292)

Unified Diff: Source/core/inspector/InspectorHeapProfilerAgent.cpp

Issue 172163005: Continue recording object allocation after navigation (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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*)

Powered by Google App Engine
This is Rietveld 408576698