diff options
author | bulach@chromium.org <bulach@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-05-24 15:16:34 +0000 |
---|---|---|
committer | bulach@chromium.org <bulach@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-05-24 15:16:34 +0000 |
commit | a70ed8b33ca2c6ac5d9238f9247fe266229bdca9 (patch) | |
tree | c3d3647768836e7c77360536032465a44092d3a4 /content/renderer | |
parent | 5c9a70add376eb58bbf682de0c4614be8a5ca8f7 (diff) | |
download | chromium_src-a70ed8b33ca2c6ac5d9238f9247fe266229bdca9.zip chromium_src-a70ed8b33ca2c6ac5d9238f9247fe266229bdca9.tar.gz chromium_src-a70ed8b33ca2c6ac5d9238f9247fe266229bdca9.tar.bz2 |
Adds chrome.memoryBenchmarking.heapProfilerDump for the browser process.
This function will be used in conjunction with --enable-memory-benchmarking
switch in order to obtain TCMalloc's heap dumps.
BUG=239836
Review URL: https://chromiumcodereview.appspot.com/15082004
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@202087 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/renderer')
-rw-r--r-- | content/renderer/memory_benchmarking_extension.cc | 34 | ||||
-rw-r--r-- | content/renderer/render_thread_impl.cc | 2 |
2 files changed, 22 insertions, 14 deletions
diff --git a/content/renderer/memory_benchmarking_extension.cc b/content/renderer/memory_benchmarking_extension.cc index e6efc74..7db2c6f 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)) diff --git a/content/renderer/render_thread_impl.cc b/content/renderer/render_thread_impl.cc index b5958a8..9b7524a 100644 --- a/content/renderer/render_thread_impl.cc +++ b/content/renderer/render_thread_impl.cc @@ -399,8 +399,10 @@ void RenderThreadImpl::Init() { if (command_line.HasSwitch(switches::kEnableGpuBenchmarking)) RegisterExtension(GpuBenchmarkingExtension::Get()); +#if defined(USE_TCMALLOC) && (defined(OS_LINUX) || defined(OS_ANDROID)) if (command_line.HasSwitch(switches::kEnableMemoryBenchmarking)) RegisterExtension(MemoryBenchmarkingExtension::Get()); +#endif // USE_TCMALLOC if (command_line.HasSwitch(switches::kEnableSkiaBenchmarking)) { LOG(WARNING) << "Enabling unsafe Skia benchmarking extension."; |