diff options
author | Nicolas Roard <nicolas@android.com> | 2011-01-30 15:34:46 -0800 |
---|---|---|
committer | Nicolas Roard <nicolas@android.com> | 2011-01-30 17:11:52 -0800 |
commit | da44133fe92ec11fa6b904c498e7e5cd23a43cbf (patch) | |
tree | 9fb27831c884476be59161bd16fd0427412a1865 /WebCore/platform/graphics/android/ClassTracker.cpp | |
parent | 49e6e531daf99d2349caab00380648b689e7c1dc (diff) | |
download | external_webkit-da44133fe92ec11fa6b904c498e7e5cd23a43cbf.zip external_webkit-da44133fe92ec11fa6b904c498e7e5cd23a43cbf.tar.gz external_webkit-da44133fe92ec11fa6b904c498e7e5cd23a43cbf.tar.bz2 |
Add a ClassTracker class to more easily track leaks
bug:3376517
Change-Id: Ieb419bc3140963ccbda3e2f130778ec53b2920aa
Diffstat (limited to 'WebCore/platform/graphics/android/ClassTracker.cpp')
-rw-r--r-- | WebCore/platform/graphics/android/ClassTracker.cpp | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/WebCore/platform/graphics/android/ClassTracker.cpp b/WebCore/platform/graphics/android/ClassTracker.cpp new file mode 100644 index 0000000..ad2b4dd --- /dev/null +++ b/WebCore/platform/graphics/android/ClassTracker.cpp @@ -0,0 +1,74 @@ +/* + * Copyright 2010, The Android Open Source Project + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "config.h" +#include "ClassTracker.h" + +#include <cutils/log.h> +#include <wtf/CurrentTime.h> +#include <wtf/text/CString.h> + +#undef XLOG +#define XLOG(...) android_printLog(ANDROID_LOG_DEBUG, "ClassTracker", __VA_ARGS__) + +namespace WebCore { + +ClassTracker* ClassTracker::instance() +{ + if (!gInstance) + gInstance = new ClassTracker(); + return gInstance; +} + +ClassTracker* ClassTracker::gInstance = 0; + +void ClassTracker::increment(String name) +{ + int value = 0; + if (m_classes.contains(name)) + value = m_classes.get(name); + + m_classes.set(name, value + 1); +} + +void ClassTracker::decrement(String name) +{ + int value = 0; + if (m_classes.contains(name)) + value = m_classes.get(name); + + m_classes.set(name, value - 1); +} + +void ClassTracker::show() +{ + XLOG("*** Tracking %d classes ***", m_classes.size()); + for (HashMap<String, int>::iterator iter = m_classes.begin(); iter != m_classes.end(); ++iter) { + XLOG("class %s has %d instances", + iter->first.latin1().data(), iter->second); + } +} + +} // namespace WebCore |