From 7725256f649719dcce2c50ea84e79d6199dd9a50 Mon Sep 17 00:00:00 2001 From: Yuri Kunde Schlesner Date: Sat, 31 Jan 2015 22:56:59 -0200 Subject: Explicitly instantiate constructors/destructors for Kernel objects This should speed up compile times a bit, as well as enable more liberal use of forward declarations. (Due to SharedPtr not trying to emit the destructor anymore.) --- src/core/CMakeLists.txt | 1 + src/core/hle/kernel/address_arbiter.cpp | 3 +++ src/core/hle/kernel/address_arbiter.h | 3 ++- src/core/hle/kernel/event.cpp | 3 +++ src/core/hle/kernel/event.h | 3 ++- src/core/hle/kernel/mutex.cpp | 3 +++ src/core/hle/kernel/mutex.h | 3 ++- src/core/hle/kernel/semaphore.cpp | 3 +++ src/core/hle/kernel/semaphore.h | 3 ++- src/core/hle/kernel/session.cpp | 13 +++++++++++++ src/core/hle/kernel/session.h | 4 ++++ src/core/hle/kernel/shared_memory.cpp | 3 +++ src/core/hle/kernel/shared_memory.h | 3 ++- src/core/hle/kernel/thread.cpp | 4 ++-- src/core/hle/kernel/thread.h | 1 + src/core/hle/kernel/timer.cpp | 3 +++ src/core/hle/kernel/timer.h | 3 ++- 17 files changed, 51 insertions(+), 8 deletions(-) create mode 100644 src/core/hle/kernel/session.cpp diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt index ac173c486..0ab0e440c 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt @@ -26,6 +26,7 @@ set(SRCS hle/kernel/kernel.cpp hle/kernel/mutex.cpp hle/kernel/semaphore.cpp + hle/kernel/session.cpp hle/kernel/shared_memory.cpp hle/kernel/timer.cpp hle/kernel/thread.cpp diff --git a/src/core/hle/kernel/address_arbiter.cpp b/src/core/hle/kernel/address_arbiter.cpp index 6e8f959f3..2084f24cc 100644 --- a/src/core/hle/kernel/address_arbiter.cpp +++ b/src/core/hle/kernel/address_arbiter.cpp @@ -15,6 +15,9 @@ namespace Kernel { +AddressArbiter::AddressArbiter() {} +AddressArbiter::~AddressArbiter() {} + ResultVal> AddressArbiter::Create(std::string name) { SharedPtr address_arbiter(new AddressArbiter); // TOOD(yuriks): Don't create Handle (see Thread::Create()) diff --git a/src/core/hle/kernel/address_arbiter.h b/src/core/hle/kernel/address_arbiter.h index 638afff9e..a616d840f 100644 --- a/src/core/hle/kernel/address_arbiter.h +++ b/src/core/hle/kernel/address_arbiter.h @@ -47,7 +47,8 @@ public: ResultCode ArbitrateAddress(ArbitrationType type, VAddr address, s32 value, u64 nanoseconds); private: - AddressArbiter() = default; + AddressArbiter(); + ~AddressArbiter() override; }; } // namespace FileSys diff --git a/src/core/hle/kernel/event.cpp b/src/core/hle/kernel/event.cpp index d9ad40c6a..3796fbb74 100644 --- a/src/core/hle/kernel/event.cpp +++ b/src/core/hle/kernel/event.cpp @@ -14,6 +14,9 @@ namespace Kernel { +Event::Event() {} +Event::~Event() {} + ResultVal> Event::Create(ResetType reset_type, std::string name) { SharedPtr evt(new Event); // TOOD(yuriks): Don't create Handle (see Thread::Create()) diff --git a/src/core/hle/kernel/event.h b/src/core/hle/kernel/event.h index 2c3e6b14e..6f88afb3e 100644 --- a/src/core/hle/kernel/event.h +++ b/src/core/hle/kernel/event.h @@ -39,7 +39,8 @@ public: void Clear(); private: - Event() = default; + Event(); + ~Event() override; }; } // namespace diff --git a/src/core/hle/kernel/mutex.cpp b/src/core/hle/kernel/mutex.cpp index 6fdcc97ee..c6ad5ca91 100644 --- a/src/core/hle/kernel/mutex.cpp +++ b/src/core/hle/kernel/mutex.cpp @@ -38,6 +38,9 @@ void ReleaseThreadMutexes(Thread* thread) { thread->held_mutexes.clear(); } +Mutex::Mutex() {} +Mutex::~Mutex() {} + ResultVal> Mutex::Create(bool initial_locked, std::string name) { SharedPtr mutex(new Mutex); // TOOD(yuriks): Don't create Handle (see Thread::Create()) diff --git a/src/core/hle/kernel/mutex.h b/src/core/hle/kernel/mutex.h index 1e69528f1..21fd26e56 100644 --- a/src/core/hle/kernel/mutex.h +++ b/src/core/hle/kernel/mutex.h @@ -47,7 +47,8 @@ public: void Release(); private: - Mutex() = default; + Mutex(); + ~Mutex() override; }; /** diff --git a/src/core/hle/kernel/semaphore.cpp b/src/core/hle/kernel/semaphore.cpp index a9e406ef4..234d60d85 100644 --- a/src/core/hle/kernel/semaphore.cpp +++ b/src/core/hle/kernel/semaphore.cpp @@ -10,6 +10,9 @@ namespace Kernel { +Semaphore::Semaphore() {} +Semaphore::~Semaphore() {} + ResultVal> Semaphore::Create(s32 initial_count, s32 max_count, std::string name) { diff --git a/src/core/hle/kernel/semaphore.h b/src/core/hle/kernel/semaphore.h index 9bb404ab6..d8dc1fd78 100644 --- a/src/core/hle/kernel/semaphore.h +++ b/src/core/hle/kernel/semaphore.h @@ -47,7 +47,8 @@ public: ResultVal Release(s32 release_count); private: - Semaphore() = default; + Semaphore(); + ~Semaphore() override; }; } // namespace diff --git a/src/core/hle/kernel/session.cpp b/src/core/hle/kernel/session.cpp new file mode 100644 index 000000000..0594967f8 --- /dev/null +++ b/src/core/hle/kernel/session.cpp @@ -0,0 +1,13 @@ +// Copyright 2015 Citra Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#include "core/hle/kernel/session.h" +#include "core/hle/kernel/thread.h" + +namespace Kernel { + +Session::Session() {} +Session::~Session() {} + +} diff --git a/src/core/hle/kernel/session.h b/src/core/hle/kernel/session.h index 1788e4375..7cc9332c9 100644 --- a/src/core/hle/kernel/session.h +++ b/src/core/hle/kernel/session.h @@ -5,6 +5,7 @@ #pragma once #include "core/hle/kernel/kernel.h" +#include "core/mem_map.h" namespace Kernel { @@ -43,6 +44,9 @@ inline static u32* GetCommandBuffer(const int offset=0) { */ class Session : public WaitObject { public: + Session(); + ~Session() override; + std::string GetTypeName() const override { return "Session"; } static const HandleType HANDLE_TYPE = HandleType::Session; diff --git a/src/core/hle/kernel/shared_memory.cpp b/src/core/hle/kernel/shared_memory.cpp index b586c9903..c429bb9b4 100644 --- a/src/core/hle/kernel/shared_memory.cpp +++ b/src/core/hle/kernel/shared_memory.cpp @@ -9,6 +9,9 @@ namespace Kernel { +SharedMemory::SharedMemory() {} +SharedMemory::~SharedMemory() {} + ResultVal> SharedMemory::Create(std::string name) { SharedPtr shared_memory(new SharedMemory); diff --git a/src/core/hle/kernel/shared_memory.h b/src/core/hle/kernel/shared_memory.h index d393e8175..d9e741d20 100644 --- a/src/core/hle/kernel/shared_memory.h +++ b/src/core/hle/kernel/shared_memory.h @@ -57,7 +57,8 @@ public: std::string name; ///< Name of shared memory object (optional) private: - SharedMemory() = default; + SharedMemory(); + ~SharedMemory() override; }; } // namespace diff --git a/src/core/hle/kernel/thread.cpp b/src/core/hle/kernel/thread.cpp index 3c6669ca2..9ad53b8cf 100644 --- a/src/core/hle/kernel/thread.cpp +++ b/src/core/hle/kernel/thread.cpp @@ -40,8 +40,8 @@ static Thread* current_thread; static const u32 INITIAL_THREAD_ID = 1; ///< The first available thread id at startup static u32 next_thread_id; ///< The next available thread id -Thread::Thread() { -} +Thread::Thread() {} +Thread::~Thread() {} Thread* GetCurrentThread() { return current_thread; diff --git a/src/core/hle/kernel/thread.h b/src/core/hle/kernel/thread.h index f29897ae8..980c2613a 100644 --- a/src/core/hle/kernel/thread.h +++ b/src/core/hle/kernel/thread.h @@ -128,6 +128,7 @@ public: private: Thread(); + ~Thread() override; /// Handle used as userdata to reference this object when inserting into the CoreTiming queue. Handle callback_handle; diff --git a/src/core/hle/kernel/timer.cpp b/src/core/hle/kernel/timer.cpp index 90e5e64b3..7c3cdc0d0 100644 --- a/src/core/hle/kernel/timer.cpp +++ b/src/core/hle/kernel/timer.cpp @@ -17,6 +17,9 @@ static int timer_callback_event_type = -1; // us to simply use a pool index or similar. static Kernel::HandleTable timer_callback_handle_table; +Timer::Timer() {} +Timer::~Timer() {} + ResultVal> Timer::Create(ResetType reset_type, std::string name) { SharedPtr timer(new Timer); // TOOD(yuriks): Don't create Handle (see Thread::Create()) diff --git a/src/core/hle/kernel/timer.h b/src/core/hle/kernel/timer.h index f72b8b31b..e217d6dae 100644 --- a/src/core/hle/kernel/timer.h +++ b/src/core/hle/kernel/timer.h @@ -49,7 +49,8 @@ public: void Clear(); private: - Timer() = default; + Timer(); + ~Timer() override; /// Handle used as userdata to reference this object when inserting into the CoreTiming queue. Handle callback_handle; -- cgit v1.2.3