Chromium Code Reviews| Index: src/heap/heap.h |
| diff --git a/src/heap/heap.h b/src/heap/heap.h |
| index 44a080b1e0914ddbd9c40772bcd7d2cc03c3b393..aaa9b7c5228ee84bcad679379e1c141944451d95 100644 |
| --- a/src/heap/heap.h |
| +++ b/src/heap/heap.h |
| @@ -412,6 +412,8 @@ enum ArrayStorageAllocationMode { |
| enum class ClearRecordedSlots { kYes, kNo }; |
| +enum class MemoryPressureLevel { kNone, kModerate, kCritical }; |
|
jochen (gone - plz use gerrit)
2016/03/17 19:33:39
why not just use the external class?
ulan
2016/03/18 12:49:41
Done.
|
| + |
| class Heap { |
| public: |
| // Declare all the root indices. This defines the root list order. |
| @@ -736,6 +738,9 @@ class Heap { |
| bool IdleNotification(double deadline_in_seconds); |
| bool IdleNotification(int idle_time_in_ms); |
| + void MemoryPressureNotification(MemoryPressureLevel level, |
| + bool is_isolate_locked); |
| + |
| double MonotonicallyIncreasingTimeInMs(); |
| void RecordStats(HeapStats* stats, bool take_snapshot = false); |
| @@ -833,7 +838,10 @@ class Heap { |
| void SetOptimizeForLatency() { optimize_for_memory_usage_ = false; } |
| void SetOptimizeForMemoryUsage(); |
| - bool ShouldOptimizeForMemoryUsage() { return optimize_for_memory_usage_; } |
| + bool ShouldOptimizeForMemoryUsage() { |
| + return optimize_for_memory_usage_ || |
| + memory_pressure_level_.Value() != MemoryPressureLevel::kNone; |
| + } |
| // =========================================================================== |
| // Initialization. =========================================================== |
| @@ -1996,6 +2004,8 @@ class Heap { |
| // count, as scopes can be acquired from multiple tasks (read: threads). |
| AtomicNumber<size_t> always_allocate_scope_count_; |
| + AtomicValue<MemoryPressureLevel> memory_pressure_level_; |
| + |
| // For keeping track of context disposals. |
| int contexts_disposed_; |