| Index: third_party/tcmalloc/chromium/src/page_heap.h
|
| diff --git a/third_party/tcmalloc/chromium/src/page_heap.h b/third_party/tcmalloc/chromium/src/page_heap.h
|
| index 603e65a09dcec86f7a1fd773b5f2e80976100242..ab7a5414bb71c66129b2ae1f48d604171660ac07 100644
|
| --- a/third_party/tcmalloc/chromium/src/page_heap.h
|
| +++ b/third_party/tcmalloc/chromium/src/page_heap.h
|
| @@ -76,6 +76,8 @@ namespace tcmalloc {
|
| // -------------------------------------------------------------------------
|
|
|
| // We use PageMap2<> for 32-bit and PageMap3<> for 64-bit machines.
|
| +// ...except...
|
| +// On Windows, we use TCMalloc_PageMap1_LazyCommit<> for 32-bit machines.
|
| // We also use a simple one-level cache for hot PageID-to-sizeclass mappings,
|
| // because sometimes the sizeclass is all the information we need.
|
|
|
| @@ -89,7 +91,13 @@ template <int BITS> class MapSelector {
|
| // A two-level map for 32-bit machines
|
| template <> class MapSelector<32> {
|
| public:
|
| +#ifdef WIN32
|
| +// A flat map for 32-bit machines (with lazy commit of memory).
|
| + typedef TCMalloc_PageMap1_LazyCommit<32-kPageShift> Type;
|
| +#else
|
| + // A two-level map for 32-bit machines
|
| typedef TCMalloc_PageMap2<32-kPageShift> Type;
|
| +#endif
|
| typedef PackedCache<32-kPageShift, uint16_t> CacheType;
|
| };
|
|
|
| @@ -150,6 +158,8 @@ class PERFTOOLS_DLL_DECL PageHeap {
|
| uint64_t system_bytes; // Total bytes allocated from system
|
| uint64_t free_bytes; // Total bytes on normal freelists
|
| uint64_t unmapped_bytes; // Total bytes on returned freelists
|
| + uint64_t committed_bytes; // Bytes committed, always <= system_bytes_.
|
| +
|
| };
|
| inline Stats stats() const { return stats_; }
|
| void GetClassSizes(int64 class_sizes_normal[kMaxPages],
|
| @@ -198,11 +208,13 @@ class PERFTOOLS_DLL_DECL PageHeap {
|
| // Never delay scavenging for more than the following number of
|
| // deallocated pages. With 4K pages, this comes to 4GB of
|
| // deallocation.
|
| - static const int kMaxReleaseDelay = 1 << 20;
|
| + // Chrome: Changed to 64MB
|
| + static const int kMaxReleaseDelay = 1 << 14;
|
|
|
| // If there is nothing to release, wait for so many pages before
|
| // scavenging again. With 4K pages, this comes to 1GB of memory.
|
| - static const int kDefaultReleaseDelay = 1 << 18;
|
| + // Chrome: Changed to 16MB
|
| + static const int kDefaultReleaseDelay = 1 << 12;
|
|
|
| // Pick the appropriate map and cache types based on pointer size
|
| typedef MapSelector<kAddressBits>::Type PageMap;
|
| @@ -226,7 +238,6 @@ class PERFTOOLS_DLL_DECL PageHeap {
|
|
|
| // Statistics on system, free, and unmapped bytes
|
| Stats stats_;
|
| -
|
| Span* SearchFreeAndLargeLists(Length n);
|
|
|
| bool GrowHeap(Length n);
|
| @@ -255,6 +266,12 @@ class PERFTOOLS_DLL_DECL PageHeap {
|
| // appropriate free list, and adjust stats.
|
| void MergeIntoFreeList(Span* span);
|
|
|
| + // Commit the span.
|
| + void CommitSpan(Span* span);
|
| +
|
| + // Decommit the span.
|
| + void DecommitSpan(Span* span);
|
| +
|
| // Prepends span to appropriate free list, and adjusts stats.
|
| void PrependToFreeList(Span* span);
|
|
|
|
|