Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(65)

Unified Diff: src/heap/heap.h

Issue 1813963002: Add memory pressure notification API (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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_;

Powered by Google App Engine
This is Rietveld 408576698