| Index: base/debug/profiler.cc
|
| diff --git a/base/debug/profiler.cc b/base/debug/profiler.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..df2b592aa171a465878535e164bf1c8bfafde70a
|
| --- /dev/null
|
| +++ b/base/debug/profiler.cc
|
| @@ -0,0 +1,65 @@
|
| +// Copyright (c) 2010 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/debug/profiler.h"
|
| +
|
| +#include <string>
|
| +
|
| +#include "base/process_util.h"
|
| +#include "base/string_util.h"
|
| +
|
| +#if defined(ENABLE_PROFILING) && !defined(NO_TCMALLOC)
|
| +#include "third_party/tcmalloc/chromium/src/google/profiler.h"
|
| +#endif
|
| +
|
| +namespace base {
|
| +namespace debug {
|
| +
|
| +#if defined(ENABLE_PROFILING) && !defined(NO_TCMALLOC)
|
| +
|
| +static int profile_count = 0;
|
| +
|
| +void StartProfiling(const std::string& name) {
|
| + ++profile_count;
|
| + std::string full_name(name);
|
| + std::string pid = StringPrintf("%d", GetCurrentProcId());
|
| + std::string count = StringPrintf("%d", profile_count);
|
| + ReplaceSubstringsAfterOffset(&full_name, 0, "{pid}", pid.c_str());
|
| + ReplaceSubstringsAfterOffset(&full_name, 0, "{count}", count);
|
| + ProfilerStart(full_name.c_str());
|
| +}
|
| +
|
| +void StopProfiling() {
|
| + ProfilerFlush();
|
| + ProfilerStop();
|
| +}
|
| +
|
| +void FlushProfiling() {
|
| + ProfilerFlush();
|
| +}
|
| +
|
| +bool BeingProfiled() {
|
| + return ProfilingIsEnabledForAllThreads();
|
| +}
|
| +
|
| +#else
|
| +
|
| +void StartProfiling(const std::string& name) {
|
| +}
|
| +
|
| +void StopProfiling() {
|
| +}
|
| +
|
| +void FlushProfiling() {
|
| +}
|
| +
|
| +bool BeingProfiled() {
|
| + return false;
|
| +}
|
| +
|
| +#endif
|
| +
|
| +} // namespace debug
|
| +} // namespace base
|
| +
|
|
|