17242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci// Copyright 2014 The Chromium Authors. All rights reserved. 27242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci// Use of this source code is governed by a BSD-style license that can be 37242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci// found in the LICENSE file. 47242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 57242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#include "config.h" 67242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#include "platform/scheduler/TracedTask.h" 77242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 87242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tuccinamespace blink { 97242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 107242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tuccivolatile int TracedTask::s_nextFlowTraceID = 0; 117242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 127242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tuccivoid TracedTask::run() const 137242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci{ 147242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci TRACE_EVENT_FLOW_END0("blink", m_traceName, MANGLE(m_flowTraceID)); 157242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 167242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci TRACE_EVENT2("blink", m_traceName, 177242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci "src_file", m_location.fileName(), 187242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci "src_func", m_location.functionName()); 197242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 207242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci m_task(); 217242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci} 227242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 237242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano TucciTracedTask::TracedTask(const Task& task, const TraceLocation& location, const char* traceName) 247242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci : m_task(task) 257242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci , m_location(location) 267242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci , m_traceName(traceName) 277242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci{ 287242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci bool tracingEnabled; 297242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci TRACE_EVENT_CATEGORY_GROUP_ENABLED("blink", &tracingEnabled); 307242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 317242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci if (tracingEnabled) { 327242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci // atomicIncrement is slow so we only do it if tracing is enabled 337242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci m_flowTraceID = static_cast<uint64_t>(atomicIncrement(&s_nextFlowTraceID)); 347242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 357242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci TRACE_EVENT_FLOW_BEGIN2("blink", m_traceName, MANGLE(m_flowTraceID), 367242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci "src_file", m_location.fileName(), 377242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci "src_func", m_location.functionName()); 387242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci } 397242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci} 407242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 417242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci} // namespace blink 42