diff options
author | bunnei <bunneidev@gmail.com> | 2021-03-06 02:08:48 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-03-06 02:08:48 +0100 |
commit | 7b29a8ce4e1f94bec7e7828fb1674e1b43b937c5 (patch) | |
tree | 503cbe4fb52939512f8ee0c976e46e9293de3c4c /src/core/cpu_manager.cpp | |
parent | Merge pull request #6034 from Morph1984/mbedtls (diff) | |
parent | Revert "core: Switch to unique_ptr for usage of Common::Fiber." (diff) | |
download | yuzu-7b29a8ce4e1f94bec7e7828fb1674e1b43b937c5.tar yuzu-7b29a8ce4e1f94bec7e7828fb1674e1b43b937c5.tar.gz yuzu-7b29a8ce4e1f94bec7e7828fb1674e1b43b937c5.tar.bz2 yuzu-7b29a8ce4e1f94bec7e7828fb1674e1b43b937c5.tar.lz yuzu-7b29a8ce4e1f94bec7e7828fb1674e1b43b937c5.tar.xz yuzu-7b29a8ce4e1f94bec7e7828fb1674e1b43b937c5.tar.zst yuzu-7b29a8ce4e1f94bec7e7828fb1674e1b43b937c5.zip |
Diffstat (limited to '')
-rw-r--r-- | src/core/cpu_manager.cpp | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/src/core/cpu_manager.cpp b/src/core/cpu_manager.cpp index c35438c6f..8f04fb8f5 100644 --- a/src/core/cpu_manager.cpp +++ b/src/core/cpu_manager.cpp @@ -111,7 +111,7 @@ void CpuManager::MultiCoreRunGuestThread() { auto& kernel = system.Kernel(); kernel.CurrentScheduler()->OnThreadStart(); auto* thread = kernel.CurrentScheduler()->GetCurrentThread(); - auto host_context = thread->GetHostContext(); + auto& host_context = thread->GetHostContext(); host_context->SetRewindPoint(GuestRewindFunction, this); MultiCoreRunGuestLoop(); } @@ -148,8 +148,7 @@ void CpuManager::MultiCoreRunSuspendThread() { auto core = kernel.GetCurrentHostThreadID(); auto& scheduler = *kernel.CurrentScheduler(); Kernel::KThread* current_thread = scheduler.GetCurrentThread(); - Common::Fiber::YieldTo(current_thread->GetHostContext(), - core_data[core].host_context.get()); + Common::Fiber::YieldTo(current_thread->GetHostContext(), core_data[core].host_context); ASSERT(scheduler.ContextSwitchPending()); ASSERT(core == kernel.GetCurrentHostThreadID()); scheduler.RescheduleCurrentCore(); @@ -202,7 +201,7 @@ void CpuManager::SingleCoreRunGuestThread() { auto& kernel = system.Kernel(); kernel.CurrentScheduler()->OnThreadStart(); auto* thread = kernel.CurrentScheduler()->GetCurrentThread(); - auto host_context = thread->GetHostContext(); + auto& host_context = thread->GetHostContext(); host_context->SetRewindPoint(GuestRewindFunction, this); SingleCoreRunGuestLoop(); } @@ -246,7 +245,7 @@ void CpuManager::SingleCoreRunSuspendThread() { auto core = kernel.GetCurrentHostThreadID(); auto& scheduler = *kernel.CurrentScheduler(); Kernel::KThread* current_thread = scheduler.GetCurrentThread(); - Common::Fiber::YieldTo(current_thread->GetHostContext(), core_data[0].host_context.get()); + Common::Fiber::YieldTo(current_thread->GetHostContext(), core_data[0].host_context); ASSERT(scheduler.ContextSwitchPending()); ASSERT(core == kernel.GetCurrentHostThreadID()); scheduler.RescheduleCurrentCore(); @@ -364,7 +363,7 @@ void CpuManager::RunThread(std::size_t core) { auto current_thread = system.Kernel().CurrentScheduler()->GetCurrentThread(); data.is_running = true; - Common::Fiber::YieldTo(data.host_context.get(), current_thread->GetHostContext()); + Common::Fiber::YieldTo(data.host_context, current_thread->GetHostContext()); data.is_running = false; data.is_paused = true; data.exit_barrier->Wait(); |