ams: prefer construct_at/destroy_at over placement new/explicit destructor

This commit is contained in:
Michael Scire 2021-03-21 20:30:40 -07:00
parent aff0da9427
commit d84dcb653d
49 changed files with 217 additions and 171 deletions

View file

@ -34,7 +34,7 @@ namespace ams::os {
void InitializeWaitableManager(WaitableManagerType *manager) {
/* Initialize storage. */
new (std::addressof(GetWaitableManagerImpl(manager))) impl::WaitableManagerImpl;
util::ConstructAt(manager->impl_storage);
/* Mark initialized. */
manager->state = WaitableManagerType::State_Initialized;
@ -50,7 +50,7 @@ namespace ams::os {
manager->state = WaitableManagerType::State_NotInitialized;
/* Destroy. */
impl.~WaitableManagerImpl();
util::DestroyAt(manager->impl_storage);
}
WaitableHolderType *WaitAny(WaitableManagerType *manager) {
@ -90,7 +90,7 @@ namespace ams::os {
AMS_ASSERT(!holder_base->IsLinkedToManager());
holder_base->~WaitableHolderBase();
std::destroy_at(holder_base);
}
void LinkWaitableHolder(WaitableManagerType *manager, WaitableHolderType *holder) {
@ -143,7 +143,7 @@ namespace ams::os {
void InitializeWaitableHolder(WaitableHolderType *holder, Handle handle) {
AMS_ASSERT(handle != svc::InvalidHandle);
new (GetPointer(holder->impl_storage)) impl::WaitableHolderOfHandle(handle);
util::ConstructAt(GetReference(holder->impl_storage).holder_of_handle_storage, handle);
holder->user_data = 0;
}