Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1)

Unified Diff: third_party/tcmalloc/chromium/src/heap-profiler.cc

Issue 7050034: Merge google-perftools r109 (the current contents of third_party/tcmalloc/vendor) (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/tcmalloc/chromium/src/heap-profiler.cc
===================================================================
--- third_party/tcmalloc/chromium/src/heap-profiler.cc (revision 88335)
+++ third_party/tcmalloc/chromium/src/heap-profiler.cc (working copy)
@@ -33,7 +33,7 @@
// TODO: Log large allocations
#include <config.h>
-
+#include <stddef.h>
#include <stdio.h>
#include <stdlib.h>
#ifdef HAVE_UNISTD_H
@@ -182,7 +182,6 @@
static void AddRemoveMMapDataLocked(AddOrRemove mode) {
RAW_DCHECK(heap_lock.IsHeld(), "");
if (!FLAGS_mmap_profile || !is_on) return;
- if (!FLAGS_mmap_log) MemoryRegionMap::CheckMallocHooks();
// MemoryRegionMap maintained all the data we need for all
// mmap-like allocations, so we just use it here:
MemoryRegionMap::LockHolder l;
@@ -210,6 +209,7 @@
int bytes_written = 0;
if (is_on) {
HeapProfileTable::Stats const stats = heap_profile->total();
+ (void)stats; // avoid an unused-variable warning in non-debug mode.
AddRemoveMMapDataLocked(ADD);
bytes_written = heap_profile->FillOrderedProfile(buf, buflen - 1);
// FillOrderedProfile should not reduce the set of active mmap-ed regions,
@@ -244,15 +244,6 @@
if (filename_prefix == NULL) return; // we do not yet need dumping
- if (FLAGS_only_mmap_profile == false) {
- if (MallocHook::GetNewHook() != NewHook ||
- MallocHook::GetDeleteHook() != DeleteHook) {
- RAW_LOG(FATAL, "Had our new/delete MallocHook-s replaced. "
- "Are you using another MallocHook client? "
- "Do not use --heap_profile=... to avoid this conflict.");
- }
- }
-
dumping = true;
// Make file name
@@ -371,12 +362,6 @@
}
#endif
-// Saved MemoryRegionMap's hooks to daisy-chain calls to.
-MallocHook::MmapHook saved_mmap_hook = NULL;
-MallocHook::MremapHook saved_mremap_hook = NULL;
-MallocHook::MunmapHook saved_munmap_hook = NULL;
-MallocHook::SbrkHook saved_sbrk_hook = NULL;
-
static void MmapHook(const void* result, const void* start, size_t size,
int prot, int flags, int fd, off_t offset) {
if (FLAGS_mmap_log) { // log it
@@ -392,11 +377,6 @@
DumpStackTrace(1, RawInfoStackDumper, NULL);
#endif
}
- if (saved_mmap_hook) {
- // Call MemoryRegionMap's hook: it will record needed info about the mmap
- // for us w/o deadlocks:
- (*saved_mmap_hook)(result, start, size, prot, flags, fd, offset);
- }
}
static void MremapHook(const void* result, const void* old_addr,
@@ -416,9 +396,6 @@
DumpStackTrace(1, RawInfoStackDumper, NULL);
#endif
}
- if (saved_mremap_hook) { // call MemoryRegionMap's hook
- (*saved_mremap_hook)(result, old_addr, old_size, new_size, flags, new_addr);
- }
}
static void MunmapHook(const void* ptr, size_t size) {
@@ -432,9 +409,6 @@
DumpStackTrace(1, RawInfoStackDumper, NULL);
#endif
}
- if (saved_munmap_hook) { // call MemoryRegionMap's hook
- (*saved_munmap_hook)(ptr, size);
- }
}
static void SbrkHook(const void* result, std::ptrdiff_t increment) {
@@ -445,9 +419,6 @@
DumpStackTrace(1, RawInfoStackDumper, NULL);
#endif
}
- if (saved_sbrk_hook) { // call MemoryRegionMap's hook
- (*saved_sbrk_hook)(result, increment);
- }
}
//----------------------------------------------------------------------
@@ -478,12 +449,11 @@
}
if (FLAGS_mmap_log) {
- // Install our hooks to do the logging
- // and maybe save MemoryRegionMap's hooks to call:
- saved_mmap_hook = MallocHook::SetMmapHook(MmapHook);
- saved_mremap_hook = MallocHook::SetMremapHook(MremapHook);
- saved_munmap_hook = MallocHook::SetMunmapHook(MunmapHook);
- saved_sbrk_hook = MallocHook::SetSbrkHook(SbrkHook);
+ // Install our hooks to do the logging:
+ RAW_CHECK(MallocHook::AddMmapHook(&MmapHook), "");
+ RAW_CHECK(MallocHook::AddMremapHook(&MremapHook), "");
+ RAW_CHECK(MallocHook::AddMunmapHook(&MunmapHook), "");
+ RAW_CHECK(MallocHook::AddSbrkHook(&SbrkHook), "");
}
heap_profiler_memory =
@@ -506,14 +476,9 @@
// sequence of profiles.
if (FLAGS_only_mmap_profile == false) {
- // Now set the hooks that capture new/delete and malloc/free
- // and check that these are the only hooks:
- if (MallocHook::SetNewHook(NewHook) != NULL ||
- MallocHook::SetDeleteHook(DeleteHook) != NULL) {
- RAW_LOG(FATAL, "Had other new/delete MallocHook-s set. "
- "Are you using the heap leak checker? "
- "Use --heap_check=\"\" to avoid this conflict.");
- }
+ // Now set the hooks that capture new/delete and malloc/free.
+ RAW_CHECK(MallocHook::AddNewHook(&NewHook), "");
+ RAW_CHECK(MallocHook::AddDeleteHook(&DeleteHook), "");
}
// Copy filename prefix
@@ -535,24 +500,16 @@
if (!is_on) return;
if (FLAGS_only_mmap_profile == false) {
- // Unset our new/delete hooks, checking they were the ones set:
- if (MallocHook::SetNewHook(NULL) != NewHook ||
- MallocHook::SetDeleteHook(NULL) != DeleteHook) {
- RAW_LOG(FATAL, "Had our new/delete MallocHook-s replaced. "
- "Are you using another MallocHook client? "
- "Do not use --heap_profile=... to avoid this conflict.");
- }
+ // Unset our new/delete hooks, checking they were set:
+ RAW_CHECK(MallocHook::RemoveNewHook(&NewHook), "");
+ RAW_CHECK(MallocHook::RemoveDeleteHook(&DeleteHook), "");
}
if (FLAGS_mmap_log) {
- // Restore mmap/sbrk hooks, checking that our hooks were the ones set:
- if (MallocHook::SetMmapHook(saved_mmap_hook) != MmapHook ||
- MallocHook::SetMremapHook(saved_mremap_hook) != MremapHook ||
- MallocHook::SetMunmapHook(saved_munmap_hook) != MunmapHook ||
- MallocHook::SetSbrkHook(saved_sbrk_hook) != SbrkHook) {
- RAW_LOG(FATAL, "Had our mmap/mremap/munmap/sbrk MallocHook-s replaced. "
- "Are you using another MallocHook client? "
- "Do not use --heap_profile=... to avoid this conflict.");
- }
+ // Restore mmap/sbrk hooks, checking that our hooks were set:
+ RAW_CHECK(MallocHook::RemoveMmapHook(&MmapHook), "");
+ RAW_CHECK(MallocHook::RemoveMremapHook(&MremapHook), "");
+ RAW_CHECK(MallocHook::RemoveSbrkHook(&SbrkHook), "");
+ RAW_CHECK(MallocHook::RemoveMunmapHook(&MunmapHook), "");
}
// free profile
« no previous file with comments | « third_party/tcmalloc/chromium/src/heap-profile-table.cc ('k') | third_party/tcmalloc/chromium/src/internal_logging.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698