Index: src/heap.h |
diff --git a/src/heap.h b/src/heap.h |
index e9cbb52ba94e654270ce59b6b99f81420b76a839..67818d261eb21722cd41b0bff7d68a3939349200 100644 |
--- a/src/heap.h |
+++ b/src/heap.h |
@@ -1025,23 +1025,28 @@ class Heap { |
// Performs garbage collection operation. |
// Returns whether there is a chance that another major GC could |
// collect more garbage. |
- bool CollectGarbage(AllocationSpace space, GarbageCollector collector); |
+ bool CollectGarbage(AllocationSpace space, |
+ GarbageCollector collector, |
+ const char* gc_reason, |
+ const char* collector_reason); |
// Performs garbage collection operation. |
// Returns whether there is a chance that another major GC could |
// collect more garbage. |
- inline bool CollectGarbage(AllocationSpace space); |
+ inline bool CollectGarbage(AllocationSpace space, |
+ const char* gc_reason = NULL); |
static const int kNoGCFlags = 0; |
static const int kMakeHeapIterableMask = 1; |
+ static const int kReduceMemoryFootprintMask = 2; |
// Performs a full garbage collection. If (flags & kMakeHeapIterableMask) is |
// non-zero, then the slower precise sweeper is used, which leaves the heap |
// in a state where we can iterate over the heap visiting all objects. |
- void CollectAllGarbage(int flags); |
+ void CollectAllGarbage(int flags, const char* gc_reason = NULL); |
// Last hope GC, should try to squeeze as much as possible. |
- void CollectAllAvailableGarbage(); |
+ void CollectAllAvailableGarbage(const char* gc_reason = NULL); |
// Check whether the heap is currently iterable. |
bool IsHeapIterable(); |
@@ -1741,7 +1746,8 @@ class Heap { |
} |
// Checks whether a global GC is necessary |
- GarbageCollector SelectGarbageCollector(AllocationSpace space); |
+ GarbageCollector SelectGarbageCollector(AllocationSpace space, |
+ const char** reason); |
// Performs garbage collection |
// Returns whether there is a chance another major GC could |
@@ -2364,7 +2370,9 @@ class GCTracer BASE_EMBEDDED { |
double start_time_; |
}; |
- explicit GCTracer(Heap* heap); |
+ explicit GCTracer(Heap* heap, |
+ const char* gc_reason, |
+ const char* collector_reason); |
~GCTracer(); |
// Sets the collector. |
@@ -2387,9 +2395,17 @@ class GCTracer BASE_EMBEDDED { |
// Returns size of object in heap (in MB). |
inline double SizeOfHeapObjects(); |
- double start_time_; // Timestamp set in the constructor. |
- intptr_t start_size_; // Size of objects in heap set in constructor. |
- GarbageCollector collector_; // Type of collector. |
+ // Timestamp set in the constructor. |
+ double start_time_; |
+ |
+ // Size of objects in heap set in constructor. |
+ intptr_t start_object_size_; |
+ |
+ // Size of memory allocated from OS set in constructor. |
+ intptr_t start_memory_size_; |
+ |
+ // Type of collector. |
+ GarbageCollector collector_; |
// A count (including this one, e.g. the first collection is 1) of the |
// number of garbage collections. |
@@ -2424,6 +2440,9 @@ class GCTracer BASE_EMBEDDED { |
double steps_took_since_last_gc_; |
Heap* heap_; |
+ |
+ const char* gc_reason_; |
+ const char* collector_reason_; |
}; |