| Index: src/core/SkVarAlloc.cpp
|
| diff --git a/src/core/SkVarAlloc.cpp b/src/core/SkVarAlloc.cpp
|
| index 6f5b5a18d3a16427a9d6c7b49bfb1bbfa1f53b24..8f84b95743e5ba54d80b39ec34c0c7c2b4f1c502 100644
|
| --- a/src/core/SkVarAlloc.cpp
|
| +++ b/src/core/SkVarAlloc.cpp
|
| @@ -3,7 +3,7 @@
|
| // We use non-standard malloc diagnostic methods to make sure our allocations are sized well.
|
| #if defined(SK_BUILD_FOR_MAC)
|
| #include <malloc/malloc.h>
|
| -#elif defined(SK_BUILD_FOR_LINUX)
|
| +#elif defined(SK_BUILD_FOR_UNIX) || defined(SK_BUILD_FOR_WIN32)
|
| #include <malloc.h>
|
| #endif
|
|
|
| @@ -56,7 +56,28 @@ void SkVarAlloc::makeSpace(size_t bytes, unsigned flags) {
|
|
|
| #if defined(SK_BUILD_FOR_MAC)
|
| SkASSERT(alloc == malloc_good_size(alloc));
|
| -#elif defined(SK_BUILD_FOR_LINUX)
|
| - SkASSERT(alloc == malloc_usable_size(fByte - sizeof(Block)));
|
| +#elif defined(SK_BUILD_FOR_UNIX)
|
| + // TODO(mtklein): tune so we can assert something like this
|
| + //SkASSERT(alloc == malloc_usable_size(fBlock));
|
| #endif
|
| }
|
| +
|
| +static size_t heap_size(void* p) {
|
| +#if defined(SK_BUILD_FOR_MAC)
|
| + return malloc_size(p);
|
| +#elif defined(SK_BUILD_FOR_UNIX)
|
| + return malloc_usable_size(p);
|
| +#elif defined(SK_BUILD_FOR_WIN32)
|
| + return _msize(p);
|
| +#else
|
| + return 0; // Tough luck.
|
| +#endif
|
| +}
|
| +
|
| +size_t SkVarAlloc::approxBytesAllocated() const {
|
| + size_t sum = 0;
|
| + for (Block* b = fBlock; b; b = b->prev) {
|
| + sum += heap_size(b);
|
| + }
|
| + return sum;
|
| +}
|
|
|