Small optimizations: Enable LTO + don't make those two functions virtual in CPU. Around 3 fps improvement
This commit is contained in:
@@ -15,6 +15,7 @@ endif()
|
|||||||
|
|
||||||
set(CMAKE_CXX_STANDARD 23)
|
set(CMAKE_CXX_STANDARD 23)
|
||||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||||
|
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE)
|
||||||
|
|
||||||
include_directories(
|
include_directories(
|
||||||
src/frontend
|
src/frontend
|
||||||
|
|||||||
@@ -8,8 +8,6 @@ struct BaseCPU {
|
|||||||
virtual ~BaseCPU() = default;
|
virtual ~BaseCPU() = default;
|
||||||
virtual int Step() = 0;
|
virtual int Step() = 0;
|
||||||
virtual void Reset() = 0;
|
virtual void Reset() = 0;
|
||||||
[[nodiscard]] virtual bool ShouldServiceInterrupt() const = 0;
|
|
||||||
virtual void CheckCompareInterrupt() = 0;
|
|
||||||
virtual std::vector<u8> Serialize() = 0;
|
virtual std::vector<u8> Serialize() = 0;
|
||||||
virtual void Deserialize(const std::vector<u8> &) = 0;
|
virtual void Deserialize(const std::vector<u8> &) = 0;
|
||||||
virtual Mem &GetMem() = 0;
|
virtual Mem &GetMem() = 0;
|
||||||
|
|||||||
@@ -29,8 +29,8 @@ private:
|
|||||||
friend struct Cop1;
|
friend struct Cop1;
|
||||||
#define check_address_error(mask, vaddr) \
|
#define check_address_error(mask, vaddr) \
|
||||||
(((!regs.cop0.is64BitAddressing) && (s32)(vaddr) != (vaddr)) || (((vaddr) & (mask)) != 0))
|
(((!regs.cop0.is64BitAddressing) && (s32)(vaddr) != (vaddr)) || (((vaddr) & (mask)) != 0))
|
||||||
bool ShouldServiceInterrupt() const override;
|
bool ShouldServiceInterrupt() const;
|
||||||
void CheckCompareInterrupt() override;
|
void CheckCompareInterrupt();
|
||||||
std::vector<u8> Serialize() override;
|
std::vector<u8> Serialize() override;
|
||||||
void Deserialize(const std::vector<u8> &) override;
|
void Deserialize(const std::vector<u8> &) override;
|
||||||
|
|
||||||
|
|||||||
@@ -143,8 +143,8 @@ private:
|
|||||||
#define check_address_error(mask, vaddr) \
|
#define check_address_error(mask, vaddr) \
|
||||||
(((!regs.cop0.is64BitAddressing) && (s32)(vaddr) != (vaddr)) || (((vaddr) & (mask)) != 0))
|
(((!regs.cop0.is64BitAddressing) && (s32)(vaddr) != (vaddr)) || (((vaddr) & (mask)) != 0))
|
||||||
|
|
||||||
[[nodiscard]] bool ShouldServiceInterrupt() const override;
|
[[nodiscard]] bool ShouldServiceInterrupt() const;
|
||||||
void CheckCompareInterrupt() override;
|
void CheckCompareInterrupt();
|
||||||
std::vector<u8> Serialize() override;
|
std::vector<u8> Serialize() override;
|
||||||
void Deserialize(const std::vector<u8> &) override;
|
void Deserialize(const std::vector<u8> &) override;
|
||||||
u32 FetchInstruction();
|
u32 FetchInstruction();
|
||||||
|
|||||||
Reference in New Issue
Block a user