| // Copyright (c) 2009 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "base/profiler.h" |
| |
| #if defined(USE_TCMALLOC) && defined(OS_LINUX) |
| #include "third_party/tcmalloc/chromium/src/google/profiler.h" |
| #endif |
| |
| // When actually using quantify, uncomment the following line. |
| // #define QUANTIFY |
| |
| #ifdef QUANTIFY |
| // this #define is used to prevent people from directly using pure.h |
| // instead of profiler.h |
| #define PURIFY_PRIVATE_INCLUDE |
| #include "base/third_party/purify/pure.h" |
| #endif // QUANTIFY |
| |
| namespace base { |
| |
| void Profiler::StartRecording() { |
| #ifdef QUANTIFY |
| QuantifyStartRecordingData(); |
| #elif defined(USE_TCMALLOC) && defined(OS_LINUX) |
| ProfilerStart("chrome-profile"); |
| #endif |
| } |
| |
| void Profiler::StopRecording() { |
| #ifdef QUANTIFY |
| QuantifyStopRecordingData(); |
| #elif defined(USE_TCMALLOC) && defined(OS_LINUX) |
| ProfilerStop(); |
| #endif |
| } |
| |
| void Profiler::Flush() { |
| #if defined(USE_TCMALLOC) && defined(OS_LINUX) |
| ProfilerFlush(); |
| #endif |
| } |
| |
| void Profiler::ClearData() { |
| #ifdef QUANTIFY |
| QuantifyClearData(); |
| #endif |
| } |
| |
| void Profiler::SetThreadName(const char *name) { |
| #ifdef QUANTIFY |
| // make a copy since the Quantify function takes a char*, not const char* |
| char buffer[512]; |
| base::snprintf(buffer, sizeof(buffer)-1, "%s", name); |
| QuantifySetThreadName(buffer); |
| #endif |
| } |
| |
| } // namespace base |