Index: third_party/tcmalloc/chromium/src/memory_region_map.cc |
=================================================================== |
--- third_party/tcmalloc/chromium/src/memory_region_map.cc (revision 88335) |
+++ third_party/tcmalloc/chromium/src/memory_region_map.cc (working copy) |
@@ -111,13 +111,13 @@ |
#ifdef HAVE_PTHREAD |
#include <pthread.h> // for pthread_t, pthread_self() |
#endif |
+#include <stddef.h> |
#include <algorithm> |
#include <set> |
#include "memory_region_map.h" |
-#include "base/linux_syscall_support.h" |
#include "base/logging.h" |
#include "base/low_level_alloc.h" |
#include "malloc_hook-inl.h" |
@@ -195,15 +195,11 @@ |
RAW_VLOG(10, "MemoryRegionMap Init increment done"); |
return; |
} |
- // Set our hooks and make sure no other hooks existed: |
- if (MallocHook::SetMmapHook(MmapHook) != NULL || |
- MallocHook::SetMremapHook(MremapHook) != NULL || |
- MallocHook::SetSbrkHook(SbrkHook) != NULL || |
- MallocHook::SetMunmapHook(MunmapHook) != NULL) { |
- RAW_LOG(FATAL, "Had other mmap/mremap/munmap/sbrk MallocHook-s set. " |
- "Make sure only one of MemoryRegionMap and the other " |
- "client is active."); |
- } |
+ // Set our hooks and make sure they were installed: |
+ RAW_CHECK(MallocHook::AddMmapHook(&MmapHook), ""); |
+ RAW_CHECK(MallocHook::AddMremapHook(&MremapHook), ""); |
+ RAW_CHECK(MallocHook::AddSbrkHook(&SbrkHook), ""); |
+ RAW_CHECK(MallocHook::AddMunmapHook(&MunmapHook), ""); |
// We need to set recursive_insert since the NewArena call itself |
// will already do some allocations with mmap which our hooks will catch |
// recursive_insert allows us to buffer info about these mmap calls. |
@@ -230,11 +226,10 @@ |
RAW_VLOG(10, "MemoryRegionMap Shutdown decrement done"); |
return true; |
} |
- CheckMallocHooks(); // we assume no other hooks |
- MallocHook::SetMmapHook(NULL); |
- MallocHook::SetMremapHook(NULL); |
- MallocHook::SetSbrkHook(NULL); |
- MallocHook::SetMunmapHook(NULL); |
+ RAW_CHECK(MallocHook::RemoveMmapHook(&MmapHook), ""); |
+ RAW_CHECK(MallocHook::RemoveMremapHook(&MremapHook), ""); |
+ RAW_CHECK(MallocHook::RemoveSbrkHook(&SbrkHook), ""); |
+ RAW_CHECK(MallocHook::RemoveMunmapHook(&MunmapHook), ""); |
if (regions_) regions_->~RegionSet(); |
regions_ = NULL; |
bool deleted_arena = LowLevelAlloc::DeleteArena(arena_); |
@@ -248,15 +243,6 @@ |
return deleted_arena; |
} |
-void MemoryRegionMap::CheckMallocHooks() { |
- if (MallocHook::GetMmapHook() != MmapHook || |
- MallocHook::GetMunmapHook() != MunmapHook || |
- MallocHook::GetMremapHook() != MremapHook || |
- MallocHook::GetSbrkHook() != SbrkHook) { |
- RAW_LOG(FATAL, "Our mmap/mremap/munmap/sbrk MallocHook-s got changed."); |
- } |
-} |
- |
// Invariants (once libpthread_initialized is true): |
// * While lock_ is not held, recursion_count_ is 0 (and |
// lock_owner_tid_ is the previous owner, but we don't rely on |