diff options
author | willchan@chromium.org <willchan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-11-11 21:58:28 +0000 |
---|---|---|
committer | willchan@chromium.org <willchan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-11-11 21:58:28 +0000 |
commit | 5ca2744311af9962130fa27d2dd2c4ad869d7504 (patch) | |
tree | ada11b42e8d889afa05f07093bbaa61bbf475a0f /base | |
parent | 14e101c0ac5dbf5863ffa0cb38609353eae6d089 (diff) | |
download | chromium_src-5ca2744311af9962130fa27d2dd2c4ad869d7504.zip chromium_src-5ca2744311af9962130fa27d2dd2c4ad869d7504.tar.gz chromium_src-5ca2744311af9962130fa27d2dd2c4ad869d7504.tar.bz2 |
Implement the memory leak annotations for heap leak checker.
leak_annotations.h provides the ANNOTATE_SCOPED_MEMORY_LEAK macro
that can be used for annotating known memory leaks in the tests.
Those will be ignored by the heap leak checker.
Patch contributed by ramosian.glider@gmail.com.
Original review at http://codereview.chromium.org/346038/show
Review URL: http://codereview.chromium.org/385049
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@31721 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base')
-rw-r--r-- | base/DEPS | 1 | ||||
-rw-r--r-- | base/base.gyp | 26 | ||||
-rw-r--r-- | base/leak_annotations.h | 25 |
3 files changed, 51 insertions, 1 deletions
@@ -1,6 +1,7 @@ include_rules = [ "+third_party/libevent", "+third_party/dmg_fp", + "+third_party/tcmalloc", # Testing stuff shouldn't be used by the general base code. "-base/test", diff --git a/base/base.gyp b/base/base.gyp index 52ffe09..bcb88f6 100644 --- a/base/base.gyp +++ b/base/base.gyp @@ -164,6 +164,7 @@ 'keyboard_codes_posix.h', 'lazy_instance.cc', 'lazy_instance.h', + 'leak_annotations.h', 'leak_tracker.h', 'linked_list.h', 'linked_ptr.h', @@ -378,15 +379,38 @@ [ 'OS == "linux" or OS == "freebsd"', { 'sources/': [ ['exclude', '_(mac|win|chromeos)\\.cc$'], ['exclude', '\\.mm?$' ] ], + 'variables' : { + 'linux_use_heapchecker%' : 0, + }, 'conditions': [ [ 'chromeos==1 or toolkit_views==1', { 'sources/': [ ['include', '_chromeos\\.cc$'] ] }, ], - [ 'linux_use_tcmalloc==1', { + [ 'linux_use_heapchecker==1', { + 'defines': [ + 'LINUX_USE_HEAPCHECKER', + ], + 'direct_dependent_settings': { + 'defines': [ + 'LINUX_USE_HEAPCHECKER', + ], + }, + }, + ], + # linux_use_heapchecker==1 implies linux_use_tcmalloc=1. + [ 'linux_use_tcmalloc==1 or linux_use_heapchecker==1', { 'dependencies': [ '../third_party/tcmalloc/tcmalloc.gyp:tcmalloc', ], + 'defines': [ + 'LINUX_USE_TCMALLOC', + ], + 'direct_dependent_settings': { + 'defines': [ + 'LINUX_USE_TCMALLOC', + ], + }, }, ], ], diff --git a/base/leak_annotations.h b/base/leak_annotations.h new file mode 100644 index 0000000..aa57dff --- /dev/null +++ b/base/leak_annotations.h @@ -0,0 +1,25 @@ +// Copyright (c) 2006-2009 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. + +#ifndef BASE_LEAK_ANNOTATIONS_H_ +#define BASE_LEAK_ANNOTATIONS_H_ + +#if defined(LINUX_USE_TCMALLOC) && defined(LINUX_USE_HEAPCHECKER) + +#include "third_party/tcmalloc/heap-checker.h" + +// Annotate a program scope as having memory leaks. Tcmalloc's heap leak +// checker will ignore them. Note that these annotations may mask real bugs +// and should not be used in the production code. +#define ANNOTATE_SCOPED_MEMORY_LEAK \ + HeapLeakChecker::Disabler heap_leak_checker_disabler + +#else + +// If tcmalloc is not used, the annotations should be no-ops. +#define ANNOTATE_SCOPED_MEMORY_LEAK + +#endif + +#endif // BASE_LEAK_ANNOTATIONS_H_ |