| Index: content/renderer/memory_benchmarking_extension.cc
|
| diff --git a/content/renderer/memory_benchmarking_extension.cc b/content/renderer/memory_benchmarking_extension.cc
|
| index e6efc7405840503e0eff51e6898073ea18d83415..7db2c6ff18a055585a7e072edca677fecd85acbf 100644
|
| --- a/content/renderer/memory_benchmarking_extension.cc
|
| +++ b/content/renderer/memory_benchmarking_extension.cc
|
| @@ -5,11 +5,12 @@
|
| #include "content/renderer/memory_benchmarking_extension.h"
|
|
|
| #include "base/string_util.h"
|
| -#include "content/public/renderer/render_thread.h"
|
| +#include "content/common/memory_benchmark_messages.h"
|
| +#include "content/renderer/render_thread_impl.h"
|
| +
|
| +#if defined(USE_TCMALLOC) && (defined(OS_LINUX) || defined(OS_ANDROID))
|
|
|
| -#if !defined(NO_TCMALLOC) && defined(OS_LINUX)
|
| #include "third_party/tcmalloc/chromium/src/gperftools/heap-profiler.h"
|
| -#endif // !defined(NO_TCMALLOC) && defined(OS_LINUX)
|
|
|
| namespace {
|
|
|
| @@ -33,9 +34,10 @@ class MemoryBenchmarkingWrapper : public v8::Extension {
|
| " native function IsHeapProfilerRunning();"
|
| " return IsHeapProfilerRunning();"
|
| "};"
|
| - "chrome.memoryBenchmarking.heapProfilerDump = function(reason) {"
|
| + "chrome.memoryBenchmarking.heapProfilerDump = "
|
| + " function(process_type, reason) {"
|
| " native function HeapProfilerDump();"
|
| - " HeapProfilerDump(reason);"
|
| + " HeapProfilerDump(process_type, reason);"
|
| "};"
|
| ) {}
|
|
|
| @@ -51,20 +53,22 @@ class MemoryBenchmarkingWrapper : public v8::Extension {
|
|
|
| static v8::Handle<v8::Value> IsHeapProfilerRunning(
|
| const v8::Arguments& args) {
|
| -#if !defined(NO_TCMALLOC) && defined(OS_LINUX)
|
| return v8::Boolean::New(::IsHeapProfilerRunning());
|
| -#else
|
| - return v8::Boolean::New(false);
|
| -#endif // !defined(NO_TCMALLOC) && defined(OS_LINUX)
|
| }
|
|
|
| static v8::Handle<v8::Value> HeapProfilerDump(const v8::Arguments& args) {
|
| -#if !defined(NO_TCMALLOC) && defined(OS_LINUX)
|
| - std::string reason("benchmarking_extension");
|
| + std::string process_type;
|
| if (args.Length() && args[0]->IsString())
|
| - reason = *v8::String::AsciiValue(args[0]);
|
| - ::HeapProfilerDump(reason.c_str());
|
| -#endif // !defined(NO_TCMALLOC) && defined(OS_LINUX)
|
| + process_type = *v8::String::AsciiValue(args[0]);
|
| + std::string reason("benchmarking_extension");
|
| + if (args.Length() > 1 && args[1]->IsString())
|
| + reason = *v8::String::AsciiValue(args[1]);
|
| + if (process_type == "browser") {
|
| + content::RenderThreadImpl::current()->Send(
|
| + new MemoryBenchmarkHostMsg_HeapProfilerDump(reason));
|
| + } else {
|
| + ::HeapProfilerDump(reason.c_str());
|
| + }
|
| return v8::Undefined();
|
| }
|
| };
|
| @@ -78,3 +82,5 @@ v8::Extension* MemoryBenchmarkingExtension::Get() {
|
| }
|
|
|
| } // namespace content
|
| +
|
| +#endif // defined(USE_TCMALLOC) && (defined(OS_LINUX) || defined(OS_ANDROID))
|
|
|