diff options
author | Michaël Zasso <targos@protonmail.com> | 2018-12-04 08:20:37 +0100 |
---|---|---|
committer | Michaël Zasso <targos@protonmail.com> | 2018-12-06 15:23:33 +0100 |
commit | 9b4bf7de6c9a7c25f116c7a502384c20b5cfaea3 (patch) | |
tree | 2b0c843168dafb939d8df8a15b2aa72b76dee51d /deps/v8/src/heap/array-buffer-tracker.cc | |
parent | b8fbe69db1292307adb2c2b2e0d5ef48c4ab2faf (diff) | |
download | android-node-v8-9b4bf7de6c9a7c25f116c7a502384c20b5cfaea3.tar.gz android-node-v8-9b4bf7de6c9a7c25f116c7a502384c20b5cfaea3.tar.bz2 android-node-v8-9b4bf7de6c9a7c25f116c7a502384c20b5cfaea3.zip |
deps: update V8 to 7.1.302.28
PR-URL: https://github.com/nodejs/node/pull/23423
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Gus Caplan <me@gus.host>
Reviewed-By: Myles Borins <myles.borins@gmail.com>
Diffstat (limited to 'deps/v8/src/heap/array-buffer-tracker.cc')
-rw-r--r-- | deps/v8/src/heap/array-buffer-tracker.cc | 28 |
1 files changed, 13 insertions, 15 deletions
diff --git a/deps/v8/src/heap/array-buffer-tracker.cc b/deps/v8/src/heap/array-buffer-tracker.cc index 0a158e3543..f35f2b3754 100644 --- a/deps/v8/src/heap/array-buffer-tracker.cc +++ b/deps/v8/src/heap/array-buffer-tracker.cc @@ -26,11 +26,10 @@ void LocalArrayBufferTracker::Process(Callback callback) { JSArrayBuffer* new_buffer = nullptr; JSArrayBuffer* old_buffer = nullptr; size_t freed_memory = 0; - size_t moved_memory = 0; for (TrackingData::iterator it = array_buffers_.begin(); it != array_buffers_.end(); ++it) { old_buffer = it->first; - Page* old_page = Page::FromAddress(old_buffer->address()); + DCHECK_EQ(page_, Page::FromAddress(old_buffer->address())); const CallbackResult result = callback(old_buffer, &new_buffer); if (result == kKeepEntry) { kept_array_buffers.insert(*it); @@ -49,26 +48,25 @@ void LocalArrayBufferTracker::Process(Callback callback) { // We should decrement before adding to avoid potential overflows in // the external memory counters. DCHECK_EQ(it->first->is_wasm_memory(), it->second.is_wasm_memory); - old_page->DecrementExternalBackingStoreBytes( - ExternalBackingStoreType::kArrayBuffer, length); - tracker->Add(new_buffer, length); + tracker->AddInternal(new_buffer, length); + MemoryChunk::MoveExternalBackingStoreBytes( + ExternalBackingStoreType::kArrayBuffer, + static_cast<MemoryChunk*>(page_), + static_cast<MemoryChunk*>(target_page), length); } - moved_memory += it->second.length; - } else if (result == kRemoveEntry) { - const size_t length = it->second.length; - freed_memory += length; + freed_memory += it->second.length; // We pass backing_store() and stored length to the collector for freeing // the backing store. Wasm allocations will go through their own tracker // based on the backing store. backing_stores_to_free.push_back(it->second); - old_page->DecrementExternalBackingStoreBytes( - ExternalBackingStoreType::kArrayBuffer, length); } else { UNREACHABLE(); } } - if (moved_memory || freed_memory) { + if (freed_memory) { + page_->DecrementExternalBackingStoreBytes( + ExternalBackingStoreType::kArrayBuffer, freed_memory); // TODO(wez): Remove backing-store from external memory accounting. page_->heap()->update_external_memory_concurrently_freed( static_cast<intptr_t>(freed_memory)); @@ -76,9 +74,9 @@ void LocalArrayBufferTracker::Process(Callback callback) { array_buffers_.swap(kept_array_buffers); - // Pass the backing stores that need to be freed to the main thread for later - // distribution. - page_->heap()->array_buffer_collector()->AddGarbageAllocations( + // Pass the backing stores that need to be freed to the main thread for + // potential later distribution. + page_->heap()->array_buffer_collector()->QueueOrFreeGarbageAllocations( std::move(backing_stores_to_free)); } |