summaryrefslogtreecommitdiffstats
path: root/src/core/cpu_manager.cpp
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2021-03-06 02:08:48 +0100
committerGitHub <noreply@github.com>2021-03-06 02:08:48 +0100
commit7b29a8ce4e1f94bec7e7828fb1674e1b43b937c5 (patch)
tree503cbe4fb52939512f8ee0c976e46e9293de3c4c /src/core/cpu_manager.cpp
parentMerge pull request #6034 from Morph1984/mbedtls (diff)
parentRevert "core: Switch to unique_ptr for usage of Common::Fiber." (diff)
downloadyuzu-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.cpp11
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();