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

Unified Diff: Source/platform/scheduler/TracedTask.cpp

Issue 595023002: Implement idle task scheduling. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Fix comment Created 6 years, 2 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/platform/scheduler/TracedTask.cpp
diff --git a/Source/platform/scheduler/TracedTask.cpp b/Source/platform/scheduler/TracedTask.cpp
index d4e1fa69f78c4535379dfbff2f49e00138acad4f..cfa723f3d5b0f63433d7039fd90fd81850a228f1 100644
--- a/Source/platform/scheduler/TracedTask.cpp
+++ b/Source/platform/scheduler/TracedTask.cpp
@@ -4,15 +4,45 @@
#include "config.h"
#include "platform/scheduler/TracedTask.h"
+#include "platform/scheduler/Scheduler.h"
namespace blink {
volatile int TracedTask::s_nextFlowTraceID = 0;
-void TracedTask::run() const
+TracedTask::TracedTask(const TraceLocation& location, const char* traceName)
+ : m_location(location)
+ , m_traceName(traceName)
+{
+ bool tracingEnabled;
+ TRACE_EVENT_CATEGORY_GROUP_ENABLED("blink", &tracingEnabled);
+
+ if (tracingEnabled) {
+ // atomicIncrement is slow so we only do it if tracing is enabled
+ m_flowTraceID = static_cast<uint64_t>(atomicIncrement(&s_nextFlowTraceID));
+
+ TRACE_EVENT_FLOW_BEGIN2("blink", m_traceName, MANGLE(m_flowTraceID),
+ "src_file", m_location.fileName(),
+ "src_func", m_location.functionName());
+ }
+}
+
+void TracedTask::endFlowTraceEvent() const
{
TRACE_EVENT_FLOW_END0("blink", m_traceName, MANGLE(m_flowTraceID));
+}
+TracedTask::~TracedTask() { }
+
+TracedStandardTask::TracedStandardTask(const Task& task, const TraceLocation& location, const char* traceName)
+ : TracedTask(location, traceName)
+ , m_task(task) { }
+
+TracedStandardTask::~TracedStandardTask() { }
+
+void TracedStandardTask::run() const
+{
+ endFlowTraceEvent();
TRACE_EVENT2("blink", m_traceName,
"src_file", m_location.fileName(),
"src_func", m_location.functionName());
@@ -20,22 +50,23 @@ void TracedTask::run() const
m_task();
}
-TracedTask::TracedTask(const Task& task, const TraceLocation& location, const char* traceName)
- : m_task(task)
- , m_location(location)
- , m_traceName(traceName)
+TracedIdleTask::TracedIdleTask(const IdleTask& idleTask, const TraceLocation& location, const char* traceName)
+ : TracedTask(location, traceName)
+ , m_idleTask(idleTask)
{
- bool tracingEnabled;
- TRACE_EVENT_CATEGORY_GROUP_ENABLED("blink", &tracingEnabled);
+ ASSERT(Scheduler::shared());
+}
- if (tracingEnabled) {
- // atomicIncrement is slow so we only do it if tracing is enabled
- m_flowTraceID = static_cast<uint64_t>(atomicIncrement(&s_nextFlowTraceID));
+TracedIdleTask::~TracedIdleTask() { }
- TRACE_EVENT_FLOW_BEGIN2("blink", m_traceName, MANGLE(m_flowTraceID),
+void TracedIdleTask::run() const
+{
+ endFlowTraceEvent();
+ TRACE_EVENT2("blink", m_traceName,
"src_file", m_location.fileName(),
"src_func", m_location.functionName());
- }
+
+ m_idleTask(Scheduler::shared()->currentFrameDeadlineForIdleTasks());
}
} // namespace blink

Powered by Google App Engine
This is Rietveld 408576698