summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBreadFish64 <mohror64@gmail.com>2021-08-15 22:30:56 +0200
committerBreadFish64 <mohror64@gmail.com>2021-08-16 14:30:23 +0200
commit14e93f133a8dc7b7aa0d0bb079d8b6ee495d922e (patch)
treed805fce6b3137c6b76c2d08001a3abded0cf17d0
parentMerge pull request #6861 from yzct12345/const-mempy-is-all-the-speed (diff)
downloadyuzu-14e93f133a8dc7b7aa0d0bb079d8b6ee495d922e.tar
yuzu-14e93f133a8dc7b7aa0d0bb079d8b6ee495d922e.tar.gz
yuzu-14e93f133a8dc7b7aa0d0bb079d8b6ee495d922e.tar.bz2
yuzu-14e93f133a8dc7b7aa0d0bb079d8b6ee495d922e.tar.lz
yuzu-14e93f133a8dc7b7aa0d0bb079d8b6ee495d922e.tar.xz
yuzu-14e93f133a8dc7b7aa0d0bb079d8b6ee495d922e.tar.zst
yuzu-14e93f133a8dc7b7aa0d0bb079d8b6ee495d922e.zip
-rw-r--r--src/core/hle/kernel/kernel.cpp23
1 files changed, 13 insertions, 10 deletions
diff --git a/src/core/hle/kernel/kernel.cpp b/src/core/hle/kernel/kernel.cpp
index 92fbc5532..bea945301 100644
--- a/src/core/hle/kernel/kernel.cpp
+++ b/src/core/hle/kernel/kernel.cpp
@@ -267,20 +267,23 @@ struct KernelCore::Impl {
}
}
- /// Creates a new host thread ID, should only be called by GetHostThreadId
- u32 AllocateHostThreadId(std::optional<std::size_t> core_id) {
- if (core_id) {
- // The first for slots are reserved for CPU core threads
- ASSERT(*core_id < Core::Hardware::NUM_CPU_CORES);
- return static_cast<u32>(*core_id);
- } else {
- return next_host_thread_id++;
+ static inline thread_local u32 host_thread_id = UINT32_MAX;
+
+ /// Gets the host thread ID for the caller, allocating a new one if this is the first time
+ u32 GetHostThreadId(std::size_t core_id) {
+ if (host_thread_id == UINT32_MAX) {
+ // The first four slots are reserved for CPU core threads
+ ASSERT(core_id < Core::Hardware::NUM_CPU_CORES);
+ host_thread_id = static_cast<u32>(core_id);
}
+ return host_thread_id;
}
/// Gets the host thread ID for the caller, allocating a new one if this is the first time
- u32 GetHostThreadId(std::optional<std::size_t> core_id = std::nullopt) {
- const thread_local auto host_thread_id{AllocateHostThreadId(core_id)};
+ u32 GetHostThreadId() {
+ if (host_thread_id == UINT32_MAX) {
+ host_thread_id = next_host_thread_id++;
+ }
return host_thread_id;
}