Chromium Code Reviews| 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) { |