| Index: third_party/tcmalloc/chromium/src/heap-profile-table.h
 | 
| diff --git a/third_party/tcmalloc/chromium/src/heap-profile-table.h b/third_party/tcmalloc/chromium/src/heap-profile-table.h
 | 
| index c9bee151e96291fe5db447ac84bd8f874f5890d4..2d9c83cbe912acc3c7f0104f0410c95ce1d79daf 100644
 | 
| --- a/third_party/tcmalloc/chromium/src/heap-profile-table.h
 | 
| +++ b/third_party/tcmalloc/chromium/src/heap-profile-table.h
 | 
| @@ -39,6 +39,10 @@
 | 
|  #include "base/basictypes.h"
 | 
|  #include "base/logging.h"   // for RawFD
 | 
|  
 | 
| +#ifndef DEEP_PROFILER_ON
 | 
| +#define DEEP_PROFILER_ON
 | 
| +#endif
 | 
| +
 | 
|  // Table to maintain a heap profile data inside,
 | 
|  // i.e. the set of currently active heap memory allocations.
 | 
|  // thread-unsafe and non-reentrant code:
 | 
| @@ -69,6 +73,11 @@ class HeapProfileTable {
 | 
|        return allocs - frees == x.allocs - x.frees  &&
 | 
|               alloc_size - free_size == x.alloc_size - x.free_size;
 | 
|      }
 | 
| +
 | 
| +#ifdef DEEP_PROFILER_ON
 | 
| +    // These are used in the deep memory profiler
 | 
| +    int64 committed_size; 
 | 
| +#endif
 | 
|    };
 | 
|  
 | 
|    // Info we can return about an allocation.
 | 
| @@ -181,6 +190,12 @@ class HeapProfileTable {
 | 
|    // Caller must call ReleaseSnapshot() on result when no longer needed.
 | 
|    Snapshot* NonLiveSnapshot(Snapshot* base);
 | 
|  
 | 
| +  void MMapRecordBegin() { mmap_record_ = true; }
 | 
| +  void MMapRecordEnd() { mmap_record_ = false; }
 | 
| +
 | 
| +#ifdef DEEP_PROFILER_ON
 | 
| +  friend class DeepMemoryProfiler;
 | 
| +#endif
 | 
|   private:
 | 
|  
 | 
|    // data types ----------------------------
 | 
| @@ -192,6 +207,10 @@ class HeapProfileTable {
 | 
|      int          depth;  // Depth of stack trace
 | 
|      const void** stack;  // Stack trace
 | 
|      Bucket*      next;   // Next entry in hash-table
 | 
| +#ifdef DEEP_PROFILER_ON
 | 
| +    int          id;     // Unique ID of the bucket
 | 
| +    bool         is_logged; // True if the stracktrace is logged to a file
 | 
| +#endif
 | 
|    };
 | 
|  
 | 
|    // Info stored in the address map
 | 
| @@ -280,6 +299,10 @@ class HeapProfileTable {
 | 
|    inline static void DumpNonLiveIterator(const void* ptr, AllocValue* v,
 | 
|                                           const DumpArgs& args);
 | 
|  
 | 
| +  // Creates a list of Buckets whose length is num_buckets_.
 | 
| +  // The caller is responsible for dellocating the returned list.
 | 
| +  Bucket** MakeBucketList() const;
 | 
| +
 | 
|    // Helper for IterateOrderedAllocContexts and FillOrderedProfile.
 | 
|    // Creates a sorted list of Buckets whose length is num_buckets_.
 | 
|    // The caller is responsible for dellocating the returned list.
 | 
| @@ -325,6 +348,10 @@ class HeapProfileTable {
 | 
|  
 | 
|    // Map of all currently allocated objects we know about.
 | 
|    AllocationMap* allocation_;
 | 
| +  // Mmap allocations are saved in a separate map
 | 
| +  // because mmap and tcmalloc allocations could have the same address
 | 
| +  AllocationMap* allocation_mmap_;
 | 
| +  bool mmap_record_;
 | 
|  
 | 
|    DISALLOW_COPY_AND_ASSIGN(HeapProfileTable);
 | 
|  };
 | 
| 
 |