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 |
+ |