| Index: src/heap/heap.h | 
| diff --git a/src/heap/heap.h b/src/heap/heap.h | 
| index 742aa4ba89c0c3535e7a3c7d8ab0b473479e2544..ef85e16080795813fb518be10a9fec04445d1a3f 100644 | 
| --- a/src/heap/heap.h | 
| +++ b/src/heap/heap.h | 
| @@ -1146,6 +1146,8 @@ class Heap { | 
| static const int kMaxExecutableSizeHugeMemoryDevice = | 
| 256 * kPointerMultiplier; | 
|  | 
| +  static const int kTraceRingBufferSize = 512; | 
| + | 
| // Calculates the allocation limit based on a given growing factor and a | 
| // given old generation size. | 
| intptr_t CalculateOldGenerationAllocationLimit(double factor, | 
| @@ -2153,6 +2155,9 @@ class Heap { | 
| inline void UpdateAllocationsHash(uint32_t value); | 
| inline void PrintAlloctionsHash(); | 
|  | 
| +  void AddToRingBuffer(const char* string); | 
| +  void GetFromRingBuffer(char* buffer); | 
| + | 
| // Object counts and used memory by InstanceType | 
| size_t object_counts_[OBJECT_STATS_COUNT]; | 
| size_t object_counts_last_time_[OBJECT_STATS_COUNT]; | 
| @@ -2212,6 +2217,13 @@ class Heap { | 
| static const int kAllocationSiteScratchpadSize = 256; | 
| int allocation_sites_scratchpad_length_; | 
|  | 
| +  char trace_ring_buffer_[kTraceRingBufferSize]; | 
| +  // If it's not full then the data is from 0 to ring_buffer_end_.  If it's | 
| +  // full then the data is from ring_buffer_end_ to the end of the buffer and | 
| +  // from 0 to ring_buffer_end_. | 
| +  bool ring_buffer_full_; | 
| +  size_t ring_buffer_end_; | 
| + | 
| static const int kMaxMarkCompactsInIdleRound = 7; | 
| static const int kIdleScavengeThreshold = 5; | 
|  | 
| @@ -2283,7 +2295,8 @@ class HeapStats { | 
| int* objects_per_type;                   // 17 | 
| int* size_per_type;                      // 18 | 
| int* os_error;                           // 19 | 
| -  int* end_marker;                         // 20 | 
| +  char* last_few_messages;                 // 20 | 
| +  int* end_marker;                         // 21 | 
| }; | 
|  | 
|  | 
|  |