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

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

Issue 306053010: Tried using CrossThreadPersistent for workerDebuggerAgents (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 7 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
« no previous file with comments | « Source/core/inspector/InspectorTimelineAgent.h ('k') | Source/core/inspector/InspectorTracingAgent.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/inspector/InspectorTimelineAgent.cpp
diff --git a/Source/core/inspector/InspectorTimelineAgent.cpp b/Source/core/inspector/InspectorTimelineAgent.cpp
index 5af270ad59dd6904e9943d16f5625c8c0ad914b0..341e198c80c3747711aad55b15ae7464c976572a 100644
--- a/Source/core/inspector/InspectorTimelineAgent.cpp
+++ b/Source/core/inspector/InspectorTimelineAgent.cpp
@@ -157,7 +157,7 @@ struct TimelineRecordEntry {
bool skipWhenUnbalanced;
};
-class TimelineRecordStack {
+class TimelineRecordStack : public NoBaseWillBeGarbageCollectedFinalized<TimelineRecordStack> {
private:
struct Entry {
Entry(PassRefPtr<TimelineEvent> record, const String& type)
@@ -177,7 +177,7 @@ private:
};
public:
- TimelineRecordStack() : m_timelineAgent(0) { }
+ TimelineRecordStack() : m_timelineAgent(nullptr) { }
TimelineRecordStack(InspectorTimelineAgent*);
void addScopedRecord(PassRefPtr<TimelineEvent> record, const String& type);
@@ -188,24 +188,28 @@ public:
bool isOpenRecordOfType(const String& type);
#endif
+ void trace(Visitor*);
+
private:
void send(PassRefPtr<JSONObject>);
- InspectorTimelineAgent* m_timelineAgent;
+ RawPtrWillBeMember<InspectorTimelineAgent> m_timelineAgent;
Vector<Entry> m_stack;
};
-struct TimelineThreadState {
+struct TimelineThreadState : public NoBaseWillBeGarbageCollectedFinalized<TimelineThreadState> {
TimelineThreadState() { }
TimelineThreadState(InspectorTimelineAgent* timelineAgent)
- : recordStack(timelineAgent)
+ : recordStack(adoptPtrWillBeNoop(new TimelineRecordStack(timelineAgent)))
, inKnownLayerTask(false)
, decodedPixelRefId(0)
{
}
- TimelineRecordStack recordStack;
+ void trace(Visitor*);
+
+ OwnPtrWillBeMember<TimelineRecordStack> recordStack;
bool inKnownLayerTask;
unsigned long long decodedPixelRefId;
};
@@ -261,6 +265,14 @@ InspectorTimelineAgent::~InspectorTimelineAgent()
{
}
+void InspectorTimelineAgent::trace(Visitor* visitor)
+{
+ visitor->trace(m_pageAgent);
+ visitor->trace(m_layerTreeAgent);
+ visitor->trace(m_threadStates);
+ InspectorBaseAgent::trace(visitor);
+}
+
void InspectorTimelineAgent::setFrontend(InspectorFrontend* frontend)
{
m_frontend = frontend->timeline();
@@ -886,7 +898,7 @@ void InspectorTimelineAgent::onBeginImplSideFrame(const TraceEventDispatcher::Tr
if (layerTreeId != m_layerTreeId)
return;
TimelineThreadState& state = threadState(event.threadIdentifier());
- state.recordStack.addInstantRecord(createRecordForEvent(event, TimelineRecordType::BeginFrame, JSONObject::create()));
+ state.recordStack->addInstantRecord(createRecordForEvent(event, TimelineRecordType::BeginFrame, JSONObject::create()));
}
void InspectorTimelineAgent::onPaintSetupBegin(const TraceEventDispatcher::TraceEvent& event)
@@ -913,7 +925,7 @@ void InspectorTimelineAgent::onRasterTaskBegin(const TraceEventDispatcher::Trace
double timestamp = event.timestamp() * msPerSecond;
RefPtr<JSONObject> data = TimelineRecordFactory::createLayerData(m_layerToNodeMap.get(layerId));
RefPtr<TimelineEvent> record = TimelineRecordFactory::createBackgroundRecord(timestamp, String::number(event.threadIdentifier()), TimelineRecordType::Rasterize, data);
- state.recordStack.addScopedRecord(record, TimelineRecordType::Rasterize);
+ state.recordStack->addScopedRecord(record, TimelineRecordType::Rasterize);
}
void InspectorTimelineAgent::onRasterTaskEnd(const TraceEventDispatcher::TraceEvent& event)
@@ -921,8 +933,8 @@ void InspectorTimelineAgent::onRasterTaskEnd(const TraceEventDispatcher::TraceEv
TimelineThreadState& state = threadState(event.threadIdentifier());
if (!state.inKnownLayerTask)
return;
- ASSERT(state.recordStack.isOpenRecordOfType(TimelineRecordType::Rasterize));
- state.recordStack.closeScopedRecord(event.timestamp() * msPerSecond);
+ ASSERT(state.recordStack->isOpenRecordOfType(TimelineRecordType::Rasterize));
+ state.recordStack->closeScopedRecord(event.timestamp() * msPerSecond);
state.inKnownLayerTask = false;
}
@@ -942,7 +954,7 @@ void InspectorTimelineAgent::onImageDecodeBegin(const TraceEventDispatcher::Trac
RefPtr<JSONObject> data = JSONObject::create();
TimelineRecordFactory::setImageDetails(data.get(), imageInfo.backendNodeId, imageInfo.url);
double timeestamp = event.timestamp() * msPerSecond;
- state.recordStack.addScopedRecord(TimelineRecordFactory::createBackgroundRecord(timeestamp, String::number(event.threadIdentifier()), TimelineRecordType::DecodeImage, data), TimelineRecordType::DecodeImage);
+ state.recordStack->addScopedRecord(TimelineRecordFactory::createBackgroundRecord(timeestamp, String::number(event.threadIdentifier()), TimelineRecordType::DecodeImage, data), TimelineRecordType::DecodeImage);
}
void InspectorTimelineAgent::onImageDecodeEnd(const TraceEventDispatcher::TraceEvent& event)
@@ -950,8 +962,8 @@ void InspectorTimelineAgent::onImageDecodeEnd(const TraceEventDispatcher::TraceE
TimelineThreadState& state = threadState(event.threadIdentifier());
if (!state.decodedPixelRefId)
return;
- ASSERT(state.recordStack.isOpenRecordOfType(TimelineRecordType::DecodeImage));
- state.recordStack.closeScopedRecord(event.timestamp() * msPerSecond);
+ ASSERT(state.recordStack->isOpenRecordOfType(TimelineRecordType::DecodeImage));
+ state.recordStack->closeScopedRecord(event.timestamp() * msPerSecond);
}
void InspectorTimelineAgent::onRequestMainThreadFrame(const TraceEventDispatcher::TraceEvent& event)
@@ -960,7 +972,7 @@ void InspectorTimelineAgent::onRequestMainThreadFrame(const TraceEventDispatcher
if (layerTreeId != m_layerTreeId)
return;
TimelineThreadState& state = threadState(event.threadIdentifier());
- state.recordStack.addInstantRecord(createRecordForEvent(event, TimelineRecordType::RequestMainThreadFrame, JSONObject::create()));
+ state.recordStack->addInstantRecord(createRecordForEvent(event, TimelineRecordType::RequestMainThreadFrame, JSONObject::create()));
}
void InspectorTimelineAgent::onActivateLayerTree(const TraceEventDispatcher::TraceEvent& event)
@@ -970,7 +982,7 @@ void InspectorTimelineAgent::onActivateLayerTree(const TraceEventDispatcher::Tra
return;
unsigned long long frameId = event.asUInt(InstrumentationEventArguments::FrameId);
TimelineThreadState& state = threadState(event.threadIdentifier());
- state.recordStack.addInstantRecord(createRecordForEvent(event, TimelineRecordType::ActivateLayerTree, TimelineRecordFactory::createFrameData(frameId)));
+ state.recordStack->addInstantRecord(createRecordForEvent(event, TimelineRecordType::ActivateLayerTree, TimelineRecordFactory::createFrameData(frameId)));
}
void InspectorTimelineAgent::onDrawFrame(const TraceEventDispatcher::TraceEvent& event)
@@ -979,7 +991,7 @@ void InspectorTimelineAgent::onDrawFrame(const TraceEventDispatcher::TraceEvent&
if (layerTreeId != m_layerTreeId)
return;
TimelineThreadState& state = threadState(event.threadIdentifier());
- state.recordStack.addInstantRecord(createRecordForEvent(event, TimelineRecordType::DrawFrame, JSONObject::create()));
+ state.recordStack->addInstantRecord(createRecordForEvent(event, TimelineRecordType::DrawFrame, JSONObject::create()));
}
void InspectorTimelineAgent::onLayerDeleted(const TraceEventDispatcher::TraceEvent& event)
@@ -1044,13 +1056,13 @@ void InspectorTimelineAgent::onEmbedderCallbackBegin(const TraceEventDispatcher:
double timestamp = event.timestamp() * msPerSecond;
RefPtr<JSONObject> data = TimelineRecordFactory::createEmbedderCallbackData(event.asString(InstrumentationEventArguments::CallbackName));
RefPtr<TimelineEvent> record = TimelineRecordFactory::createGenericRecord(timestamp, 0, TimelineRecordType::EmbedderCallback, data);
- state.recordStack.addScopedRecord(record, TimelineRecordType::EmbedderCallback);
+ state.recordStack->addScopedRecord(record, TimelineRecordType::EmbedderCallback);
}
void InspectorTimelineAgent::onEmbedderCallbackEnd(const TraceEventDispatcher::TraceEvent& event)
{
TimelineThreadState& state = threadState(event.threadIdentifier());
- state.recordStack.closeScopedRecord(event.timestamp() * msPerSecond);
+ state.recordStack->closeScopedRecord(event.timestamp() * msPerSecond);
}
void InspectorTimelineAgent::addRecordToTimeline(PassRefPtr<TimelineEvent> record, double ts)
@@ -1201,8 +1213,8 @@ TimelineThreadState& InspectorTimelineAgent::threadState(ThreadIdentifier thread
{
ThreadStateMap::iterator it = m_threadStates.find(thread);
if (it != m_threadStates.end())
- return it->value;
- return m_threadStates.add(thread, TimelineThreadState(this)).storedValue->value;
+ return *(it->value);
+ return *(m_threadStates.add(thread, adoptPtrWillBeNoop(new TimelineThreadState(this))).storedValue->value);
}
void InspectorTimelineAgent::commitFrameRecord()
@@ -1310,5 +1322,15 @@ bool TimelineRecordStack::isOpenRecordOfType(const String& type)
}
#endif
+void TimelineRecordStack::trace(Visitor* visitor)
+{
+ visitor->trace(m_timelineAgent);
+}
+
+void TimelineThreadState::trace(Visitor* visitor)
+{
+ visitor->trace(recordStack);
+}
+
} // namespace WebCore
« no previous file with comments | « Source/core/inspector/InspectorTimelineAgent.h ('k') | Source/core/inspector/InspectorTracingAgent.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698