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 ab7a5414bb71c66129b2ae1f48d604171660ac07..19c143104fff4739adcdd52bd9e962e5021014e7 100644 |
--- a/third_party/tcmalloc/chromium/src/page_heap.h |
+++ b/third_party/tcmalloc/chromium/src/page_heap.h |
@@ -64,7 +64,6 @@ |
# include <google/stacktrace.h> |
#endif |
-class TCMalloc_Printer; |
namespace base { |
struct MallocRange; |
} |
@@ -76,8 +75,6 @@ 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. |
@@ -91,13 +88,7 @@ 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; |
}; |
@@ -145,9 +136,6 @@ class PERFTOOLS_DLL_DECL PageHeap { |
return reinterpret_cast<Span*>(pagemap_.get(p)); |
} |
- // Dump state to stderr |
- void Dump(TCMalloc_Printer* out); |
- |
// If this page heap is managing a range with starting page # >= start, |
// store info about the range in *r and return true. Else return false. |
bool GetNextRange(PageID start, base::MallocRange* r); |
@@ -158,14 +146,24 @@ 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], |
- int64 class_sizes_returned[kMaxPages], |
- int64* normal_pages_in_spans, |
- int64* returned_pages_in_spans); |
+ |
+ struct SmallSpanStats { |
+ // For each free list of small spans, the length (in spans) of the |
+ // normal and returned free lists for that size. |
+ int64 normal_length[kMaxPages]; |
+ int64 returned_length[kMaxPages]; |
+ }; |
+ void GetSmallSpanStats(SmallSpanStats* result); |
+ |
+ // Stats for free large spans (i.e., spans with more than kMaxPages pages). |
+ struct LargeSpanStats { |
+ int64 spans; // Number of such spans |
+ int64 normal_pages; // Combined page length of normal large spans |
+ int64 returned_pages; // Combined page length of unmapped spans |
+ }; |
+ void GetLargeSpanStats(LargeSpanStats* result); |
bool Check(); |
// Like Check() but does some more comprehensive checking. |
@@ -208,13 +206,11 @@ 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. |
- // Chrome: Changed to 64MB |
- static const int kMaxReleaseDelay = 1 << 14; |
+ static const int kMaxReleaseDelay = 1 << 20; |
// If there is nothing to release, wait for so many pages before |
// scavenging again. With 4K pages, this comes to 1GB of memory. |
- // Chrome: Changed to 16MB |
- static const int kDefaultReleaseDelay = 1 << 12; |
+ static const int kDefaultReleaseDelay = 1 << 18; |
// Pick the appropriate map and cache types based on pointer size |
typedef MapSelector<kAddressBits>::Type PageMap; |
@@ -238,6 +234,7 @@ class PERFTOOLS_DLL_DECL PageHeap { |
// Statistics on system, free, and unmapped bytes |
Stats stats_; |
+ |
Span* SearchFreeAndLargeLists(Length n); |
bool GrowHeap(Length n); |
@@ -266,12 +263,6 @@ 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); |