Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(105)

Side by Side Diff: Source/wtf/RefCountedLeakCounter.cpp

Issue 1354443003: RefCountedLeakDetector: Remove unused methods for suppressing leaks (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: remove include too Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « Source/wtf/RefCountedLeakCounter.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2008 Apple Inc. All rights reserved. 2 * Copyright (C) 2008 Apple Inc. All rights reserved.
3 * 3 *
4 * This library is free software; you can redistribute it and/or 4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Library General Public 5 * modify it under the terms of the GNU Library General Public
6 * License as published by the Free Software Foundation; either 6 * License as published by the Free Software Foundation; either
7 * version 2 of the License, or (at your option) any later version. 7 * version 2 of the License, or (at your option) any later version.
8 * 8 *
9 * This library is distributed in the hope that it will be useful, 9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Library General Public License for more details. 12 * Library General Public License for more details.
13 * 13 *
14 * You should have received a copy of the GNU Library General Public License 14 * You should have received a copy of the GNU Library General Public License
15 * along with this library; see the file COPYING.LIB. If not, write to 15 * along with this library; see the file COPYING.LIB. If not, write to
16 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 16 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17 * Boston, MA 02110-1301, USA. 17 * Boston, MA 02110-1301, USA.
18 * 18 *
19 */ 19 */
20 20
21 #include "config.h" 21 #include "config.h"
22 #include "RefCountedLeakCounter.h" 22 #include "RefCountedLeakCounter.h"
23 #include "wtf/Assertions.h" 23 #include "wtf/Assertions.h"
24 24
25 #if ENABLE(ASSERT) 25 #if ENABLE(ASSERT)
26 #include "wtf/Atomics.h" 26 #include "wtf/Atomics.h"
27 #include "wtf/HashCountedSet.h"
28 #endif 27 #endif
29 28
30 namespace WTF { 29 namespace WTF {
31 30
32 #if !ENABLE(ASSERT) 31 #if !ENABLE(ASSERT)
33 32
34 void RefCountedLeakCounter::suppressMessages(const char*) { }
35 void RefCountedLeakCounter::cancelMessageSuppression(const char*) { }
36
37 RefCountedLeakCounter::RefCountedLeakCounter(const char*) { } 33 RefCountedLeakCounter::RefCountedLeakCounter(const char*) { }
38 RefCountedLeakCounter::~RefCountedLeakCounter() { } 34 RefCountedLeakCounter::~RefCountedLeakCounter() { }
39 35
40 void RefCountedLeakCounter::increment() { } 36 void RefCountedLeakCounter::increment() { }
41 void RefCountedLeakCounter::decrement() { } 37 void RefCountedLeakCounter::decrement() { }
42 38
43 #else 39 #else
44 40
45 #define LOG_CHANNEL_PREFIX Log 41 #define LOG_CHANNEL_PREFIX Log
46 static WTFLogChannel LogRefCountedLeaks = { WTFLogChannelOn }; 42 static WTFLogChannel LogRefCountedLeaks = { WTFLogChannelOn };
47 43
48 typedef HashCountedSet<const char*, PtrHash<const char*>> ReasonSet;
49 static ReasonSet* leakMessageSuppressionReasons;
50
51 void RefCountedLeakCounter::suppressMessages(const char* reason)
52 {
53 if (!leakMessageSuppressionReasons)
54 leakMessageSuppressionReasons = new ReasonSet;
55 leakMessageSuppressionReasons->add(reason);
56 }
57
58 void RefCountedLeakCounter::cancelMessageSuppression(const char* reason)
59 {
60 ASSERT(leakMessageSuppressionReasons);
61 ASSERT(leakMessageSuppressionReasons->contains(reason));
62 leakMessageSuppressionReasons->remove(reason);
63 }
64
65 RefCountedLeakCounter::RefCountedLeakCounter(const char* description) 44 RefCountedLeakCounter::RefCountedLeakCounter(const char* description)
66 : m_description(description) 45 : m_description(description)
67 { 46 {
68 } 47 }
69 48
70 RefCountedLeakCounter::~RefCountedLeakCounter() 49 RefCountedLeakCounter::~RefCountedLeakCounter()
71 { 50 {
72 static bool loggedSuppressionReason; 51 if (!m_count)
73 if (m_count) { 52 return;
74 if (!leakMessageSuppressionReasons || leakMessageSuppressionReasons->isE mpty()) 53
75 WTF_LOG(RefCountedLeaks, "LEAK: %u %s", m_count, m_description); 54 WTF_LOG(RefCountedLeaks, "LEAK: %u %s", m_count, m_description);
76 else if (!loggedSuppressionReason) {
77 // This logs only one reason. Later we could change it so we log all the reasons.
78 WTF_LOG(RefCountedLeaks, "No leak checking done: %s", leakMessageSup pressionReasons->begin()->key);
79 loggedSuppressionReason = true;
80 }
81 }
82 } 55 }
83 56
84 void RefCountedLeakCounter::increment() 57 void RefCountedLeakCounter::increment()
85 { 58 {
86 atomicIncrement(&m_count); 59 atomicIncrement(&m_count);
87 } 60 }
88 61
89 void RefCountedLeakCounter::decrement() 62 void RefCountedLeakCounter::decrement()
90 { 63 {
91 atomicDecrement(&m_count); 64 atomicDecrement(&m_count);
92 } 65 }
93 66
94 #endif 67 #endif
95 68
96 } // namespace WTF 69 } // namespace WTF
OLDNEW
« no previous file with comments | « Source/wtf/RefCountedLeakCounter.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698