| Index: third_party/tcmalloc/chromium/src/page_heap.h
|
| ===================================================================
|
| --- third_party/tcmalloc/chromium/src/page_heap.h (revision 88335)
|
| +++ third_party/tcmalloc/chromium/src/page_heap.h (working copy)
|
| @@ -34,7 +34,12 @@
|
| #define TCMALLOC_PAGE_HEAP_H_
|
|
|
| #include <config.h>
|
| +#include <stddef.h> // for size_t
|
| +#ifdef HAVE_STDINT_H
|
| +#include <stdint.h> // for uint64_t, int64_t, uint16_t
|
| +#endif
|
| #include <google/malloc_extension.h>
|
| +#include "base/basictypes.h"
|
| #include "common.h"
|
| #include "packed-cache-inl.h"
|
| #include "pagemap.h"
|
| @@ -50,6 +55,8 @@
|
|
|
| // This #ifdef should almost never be set. Set NO_TCMALLOC_SAMPLES if
|
| // you're porting to a system where you really can't get a stacktrace.
|
| +// Because we control the definition of GetStackTrace, all clients of
|
| +// GetStackTrace should #include us rather than stacktrace.h.
|
| #ifdef NO_TCMALLOC_SAMPLES
|
| // We use #define so code compiles even if you #include stacktrace.h somehow.
|
| # define GetStackTrace(stack, depth, skip) (0)
|
| @@ -57,6 +64,11 @@
|
| # include <google/stacktrace.h>
|
| #endif
|
|
|
| +class TCMalloc_Printer;
|
| +namespace base {
|
| +struct MallocRange;
|
| +}
|
| +
|
| namespace tcmalloc {
|
|
|
| // -------------------------------------------------------------------------
|
| @@ -150,6 +162,10 @@
|
|
|
| };
|
| inline Stats stats() const { return stats_; }
|
| + void GetClassSizes(int64 class_sizes_normal[kMaxPages],
|
| + int64 class_sizes_returned[kMaxPages],
|
| + int64* normal_pages_in_spans,
|
| + int64* returned_pages_in_spans);
|
|
|
| bool Check();
|
| // Like Check() but does some more comprehensive checking.
|
| @@ -186,12 +202,9 @@
|
| // should keep this value big because various incarnations of Linux
|
| // have small limits on the number of mmap() regions per
|
| // address-space.
|
| - static const int kMinSystemAlloc = 1 << (20 - kPageShift);
|
| + // REQUIRED: kMinSystemAlloc <= kMaxPages;
|
| + static const int kMinSystemAlloc = kMaxPages;
|
|
|
| - // For all span-lengths < kMaxPages we keep an exact-size list.
|
| - // REQUIRED: kMaxPages >= kMinSystemAlloc;
|
| - static const size_t kMaxPages = kMinSystemAlloc;
|
| -
|
| // Never delay scavenging for more than the following number of
|
| // deallocated pages. With 4K pages, this comes to 4GB of
|
| // deallocation.
|
| @@ -204,8 +217,8 @@
|
| static const int kDefaultReleaseDelay = 1 << 12;
|
|
|
| // Pick the appropriate map and cache types based on pointer size
|
| - typedef MapSelector<8*sizeof(uintptr_t)>::Type PageMap;
|
| - typedef MapSelector<8*sizeof(uintptr_t)>::CacheType PageMapCache;
|
| + typedef MapSelector<kAddressBits>::Type PageMap;
|
| + typedef MapSelector<kAddressBits>::CacheType PageMapCache;
|
| PageMap pagemap_;
|
| mutable PageMapCache pagemap_cache_;
|
|
|
| @@ -225,6 +238,8 @@
|
|
|
| // Statistics on system, free, and unmapped bytes
|
| Stats stats_;
|
| + Span* SearchFreeAndLargeLists(Length n);
|
| +
|
| bool GrowHeap(Length n);
|
|
|
| // REQUIRES: span->length >= n
|
|
|