Index: src/heap/heap.h |
diff --git a/src/heap/heap.h b/src/heap/heap.h |
index 89885782b4507b867248e46848d3bd9e5ce58964..ed4ea0bc9470d7422ff4c5cf7835d73105576fea 100644 |
--- a/src/heap/heap.h |
+++ b/src/heap/heap.h |
@@ -853,6 +853,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; |
} |
@@ -1453,6 +1460,11 @@ class Heap { |
bool deserialization_complete() const { return deserialization_complete_; } |
+ bool promotion_failure() const { return promotion_failure_; } |
+ void set_promotion_failure(bool promotion_failure) { |
+ promotion_failure_ = promotion_failure; |
+ } |
+ |
protected: |
// Methods made available to tests. |
@@ -1618,13 +1630,18 @@ 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_; |
+ |
// WeakHashTable that maps objects embedded in optimized code to dependent |
- // code list. It is initilized lazily and contains the undefined_value at |
+ // code list. It is initialized lazily and contains the undefined_value at |
// start. |
Object* weak_object_to_code_table_; |
@@ -1960,7 +1977,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 |
@@ -2133,6 +2151,11 @@ class Heap { |
bool deserialization_complete_; |
+ // A promotion failure indicates that old space promotion failed during |
+ // gc, i.e., some objects that should have gotten promoted had to stay in |
+ // the new space (they were copied to the other semi-space). |
+ bool promotion_failure_; |
+ |
friend class AlwaysAllocateScope; |
friend class Deserializer; |
friend class Factory; |