| Index: third_party/tcmalloc/chromium/src/heap-profiler.cc
|
| diff --git a/third_party/tcmalloc/chromium/src/heap-profiler.cc b/third_party/tcmalloc/chromium/src/heap-profiler.cc
|
| index 46a81a499037487b69315b80c0105840a2eac1fa..a49f63dbfb52eccece09ecac0ebf8c346d80a5db 100644
|
| --- a/third_party/tcmalloc/chromium/src/heap-profiler.cc
|
| +++ b/third_party/tcmalloc/chromium/src/heap-profiler.cc
|
| @@ -68,7 +68,6 @@
|
| #include "base/spinlock.h"
|
| #include "base/low_level_alloc.h"
|
| #include "base/sysinfo.h" // for GetUniquePathFromEnv()
|
| -#include "deep-heap-profile.h"
|
| #include "heap-profile-table.h"
|
| #include "memory_region_map.h"
|
|
|
| @@ -81,38 +80,6 @@
|
| #endif
|
| #endif
|
|
|
| -#if defined(__ANDROID__) || defined(ANDROID)
|
| -// On android, there are no environment variables.
|
| -// Instead, we use system properties, set via:
|
| -// adb shell setprop prop_name prop_value
|
| -// From <sys/system_properties.h>,
|
| -// PROP_NAME_MAX 32
|
| -// PROP_VALUE_MAX 92
|
| -#define HEAPPROFILE "heapprof"
|
| -#define HEAP_PROFILE_ALLOCATION_INTERVAL "heapprof.allocation_interval"
|
| -#define HEAP_PROFILE_DEALLOCATION_INTERVAL "heapprof.deallocation_interval"
|
| -#define HEAP_PROFILE_INUSE_INTERVAL "heapprof.inuse_interval"
|
| -#define HEAP_PROFILE_TIME_INTERVAL "heapprof.time_interval"
|
| -#define HEAP_PROFILE_MMAP_LOG "heapprof.mmap_log"
|
| -#define HEAP_PROFILE_MMAP "heapprof.mmap"
|
| -#define HEAP_PROFILE_ONLY_MMAP "heapprof.only_mmap"
|
| -#define DEEP_HEAP_PROFILE "heapprof.deep_heap_profile"
|
| -#define DEEP_HEAP_PROFILE_PAGEFRAME "heapprof.deep.pageframe"
|
| -#define HEAP_PROFILE_TYPE_STATISTICS "heapprof.type_statistics"
|
| -#else // defined(__ANDROID__) || defined(ANDROID)
|
| -#define HEAPPROFILE "HEAPPROFILE"
|
| -#define HEAP_PROFILE_ALLOCATION_INTERVAL "HEAP_PROFILE_ALLOCATION_INTERVAL"
|
| -#define HEAP_PROFILE_DEALLOCATION_INTERVAL "HEAP_PROFILE_DEALLOCATION_INTERVAL"
|
| -#define HEAP_PROFILE_INUSE_INTERVAL "HEAP_PROFILE_INUSE_INTERVAL"
|
| -#define HEAP_PROFILE_TIME_INTERVAL "HEAP_PROFILE_TIME_INTERVAL"
|
| -#define HEAP_PROFILE_MMAP_LOG "HEAP_PROFILE_MMAP_LOG"
|
| -#define HEAP_PROFILE_MMAP "HEAP_PROFILE_MMAP"
|
| -#define HEAP_PROFILE_ONLY_MMAP "HEAP_PROFILE_ONLY_MMAP"
|
| -#define DEEP_HEAP_PROFILE "DEEP_HEAP_PROFILE"
|
| -#define DEEP_HEAP_PROFILE_PAGEFRAME "DEEP_HEAP_PROFILE_PAGEFRAME"
|
| -#define HEAP_PROFILE_TYPE_STATISTICS "HEAP_PROFILE_TYPE_STATISTICS"
|
| -#endif // defined(__ANDROID__) || defined(ANDROID)
|
| -
|
| using STL_NAMESPACE::string;
|
| using STL_NAMESPACE::sort;
|
|
|
| @@ -154,20 +121,6 @@ DEFINE_bool(only_mmap_profile,
|
| EnvToBool(HEAP_PROFILE_ONLY_MMAP, false),
|
| "If heap-profiling is on, only profile mmap, mremap, and sbrk; "
|
| "do not profile malloc/new/etc");
|
| -DEFINE_bool(deep_heap_profile,
|
| - EnvToBool(DEEP_HEAP_PROFILE, false),
|
| - "If heap-profiling is on, profile deeper (Linux and Android)");
|
| -DEFINE_int32(deep_heap_profile_pageframe,
|
| - EnvToInt(DEEP_HEAP_PROFILE_PAGEFRAME, 0),
|
| - "Needs deeper profile. If 1, dump page frame numbers (PFNs). "
|
| - "If 2, dump page counts (/proc/kpagecount) with PFNs.");
|
| -#if defined(TYPE_PROFILING)
|
| -DEFINE_bool(heap_profile_type_statistics,
|
| - EnvToBool(HEAP_PROFILE_TYPE_STATISTICS, false),
|
| - "If heap-profiling is on, dump type statistics.");
|
| -#endif // defined(TYPE_PROFILING)
|
| -
|
| -
|
| //----------------------------------------------------------------------
|
| // Locking
|
| //----------------------------------------------------------------------
|
| @@ -220,7 +173,6 @@ static int64 high_water_mark = 0; // In-use-bytes at last high-water dump
|
| static int64 last_dump_time = 0; // The time of the last dump
|
|
|
| static HeapProfileTable* heap_profile = NULL; // the heap profile table
|
| -static DeepHeapProfile* deep_profile = NULL; // deep memory profiler
|
|
|
| // Callback to generate a stack trace for an allocation. May be overriden
|
| // by an application to provide its own pseudo-stacks.
|
| @@ -301,25 +253,11 @@ static void DumpProfileLocked(const char* reason) {
|
| reinterpret_cast<char*>(ProfilerMalloc(kProfileBufferSize));
|
| }
|
|
|
| - if (deep_profile) {
|
| - deep_profile->DumpOrderedProfile(reason, global_profiler_buffer,
|
| - kProfileBufferSize, fd);
|
| - } else {
|
| - char* profile = DoGetHeapProfileLocked(global_profiler_buffer,
|
| - kProfileBufferSize);
|
| - RawWrite(fd, profile, strlen(profile));
|
| - }
|
| + char* profile =
|
| + DoGetHeapProfileLocked(global_profiler_buffer, kProfileBufferSize);
|
| + RawWrite(fd, profile, strlen(profile));
|
| RawClose(fd);
|
|
|
| -#if defined(TYPE_PROFILING)
|
| - if (FLAGS_heap_profile_type_statistics) {
|
| - snprintf(file_name, sizeof(file_name), "%s.%05d.%04d.type",
|
| - filename_prefix, getpid(), dump_count);
|
| - RAW_VLOG(0, "Dumping type statistics to %s", file_name);
|
| - heap_profile->DumpTypeStatistics(file_name);
|
| - }
|
| -#endif // defined(TYPE_PROFILING)
|
| -
|
| dumping = false;
|
| }
|
|
|
| @@ -529,14 +467,6 @@ extern "C" void HeapProfilerStart(const char* prefix) {
|
| high_water_mark = 0;
|
| last_dump_time = 0;
|
|
|
| - if (FLAGS_deep_heap_profile) {
|
| - // Initialize deep memory profiler
|
| - RAW_VLOG(0, "[%d] Starting a deep memory profiler", getpid());
|
| - deep_profile = new(ProfilerMalloc(sizeof(DeepHeapProfile)))
|
| - DeepHeapProfile(heap_profile, prefix, DeepHeapProfile::PageFrameType(
|
| - FLAGS_deep_heap_profile_pageframe));
|
| - }
|
| -
|
| // We do not reset dump_count so if the user does a sequence of
|
| // HeapProfilerStart/HeapProfileStop, we will get a continuous
|
| // sequence of profiles.
|
| @@ -598,13 +528,6 @@ extern "C" void HeapProfilerStop() {
|
| RAW_CHECK(MallocHook::RemoveMunmapHook(&MunmapHook), "");
|
| }
|
|
|
| - if (deep_profile) {
|
| - // free deep memory profiler
|
| - deep_profile->~DeepHeapProfile();
|
| - ProfilerFree(deep_profile);
|
| - deep_profile = NULL;
|
| - }
|
| -
|
| // free profile
|
| heap_profile->~HeapProfileTable();
|
| ProfilerFree(heap_profile);
|
|
|