aboutsummaryrefslogtreecommitdiffstats
path: root/community/chromium/no-mallinfo.patch
diff options
context:
space:
mode:
Diffstat (limited to 'community/chromium/no-mallinfo.patch')
-rw-r--r--community/chromium/no-mallinfo.patch63
1 files changed, 63 insertions, 0 deletions
diff --git a/community/chromium/no-mallinfo.patch b/community/chromium/no-mallinfo.patch
index 3ea66e475d..ceaf009295 100644
--- a/community/chromium/no-mallinfo.patch
+++ b/community/chromium/no-mallinfo.patch
@@ -20,3 +20,66 @@
size_t GetMemoryUsageKB() {
struct mallinfo minfo = mallinfo();
uint64_t mem_usage =
+diff --git a/content/renderer/render_thread_impl.cc b/content/renderer/render_thread_impl.cc
+index d569350..6edcffe 100644
+--- content/renderer/render_thread_impl.cc
++++ content/renderer/render_thread_impl.cc
+@@ -1821,6 +1821,49 @@ static size_t GetMallocUsage() {
+ }
+
+ } // namespace
++#elif defined(OS_LINUX) && !defined(__GLIBC__)
++namespace {
++
++static size_t GetMallocUsage() {
++ char *line=NULL;
++ size_t n,usage=0;
++ FILE *f = fopen("/proc/self/maps", "r");
++ char *path, *perm;
++ if (f == NULL) {
++ perror("/proc/self/maps");
++ return 0;
++ }
++ path = (char *)malloc(PATH_MAX+16);
++ if (path == NULL)
++ goto out;
++ perm = path + PATH_MAX;
++
++ while (getline(&line, &n, f) >=0) {
++ size_t start,end,offset,inode;
++ int devmaj, devmin, items;
++
++ items = sscanf(line, "%zx-%zx %s %zx %x:%x %zu %s",
++ &start, &end, perm, &offset,
++ &devmaj, &devmin, &inode, path);
++
++ if (items < 7)
++ continue;
++
++ if (items < 8)
++ path[0] = '\0';
++
++ if ((strcmp(perm, "rw-p") == 0 && devmaj+devmin == 0)
++ && (path[0] == '\0' || strcmp(path, "[heap]") == 0))
++ usage += end-start;
++ }
++ free(line);
++ free(path);
++out:
++ fclose(f);
++ return usage;
++}
++
++} // namespace
+ #endif
+
+ // TODO(tasak): Once it is possible to use memory-infra without tracing,
+@@ -1839,7 +1882,7 @@ void RenderThreadImpl::RecordPurgeAndSuspendMetrics() const {
+ blink_stats.partitionAllocTotalAllocatedBytes / 1024);
+ UMA_HISTOGRAM_MEMORY_KB("PurgeAndSuspend.Memory.BlinkGCKB",
+ blink_stats.blinkGCTotalAllocatedBytes / 1024);
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if (defined(OS_LINUX) && defined(__GLIBC__)) || defined(OS_ANDROID)
+ struct mallinfo minfo = mallinfo();
+ #if defined(USE_TCMALLOC)
+ size_t malloc_usage = minfo.uordblks;