| Index: src/heap/heap.h
|
| diff --git a/src/heap/heap.h b/src/heap/heap.h
|
| index aa9358fa799e166d4c7b0da241fdc30dde999924..7c20c84bef4395be43db35f9375eb6b6a3b228a1 100644
|
| --- a/src/heap/heap.h
|
| +++ b/src/heap/heap.h
|
| @@ -844,6 +844,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;
|
| }
|
| @@ -1444,6 +1451,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.
|
|
|
| @@ -1609,13 +1621,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, the 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_;
|
|
|
| @@ -1951,7 +1968,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
|
| @@ -2124,6 +2142,11 @@ class Heap {
|
|
|
| bool deserialization_complete_;
|
|
|
| + // A promotion failure indicates that old space promotion failed during
|
| + // gc, i.e., some object 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;
|
|
|