| Index: include/core/SkInstCnt.h
|
| diff --git a/include/core/SkInstCnt.h b/include/core/SkInstCnt.h
|
| deleted file mode 100644
|
| index 4ff44b5e3c8dbce849d05f3d46c9e4b0f538143d..0000000000000000000000000000000000000000
|
| --- a/include/core/SkInstCnt.h
|
| +++ /dev/null
|
| @@ -1,82 +0,0 @@
|
| -/*
|
| - * Copyright 2012 Google Inc.
|
| - *
|
| - * Use of this source code is governed by a BSD-style license that can be
|
| - * found in the LICENSE file.
|
| - */
|
| -
|
| -#ifndef SkInstCnt_DEFINED
|
| -#define SkInstCnt_DEFINED
|
| -
|
| -/* To count all instances of T, including all subclasses of T,
|
| - * add SK_DECLARE_INST_COUNT(T) to T's class definition.
|
| - * If you want to print out counts of leaked instances, set gPrintInstCount to true in main().
|
| - *
|
| - * E.g.
|
| - * struct Base { SK_DECLARE_INST_COUNT(Base) };
|
| - * struct A : public Base {};
|
| - * struct SubBase : public Base { SK_DECLARE_INST_COUNT(SubBase); }
|
| - * struct B : public SubBase {};
|
| - *
|
| - * If gPrintInstCount is true, at the program exit you will see something like:
|
| - * Base: <N> leaked instances
|
| - * SubBase: <M> leaked instances
|
| - * where N >= M. Leaked instances of A count against Base; leaked instances of B count against
|
| - * both SubBase and Base.
|
| - *
|
| - * If SK_ENABLE_INST_COUNT is not defined or defined to 0, or we're in a shared library build,
|
| - * this entire system is compiled away to a noop.
|
| - */
|
| -
|
| -#include "SkTypes.h"
|
| -
|
| -#if SK_ENABLE_INST_COUNT && !defined(SKIA_DLL) // See skia:2058 for why we noop on shared builds.
|
| - #include "SkThread.h"
|
| - #include <stdlib.h>
|
| -
|
| - #define SK_DECLARE_INST_COUNT(T) \
|
| - static const char* InstCountClassName() { return #T; } \
|
| - SkInstCount<T, T::InstCountClassName> fInstCnt; \
|
| - static int32_t GetInstanceCount() { return SkInstCount<T, InstCountClassName>::Count(); }
|
| -
|
| - extern bool gPrintInstCount;
|
| -
|
| - template <typename T, const char*(Name)()>
|
| - class SkInstCount {
|
| - public:
|
| - SkInstCount() { Inc(); }
|
| - SkInstCount(const SkInstCount&) { Inc(); }
|
| - ~SkInstCount() { sk_atomic_dec(&gCount); }
|
| -
|
| - SkInstCount& operator==(const SkInstCount&) { return *this; } // == can't change the count.
|
| -
|
| - static void Inc() {
|
| - // If it's the first time we go from 0 to 1, register to print leaks at process exit.
|
| - if (0 == sk_atomic_inc(&gCount) && sk_atomic_cas(&gRegistered, 0, 1)) {
|
| - atexit(PrintAtExit);
|
| - }
|
| - }
|
| -
|
| - static void PrintAtExit() {
|
| - int32_t leaks = Count();
|
| - if (gPrintInstCount && leaks > 0) {
|
| - SkDebugf("Leaked %s: %d\n", Name(), leaks);
|
| - }
|
| - }
|
| -
|
| - // FIXME: Used publicly by unit tests. Seems like a bad idea in a DM world.
|
| - static int32_t Count() { return sk_acquire_load(&gCount); }
|
| -
|
| - private:
|
| - static int32_t gCount, gRegistered;
|
| - };
|
| - // As template values, these will be deduplicated. (No one-definition rule problems.)
|
| - template <typename T, const char*(Name)()> int32_t SkInstCount<T, Name>::gCount = 0;
|
| - template <typename T, const char*(Name)()> int32_t SkInstCount<T, Name>::gRegistered = 0;
|
| -#else
|
| - #define SK_DECLARE_INST_COUNT(T)
|
| -#endif
|
| -
|
| -void SkInstCountPrintLeaksOnExit();
|
| -
|
| -#endif // SkInstCnt_DEFINED
|
|
|