summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorchappedm@gmail.com <chappedm@gmail.com@6b5cf1ce-ec42-a296-1ba9-69fdba395a50>2012-12-22 18:53:18 +0000
committerchappedm@gmail.com <chappedm@gmail.com@6b5cf1ce-ec42-a296-1ba9-69fdba395a50>2012-12-22 18:53:18 +0000
commit990889e6232ff3787f1d42d4091a0478ffb93988 (patch)
tree2ff328f2303511478d558a4fd9935871166e6d0a
parent3bf5f55d78769d2f8525626dd662457d2f014151 (diff)
downloadgperftools-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.cc9
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,