| 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();
|
|
|
|
|