Index: src/heap/heap.cc |
diff --git a/src/heap/heap.cc b/src/heap/heap.cc |
index 48ed16bfb15260a3c4515c0143f728a30868f771..52e639fbd714be63836eed05ac7c8889d1a3ec00 100644 |
--- a/src/heap/heap.cc |
+++ b/src/heap/heap.cc |
@@ -160,6 +160,7 @@ |
gc_callbacks_depth_(0), |
deserialization_complete_(false), |
strong_roots_list_(NULL), |
+ array_buffer_tracker_(NULL), |
heap_iterator_depth_(0), |
force_oom_(false) { |
// Allow build-time customization of the max semispace size. Building |
@@ -1625,6 +1626,8 @@ |
scavenge_collector_->SelectScavengingVisitorsTable(); |
+ array_buffer_tracker()->PrepareDiscoveryInNewSpace(); |
+ |
// Flip the semispaces. After flipping, to space is empty, from space has |
// live objects. |
new_space_.Flip(); |
@@ -1749,7 +1752,7 @@ |
// Set age mark. |
new_space_.set_age_mark(new_space_.top()); |
- ArrayBufferTracker::FreeDeadInNewSpace(this); |
+ array_buffer_tracker()->FreeDead(true); |
// Update how much has survived scavenge. |
IncrementYoungSurvivorsCounter(static_cast<int>( |
@@ -2035,12 +2038,12 @@ |
void Heap::RegisterNewArrayBuffer(JSArrayBuffer* buffer) { |
- ArrayBufferTracker::RegisterNew(this, buffer); |
+ return array_buffer_tracker()->RegisterNew(buffer); |
} |
void Heap::UnregisterArrayBuffer(JSArrayBuffer* buffer) { |
- ArrayBufferTracker::Unregister(this, buffer); |
+ return array_buffer_tracker()->Unregister(buffer); |
} |
@@ -5334,6 +5337,8 @@ |
scavenge_job_ = new ScavengeJob(); |
+ array_buffer_tracker_ = new ArrayBufferTracker(this); |
+ |
LOG(isolate_, IntPtrTEvent("heap-capacity", Capacity())); |
LOG(isolate_, IntPtrTEvent("heap-available", Available())); |
@@ -5492,6 +5497,9 @@ |
delete scavenge_job_; |
scavenge_job_ = nullptr; |
+ |
+ delete array_buffer_tracker_; |
+ array_buffer_tracker_ = nullptr; |
isolate_->global_handles()->TearDown(); |