summaryrefslogtreecommitdiff
path: root/deps/v8/src/heap/array-buffer-tracker-inl.h
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/heap/array-buffer-tracker-inl.h')
-rw-r--r--deps/v8/src/heap/array-buffer-tracker-inl.h31
1 files changed, 17 insertions, 14 deletions
diff --git a/deps/v8/src/heap/array-buffer-tracker-inl.h b/deps/v8/src/heap/array-buffer-tracker-inl.h
index 157c71d3ab..697d4405d8 100644
--- a/deps/v8/src/heap/array-buffer-tracker-inl.h
+++ b/deps/v8/src/heap/array-buffer-tracker-inl.h
@@ -53,19 +53,19 @@ void ArrayBufferTracker::Unregister(Heap* heap, JSArrayBuffer* buffer) {
heap->update_external_memory(-static_cast<intptr_t>(length));
}
+Space* LocalArrayBufferTracker::space() { return page_->owner(); }
+
template <typename Callback>
void LocalArrayBufferTracker::Free(Callback should_free) {
size_t freed_memory = 0;
- Isolate* isolate = space_->heap()->isolate();
+ Isolate* isolate = page_->heap()->isolate();
for (TrackingData::iterator it = array_buffers_.begin();
it != array_buffers_.end();) {
JSArrayBuffer* buffer = reinterpret_cast<JSArrayBuffer*>(it->first);
- const size_t length = it->second;
+ const size_t length = it->second.length;
if (should_free(buffer)) {
- JSArrayBuffer::FreeBackingStore(
- isolate, {buffer->backing_store(), length, buffer->backing_store(),
- buffer->allocation_mode(), buffer->is_wasm_memory()});
+ JSArrayBuffer::FreeBackingStore(isolate, it->second);
it = array_buffers_.erase(it);
freed_memory += length;
} else {
@@ -73,11 +73,11 @@ void LocalArrayBufferTracker::Free(Callback should_free) {
}
}
if (freed_memory > 0) {
- // Update the Space with any freed backing-store bytes.
- space_->DecrementExternalBackingStoreBytes(freed_memory);
+ page_->DecrementExternalBackingStoreBytes(
+ ExternalBackingStoreType::kArrayBuffer, freed_memory);
// TODO(wez): Remove backing-store from external memory accounting.
- space_->heap()->update_external_memory_concurrently_freed(
+ page_->heap()->update_external_memory_concurrently_freed(
static_cast<intptr_t>(freed_memory));
}
}
@@ -96,10 +96,13 @@ void ArrayBufferTracker::FreeDead(Page* page, MarkingState* marking_state) {
}
void LocalArrayBufferTracker::Add(JSArrayBuffer* buffer, size_t length) {
- // Track the backing-store usage against the owning Space.
- space_->IncrementExternalBackingStoreBytes(length);
+ page_->IncrementExternalBackingStoreBytes(
+ ExternalBackingStoreType::kArrayBuffer, length);
- auto ret = array_buffers_.insert({buffer, length});
+ auto ret = array_buffers_.insert(
+ {buffer,
+ {buffer->backing_store(), length, buffer->backing_store(),
+ buffer->is_wasm_memory()}});
USE(ret);
// Check that we indeed inserted a new value and did not overwrite an existing
// one (which would be a bug).
@@ -107,13 +110,13 @@ void LocalArrayBufferTracker::Add(JSArrayBuffer* buffer, size_t length) {
}
void LocalArrayBufferTracker::Remove(JSArrayBuffer* buffer, size_t length) {
- // Remove the backing-store accounting from the owning Space.
- space_->DecrementExternalBackingStoreBytes(length);
+ page_->DecrementExternalBackingStoreBytes(
+ ExternalBackingStoreType::kArrayBuffer, length);
TrackingData::iterator it = array_buffers_.find(buffer);
// Check that we indeed find a key to remove.
DCHECK(it != array_buffers_.end());
- DCHECK_EQ(length, it->second);
+ DCHECK_EQ(length, it->second.length);
array_buffers_.erase(it);
}