diff options
author | phajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-11-07 23:33:43 +0000 |
---|---|---|
committer | phajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-11-07 23:33:43 +0000 |
commit | e1bc6c35121a7dd50d6cde85f15a4794bd8efec1 (patch) | |
tree | 0d163c02f37df8d2367b64de0de5200aba7c807c /base | |
parent | c5e288381ef30a847e5458b82c80a9d1a4db2126 (diff) | |
download | chromium_src-e1bc6c35121a7dd50d6cde85f15a4794bd8efec1.zip chromium_src-e1bc6c35121a7dd50d6cde85f15a4794bd8efec1.tar.gz chromium_src-e1bc6c35121a7dd50d6cde85f15a4794bd8efec1.tar.bz2 |
Use tcmalloc's debugallocation for Debug builds
to catch memory problems early, easily, and cleanly.
Because of gyp limitations, this can't be now controlled
by a flag.
BUG=30715
TEST=none
Review URL: https://codereview.chromium.org/11266019
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@166547 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base')
-rw-r--r-- | base/allocator/allocator.gyp | 39 | ||||
-rw-r--r-- | base/allocator/allocator_shim.cc | 2 | ||||
-rw-r--r-- | base/allocator/debugallocation_shim.cc | 9 |
3 files changed, 31 insertions, 19 deletions
diff --git a/base/allocator/allocator.gyp b/base/allocator/allocator.gyp index f669298..fc4b902 100644 --- a/base/allocator/allocator.gyp +++ b/base/allocator/allocator.gyp @@ -203,6 +203,7 @@ 'allocator_shim.cc', 'allocator_shim.h', + 'debugallocation_shim.cc', 'generic_allocators.cc', 'win_allocator.cc', ], @@ -212,6 +213,10 @@ 'generic_allocators.cc', 'win_allocator.cc', + # Included by debugallocation_shim.cc. + '<(tcmalloc_dir)/src/debugallocation.cc', + '<(tcmalloc_dir)/src/tcmalloc.cc', + # We simply don't use these, but list them above so that IDE # users can view the full available source for reference, etc. '<(tcmalloc_dir)/src/addressmap-inl.h', @@ -300,6 +305,21 @@ 'RuntimeLibrary': '0', }, }, + 'variables': { + # Provide a way to force disable debugallocation in Debug builds, + # e.g. for profiling (it's more rare to profile Debug builds, + # but people sometimes need to do that). + 'disable_debugallocation%': 0, + }, + 'conditions': [ + ['disable_debugallocation==0', { + 'defines': [ + # Use debugallocation for Debug builds to catch problems early + # and cleanly, http://crbug.com/30715 . + 'TCMALLOC_FOR_DEBUGALLOCATION', + ], + }], + ], }, }, 'conditions': [ @@ -346,7 +366,7 @@ '<(tcmalloc_dir)/src/system-alloc.h', # included by allocator_shim.cc - '<(tcmalloc_dir)/src/tcmalloc.cc', + 'debugallocation_shim.cc', # heap-profiler/checker/cpuprofiler '<(tcmalloc_dir)/src/base/thread_lister.c', @@ -365,9 +385,6 @@ '<(tcmalloc_dir)/src/profile-handler.cc', '<(tcmalloc_dir)/src/profile-handler.h', '<(tcmalloc_dir)/src/profiler.cc', - - # debugallocation - '<(tcmalloc_dir)/src/debugallocation.cc', ], }], ['OS=="linux" or OS=="freebsd" or OS=="solaris"', { @@ -414,20 +431,6 @@ '-fvtable-verify=preinit', ], }], - [ 'linux_use_debugallocation==1', { - 'sources!': [ - # debugallocation.cc #includes tcmalloc.cc, - # so only one of them should be used. - '<(tcmalloc_dir)/src/tcmalloc.cc', - ], - 'defines': [ - 'TCMALLOC_FOR_DEBUGALLOCATION', - ], - }, { # linux_use_debugallocation != 1 - 'sources!': [ - '<(tcmalloc_dir)/src/debugallocation.cc', - ], - }], [ 'linux_keep_shadow_stacks==1', { 'sources': [ '<(tcmalloc_dir)/src/linux_shadow_stacks.cc', diff --git a/base/allocator/allocator_shim.cc b/base/allocator/allocator_shim.cc index bcc84aa..5acc533 100644 --- a/base/allocator/allocator_shim.cc +++ b/base/allocator/allocator_shim.cc @@ -56,7 +56,7 @@ static const char secondary_name[] = "CHROME_ALLOCATOR_2"; // We include tcmalloc and the win_allocator to get as much inlining as // possible. -#include "tcmalloc.cc" +#include "debugallocation_shim.cc" #include "win_allocator.cc" // Forward declarations from jemalloc. diff --git a/base/allocator/debugallocation_shim.cc b/base/allocator/debugallocation_shim.cc new file mode 100644 index 0000000..d1cf52a --- /dev/null +++ b/base/allocator/debugallocation_shim.cc @@ -0,0 +1,9 @@ +// Copyright (c) 2012 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#if defined(TCMALLOC_FOR_DEBUGALLOCATION) +#include "third_party/tcmalloc/chromium/src/debugallocation.cc" +#else +#include "third_party/tcmalloc/chromium/src/tcmalloc.cc" +#endif |