1*6777b538SAndroid Build Coastguard Worker // Copyright 2018 The Chromium Authors 2*6777b538SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*6777b538SAndroid Build Coastguard Worker // found in the LICENSE file. 4*6777b538SAndroid Build Coastguard Worker 5*6777b538SAndroid Build Coastguard Worker #include "base/containers/intrusive_heap.h" 6*6777b538SAndroid Build Coastguard Worker 7*6777b538SAndroid Build Coastguard Worker #include "base/check.h" 8*6777b538SAndroid Build Coastguard Worker #include "base/memory/ptr_util.h" 9*6777b538SAndroid Build Coastguard Worker 10*6777b538SAndroid Build Coastguard Worker namespace base { 11*6777b538SAndroid Build Coastguard Worker 12*6777b538SAndroid Build Coastguard Worker //////////////////////////////////////////////////////////////////////////////// 13*6777b538SAndroid Build Coastguard Worker // HeapHandle 14*6777b538SAndroid Build Coastguard Worker 15*6777b538SAndroid Build Coastguard Worker // static Invalid()16*6777b538SAndroid Build Coastguard WorkerHeapHandle HeapHandle::Invalid() { 17*6777b538SAndroid Build Coastguard Worker return HeapHandle(); 18*6777b538SAndroid Build Coastguard Worker } 19*6777b538SAndroid Build Coastguard Worker 20*6777b538SAndroid Build Coastguard Worker //////////////////////////////////////////////////////////////////////////////// 21*6777b538SAndroid Build Coastguard Worker // InternalHeapHandleStorage 22*6777b538SAndroid Build Coastguard Worker InternalHeapHandleStorage()23*6777b538SAndroid Build Coastguard WorkerInternalHeapHandleStorage::InternalHeapHandleStorage() 24*6777b538SAndroid Build Coastguard Worker : handle_(new HeapHandle()) {} 25*6777b538SAndroid Build Coastguard Worker InternalHeapHandleStorage(InternalHeapHandleStorage && other)26*6777b538SAndroid Build Coastguard WorkerInternalHeapHandleStorage::InternalHeapHandleStorage( 27*6777b538SAndroid Build Coastguard Worker InternalHeapHandleStorage&& other) noexcept 28*6777b538SAndroid Build Coastguard Worker : handle_(std::move(other.handle_)) { 29*6777b538SAndroid Build Coastguard Worker DCHECK(intrusive_heap::IsInvalid(other.handle_)); 30*6777b538SAndroid Build Coastguard Worker } 31*6777b538SAndroid Build Coastguard Worker 32*6777b538SAndroid Build Coastguard Worker InternalHeapHandleStorage::~InternalHeapHandleStorage() = default; 33*6777b538SAndroid Build Coastguard Worker operator =(InternalHeapHandleStorage && other)34*6777b538SAndroid Build Coastguard WorkerInternalHeapHandleStorage& InternalHeapHandleStorage::operator=( 35*6777b538SAndroid Build Coastguard Worker InternalHeapHandleStorage&& other) noexcept { 36*6777b538SAndroid Build Coastguard Worker handle_ = std::move(other.handle_); 37*6777b538SAndroid Build Coastguard Worker DCHECK(intrusive_heap::IsInvalid(other.handle_)); 38*6777b538SAndroid Build Coastguard Worker return *this; 39*6777b538SAndroid Build Coastguard Worker } 40*6777b538SAndroid Build Coastguard Worker swap(InternalHeapHandleStorage & other)41*6777b538SAndroid Build Coastguard Workervoid InternalHeapHandleStorage::swap( 42*6777b538SAndroid Build Coastguard Worker InternalHeapHandleStorage& other) noexcept { 43*6777b538SAndroid Build Coastguard Worker std::swap(handle_, other.handle_); 44*6777b538SAndroid Build Coastguard Worker } 45*6777b538SAndroid Build Coastguard Worker 46*6777b538SAndroid Build Coastguard Worker } // namespace base 47