| // Copyright 2020 the V8 project authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef V8_HEAP_MEMORY_CHUNK_INL_H_ |
| #define V8_HEAP_MEMORY_CHUNK_INL_H_ |
| |
| #include "src/heap/memory-chunk.h" |
| #include "src/heap/spaces-inl.h" |
| |
| namespace v8 { |
| namespace internal { |
| |
| void MemoryChunk::IncrementExternalBackingStoreBytes( |
| ExternalBackingStoreType type, size_t amount) { |
| #ifndef V8_ENABLE_THIRD_PARTY_HEAP |
| base::CheckedIncrement(&external_backing_store_bytes_[type], amount); |
| owner()->IncrementExternalBackingStoreBytes(type, amount); |
| #endif |
| } |
| |
| void MemoryChunk::DecrementExternalBackingStoreBytes( |
| ExternalBackingStoreType type, size_t amount) { |
| #ifndef V8_ENABLE_THIRD_PARTY_HEAP |
| base::CheckedDecrement(&external_backing_store_bytes_[type], amount); |
| owner()->DecrementExternalBackingStoreBytes(type, amount); |
| #endif |
| } |
| |
| void MemoryChunk::MoveExternalBackingStoreBytes(ExternalBackingStoreType type, |
| MemoryChunk* from, |
| MemoryChunk* to, |
| size_t amount) { |
| DCHECK_NOT_NULL(from->owner()); |
| DCHECK_NOT_NULL(to->owner()); |
| base::CheckedDecrement(&(from->external_backing_store_bytes_[type]), amount); |
| base::CheckedIncrement(&(to->external_backing_store_bytes_[type]), amount); |
| Space::MoveExternalBackingStoreBytes(type, from->owner(), to->owner(), |
| amount); |
| } |
| |
| AllocationSpace MemoryChunk::owner_identity() const { |
| if (InReadOnlySpace()) return RO_SPACE; |
| return owner()->identity(); |
| } |
| |
| } // namespace internal |
| } // namespace v8 |
| |
| #endif // V8_HEAP_MEMORY_CHUNK_INL_H_ |