diff options
author | chappedm@gmail.com <chappedm@gmail.com@6b5cf1ce-ec42-a296-1ba9-69fdba395a50> | 2012-12-22 18:53:18 +0000 |
---|---|---|
committer | chappedm@gmail.com <chappedm@gmail.com@6b5cf1ce-ec42-a296-1ba9-69fdba395a50> | 2012-12-22 18:53:18 +0000 |
commit | 990889e6232ff3787f1d42d4091a0478ffb93988 (patch) | |
tree | 2ff328f2303511478d558a4fd9935871166e6d0a | |
parent | 3bf5f55d78769d2f8525626dd662457d2f014151 (diff) | |
download | gperftools-990889e6232ff3787f1d42d4091a0478ffb93988.tar.gz |
issue-470: Allows the default system allocator to be overidden
This is useful when you run into cases where you need an allocator
before tcmalloc has been fully initialized.
git-svn-id: http://gperftools.googlecode.com/svn/trunk@186 6b5cf1ce-ec42-a296-1ba9-69fdba395a50
-rw-r--r-- | src/system-alloc.cc | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/system-alloc.cc b/src/system-alloc.cc index e380d16..b6a87dd 100644 --- a/src/system-alloc.cc +++ b/src/system-alloc.cc @@ -449,6 +449,12 @@ void* DefaultSysAllocator::Alloc(size_t size, size_t *actual_size, return NULL; } +ATTRIBUTE_WEAK ATTRIBUTE_NOINLINE +SysAllocator *tc_get_sysalloc_override(SysAllocator *def) +{ + return def; +} + static bool system_alloc_inited = false; void InitSystemAllocators(void) { MmapSysAllocator *mmap = new (mmap_space) MmapSysAllocator(); @@ -469,7 +475,8 @@ void InitSystemAllocators(void) { sdef->SetChildAllocator(sbrk, 0, sbrk_name); sdef->SetChildAllocator(mmap, 1, mmap_name); } - sys_alloc = sdef; + + sys_alloc = tc_get_sysalloc_override(sdef); } void* TCMalloc_SystemAlloc(size_t size, size_t *actual_size, |