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

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 Expect_EQ 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
« no previous file with comments | « Source/platform/scheduler/TracedTask.h ('k') | Source/web/WebViewImpl.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/platform/scheduler/TracedTask.cpp
diff --git a/Source/platform/scheduler/TracedTask.cpp b/Source/platform/scheduler/TracedTask.cpp
index d4e1fa69f78c4535379dfbff2f49e00138acad4f..c92efb9ef5c2defa2d734e5e42ad9b7a4d12f9a5 100644
--- a/Source/platform/scheduler/TracedTask.cpp
+++ b/Source/platform/scheduler/TracedTask.cpp
@@ -4,25 +4,16 @@
#include "config.h"
#include "platform/scheduler/TracedTask.h"
+#include "platform/scheduler/Scheduler.h"
+#include "wtf/PassOwnPtr.h"
namespace blink {
+namespace internal {
volatile int TracedTask::s_nextFlowTraceID = 0;
-void TracedTask::run() const
-{
- TRACE_EVENT_FLOW_END0("blink", m_traceName, MANGLE(m_flowTraceID));
-
- TRACE_EVENT2("blink", m_traceName,
- "src_file", m_location.fileName(),
- "src_func", m_location.functionName());
-
- m_task();
-}
-
-TracedTask::TracedTask(const Task& task, const TraceLocation& location, const char* traceName)
- : m_task(task)
- , m_location(location)
+TracedTask::TracedTask(const TraceLocation& location, const char* traceName)
+ : m_location(location)
, m_traceName(traceName)
{
bool tracingEnabled;
@@ -38,4 +29,69 @@ TracedTask::TracedTask(const Task& task, const TraceLocation& location, const ch
}
}
+TraceLocation TracedTask::getLocation() const
+{
+ return m_location;
+}
+
+const char* TracedTask::getTraceName() const
+{
+ return m_traceName;
+}
+
+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() { }
+
+// static
+PassOwnPtr<TracedStandardTask> TracedStandardTask::Create(const Task& task, const TraceLocation& location, const char* traceName)
+{
+ return adoptPtr(new TracedStandardTask(task, location, traceName));
+}
+
+void TracedStandardTask::run() const
+{
+ endFlowTraceEvent();
+ TRACE_EVENT2("blink", getTraceName(),
+ "src_file", getLocation().fileName(),
+ "src_func", getLocation().functionName());
+
+ m_task();
+}
+
+TracedIdleTask::TracedIdleTask(const IdleTask& idleTask, const TraceLocation& location, const char* traceName)
+ : TracedTask(location, traceName)
+ , m_idleTask(idleTask)
+{
+ ASSERT(Scheduler::shared());
+}
+
+TracedIdleTask::~TracedIdleTask() { }
+
+// static
+PassOwnPtr<TracedIdleTask> TracedIdleTask::Create(const IdleTask& idleTask, const TraceLocation& location, const char* traceName)
+{
+ return adoptPtr(new TracedIdleTask(idleTask, location, traceName));
+}
+
+void TracedIdleTask::run() const
+{
+ endFlowTraceEvent();
+ TRACE_EVENT2("blink", getTraceName(),
+ "src_file", getLocation().fileName(),
+ "src_func", getLocation().functionName());
+
+ m_idleTask(Scheduler::shared()->currentFrameDeadlineForIdleTasks());
+}
+
+} // namespace internal
} // namespace blink
« no previous file with comments | « Source/platform/scheduler/TracedTask.h ('k') | Source/web/WebViewImpl.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698