Index: src/heap/heap.cc |
diff --git a/src/heap/heap.cc b/src/heap/heap.cc |
index 418cad72be73f8598690cc42e56edc7368d405e2..835a820698982d519b2765c704898836da3e1c99 100644 |
--- a/src/heap/heap.cc |
+++ b/src/heap/heap.cc |
@@ -156,6 +156,7 @@ Heap::Heap() |
memset(roots_, 0, sizeof(roots_[0]) * kRootListLength); |
set_native_contexts_list(NULL); |
set_array_buffers_list(Smi::FromInt(0)); |
+ set_last_array_buffer_in_list(Smi::FromInt(0)); |
set_allocation_sites_list(Smi::FromInt(0)); |
set_encountered_weak_collections(Smi::FromInt(0)); |
set_encountered_weak_cells(Smi::FromInt(0)); |
@@ -1679,8 +1680,8 @@ void Heap::ProcessYoungWeakReferences(WeakObjectRetainer* retainer) { |
void Heap::ProcessNativeContexts(WeakObjectRetainer* retainer) { |
- Object* head = |
- VisitWeakList<Context>(this, native_contexts_list(), retainer, false); |
+ Object* head = VisitWeakList<Context>(this, native_contexts_list(), retainer, |
+ false, NULL); |
// Update the head of the list of contexts. |
set_native_contexts_list(head); |
} |
@@ -1688,9 +1689,12 @@ void Heap::ProcessNativeContexts(WeakObjectRetainer* retainer) { |
void Heap::ProcessArrayBuffers(WeakObjectRetainer* retainer, |
bool stop_after_young) { |
- Object* array_buffer_obj = VisitWeakList<JSArrayBuffer>( |
- this, array_buffers_list(), retainer, stop_after_young); |
+ Object* last_array_buffer = undefined_value(); |
+ Object* array_buffer_obj = |
+ VisitWeakList<JSArrayBuffer>(this, array_buffers_list(), retainer, |
+ stop_after_young, &last_array_buffer); |
set_array_buffers_list(array_buffer_obj); |
+ set_last_array_buffer_in_list(last_array_buffer); |
// Verify invariant that young array buffers come before old array buffers |
// in array buffers list if there was no promotion failure. |
@@ -1711,7 +1715,7 @@ void Heap::ProcessArrayBuffers(WeakObjectRetainer* retainer, |
void Heap::ProcessNewArrayBufferViews(WeakObjectRetainer* retainer) { |
// Retain the list of new space views. |
Object* typed_array_obj = VisitWeakList<JSArrayBufferView>( |
- this, new_array_buffer_views_list_, retainer, false); |
+ this, new_array_buffer_views_list_, retainer, false, NULL); |
set_new_array_buffer_views_list(typed_array_obj); |
// Some objects in the list may be in old space now. Find them |
@@ -1735,7 +1739,7 @@ void Heap::TearDownArrayBuffers() { |
void Heap::ProcessAllocationSites(WeakObjectRetainer* retainer) { |
Object* allocation_site_obj = VisitWeakList<AllocationSite>( |
- this, allocation_sites_list(), retainer, false); |
+ this, allocation_sites_list(), retainer, false, NULL); |
set_allocation_sites_list(allocation_site_obj); |
} |
@@ -5344,6 +5348,7 @@ bool Heap::CreateHeapObjects() { |
set_native_contexts_list(undefined_value()); |
set_array_buffers_list(undefined_value()); |
+ set_last_array_buffer_in_list(undefined_value()); |
set_new_array_buffer_views_list(undefined_value()); |
set_allocation_sites_list(undefined_value()); |
return true; |