summaryrefslogtreecommitdiff
path: root/deps/v8/src/heap/array-buffer-tracker.cc
diff options
context:
space:
mode:
authorMichaël Zasso <targos@protonmail.com>2018-12-04 08:20:37 +0100
committerMichaël Zasso <targos@protonmail.com>2018-12-06 15:23:33 +0100
commit9b4bf7de6c9a7c25f116c7a502384c20b5cfaea3 (patch)
tree2b0c843168dafb939d8df8a15b2aa72b76dee51d /deps/v8/src/heap/array-buffer-tracker.cc
parentb8fbe69db1292307adb2c2b2e0d5ef48c4ab2faf (diff)
downloadandroid-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.cc28
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));
}