|  | // 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_ |