Index: src/heap/heap.h |
diff --git a/src/heap/heap.h b/src/heap/heap.h |
index 3720c82fff9aa7d1a617e56a1e8989b18ea3fb6b..b6d792cc05b49bb9a586db87615dc07c6d3db156 100644 |
--- a/src/heap/heap.h |
+++ b/src/heap/heap.h |
@@ -870,6 +870,13 @@ class Heap { |
void set_array_buffers_list(Object* object) { array_buffers_list_ = object; } |
Object* array_buffers_list() const { return array_buffers_list_; } |
+ void set_new_array_buffer_views_list(Object* object) { |
+ new_array_buffer_views_list_ = object; |
+ } |
+ Object* new_array_buffer_views_list() const { |
+ return new_array_buffer_views_list_; |
+ } |
+ |
void set_allocation_sites_list(Object* object) { |
allocation_sites_list_ = object; |
} |
@@ -1469,6 +1476,18 @@ class Heap { |
bool deserialization_complete() const { return deserialization_complete_; } |
+ bool migration_failure() const { return migration_failure_; } |
+ void set_migration_failure(bool migration_failure) { |
+ migration_failure_ = migration_failure; |
+ } |
+ |
+ bool previous_migration_failure() const { |
+ return previous_migration_failure_; |
+ } |
+ void set_previous_migration_failure(bool previous_migration_failure) { |
+ previous_migration_failure_ = previous_migration_failure; |
+ } |
+ |
protected: |
// Methods made available to tests. |
@@ -1636,11 +1655,16 @@ class Heap { |
bool inline_allocation_disabled_; |
// Weak list heads, threaded through the objects. |
- // List heads are initilized lazily and contain the undefined_value at start. |
+ // List heads are initialized lazily and contain the undefined_value at start. |
Object* native_contexts_list_; |
Object* array_buffers_list_; |
Object* allocation_sites_list_; |
+ // This is a global list of array buffer views in new space. When the views |
+ // get promoted, they are removed form the list and added to the corresponding |
+ // array buffer. |
+ Object* new_array_buffer_views_list_; |
+ |
// List of encountered weak collections (JSWeakMap and JSWeakSet) during |
// marking. It is initialized during marking, destroyed after marking and |
// contains Smi(0) while marking is not active. |
@@ -1973,7 +1997,8 @@ class Heap { |
void MarkCompactEpilogue(); |
void ProcessNativeContexts(WeakObjectRetainer* retainer); |
- void ProcessArrayBuffers(WeakObjectRetainer* retainer); |
+ void ProcessArrayBuffers(WeakObjectRetainer* retainer, bool stop_after_young); |
+ void ProcessNewArrayBufferViews(WeakObjectRetainer* retainer); |
void ProcessAllocationSites(WeakObjectRetainer* retainer); |
// Deopts all code that contains allocation instruction which are tenured or |
@@ -2135,6 +2160,13 @@ class Heap { |
bool concurrent_sweeping_enabled_; |
+ // A migration failure indicates that a semi-space copy of an object during |
+ // a scavenge failed and the object got promoted instead. |
+ bool migration_failure_; |
+ |
+ // A migration failure happened in the previous scavenge. |
+ bool previous_migration_failure_; |
+ |
friend class AlwaysAllocateScope; |
friend class Deserializer; |
friend class Factory; |