Index: src/spaces.h |
diff --git a/src/spaces.h b/src/spaces.h |
index 3fe71b2c574bb617d0155f3459f32b5999226d94..b8fa8c7eb9beb68e014b3a4d81765e2ceb69a6cf 100644 |
--- a/src/spaces.h |
+++ b/src/spaces.h |
@@ -1980,6 +1980,12 @@ class PagedSpace : public Space { |
return area_size_; |
} |
+ void CreateEmergencyMemory(); |
+ void FreeEmergencyMemory(); |
+ void UseEmergencyMemory(); |
+ |
+ bool HasEmergencyMemory() { return emergency_memory_ != NULL; } |
+ |
protected: |
FreeList* free_list() { return &free_list_; } |
@@ -2015,6 +2021,12 @@ class PagedSpace : public Space { |
// end_of_unswept_pages_ page. |
Page* end_of_unswept_pages_; |
+ // Emergency memory is the memory of a full page for a given space, allocated |
+ // conservatively before evacuating a page. If compaction fails due to out |
+ // of memory error the emergency memory can be used to complete compaction. |
+ // If not used, the emergency memory is released after compaction. |
+ MemoryChunk* emergency_memory_; |
+ |
// Expands the space by allocating a fixed number of pages. Returns false if |
// it cannot allocate requested number of pages from OS, or if the hard heap |
// size limit has been hit. |