Index: third_party/tcmalloc/chromium/src/system-alloc.cc |
=================================================================== |
--- third_party/tcmalloc/chromium/src/system-alloc.cc (revision 110522) |
+++ third_party/tcmalloc/chromium/src/system-alloc.cc (working copy) |
@@ -103,10 +103,7 @@ |
static SpinLock spinlock(SpinLock::LINKER_INITIALIZED); |
-#if defined(HAVE_MMAP) || defined(MADV_DONTNEED) |
-// Page size is initialized on demand (only needed for mmap-based allocators) |
static size_t pagesize = 0; |
jar (doing other things)
2011/11/23 23:46:14
Per your verbal comment.... "you need a guard arou
jschuh
2011/11/24 00:05:26
Done.
|
-#endif |
// The current system allocator |
SysAllocator* sys_alloc = NULL; |
@@ -484,6 +481,18 @@ |
return result; |
} |
+size_t TCMalloc_SystemAddGuard(void* start) { |
+ if (pagesize == 0) pagesize = getpagesize(); |
jar (doing other things)
2011/11/23 23:46:14
You'll need a wrapper here to for getpagesize avai
jschuh
2011/11/24 00:05:26
Done.
|
+ |
+ if (reinterpret_cast<size_t>(start) % pagesize != 0) |
+ return 0; |
+ |
+ if (!mprotect(start, pagesize, PROT_NONE)) |
+ return pagesize; |
+ |
+ return 0; |
+} |
+ |
void TCMalloc_SystemRelease(void* start, size_t length) { |
#ifdef MADV_DONTNEED |
if (FLAGS_malloc_devmem_start) { |