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

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: Add tests, address comments 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..4694ffb459d46acb9862a9ab0ec31955c123b343 100644
--- a/src/heap/heap.h
+++ b/src/heap/heap.h
@@ -10,6 +10,7 @@
// Clients of this interface shouldn't depend on lots of heap internals.
// Do not include anything from src/heap here!
+#include "include/v8.h"
#include "src/allocation.h"
#include "src/assert-scope.h"
#include "src/atomic-utils.h"
@@ -23,6 +24,8 @@
namespace v8 {
namespace internal {
+using v8::MemoryPressureLevel;
+
// Defines all the roots in Heap.
#define STRONG_ROOT_LIST(V) \
V(Map, byte_array_map, ByteArrayMap) \
@@ -736,6 +739,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);
@@ -750,6 +756,9 @@ class Heap {
if (PromotedTotalSize() >= adjusted_allocation_limit) return true;
+ if (memory_pressure_level_.Value() != MemoryPressureLevel::kNone)
+ return true;
+
return false;
}
@@ -833,7 +842,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 +2008,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_;
Hannes Payer (out of office) 2016/03/18 13:27:26 For completeness, add a comment to describe that f
ulan 2016/03/18 16:10:00 Done.
+
// For keeping track of context disposals.
int contexts_disposed_;

Powered by Google App Engine
This is Rietveld 408576698