Merge pull request #472 from lioncash/exception

general: Mark hash functions as noexcept
This commit is contained in:
Merry 2019-04-12 21:33:47 +01:00 committed by MerryMage
commit d7da53a74b
7 changed files with 19 additions and 19 deletions

View file

@ -79,13 +79,13 @@ public:
return LocationDescriptor(arm_pc, cpsr, A32::FPSCR{new_fpscr & FPSCR_MODE_MASK});
}
u64 UniqueHash() const {
u64 UniqueHash() const noexcept {
// This value MUST BE UNIQUE.
// This calculation has to match up with EmitX64::EmitTerminalPopRSBHint
u64 pc_u64 = u64(arm_pc) << 32;
u64 fpscr_u64 = u64(fpscr.Value());
u64 t_u64 = cpsr.T() ? 1 : 0;
u64 e_u64 = cpsr.E() ? 2 : 0;
const u64 pc_u64 = u64(arm_pc) << 32;
const u64 fpscr_u64 = u64(fpscr.Value());
const u64 t_u64 = cpsr.T() ? 1 : 0;
const u64 e_u64 = cpsr.E() ? 2 : 0;
return pc_u64 | fpscr_u64 | t_u64 | e_u64;
}
@ -112,13 +112,13 @@ std::ostream& operator<<(std::ostream& o, const LocationDescriptor& descriptor);
namespace std {
template <>
struct less<Dynarmic::A32::LocationDescriptor> {
bool operator()(const Dynarmic::A32::LocationDescriptor& x, const Dynarmic::A32::LocationDescriptor& y) const {
bool operator()(const Dynarmic::A32::LocationDescriptor& x, const Dynarmic::A32::LocationDescriptor& y) const noexcept {
return x.UniqueHash() < y.UniqueHash();
}
};
template <>
struct hash<Dynarmic::A32::LocationDescriptor> {
size_t operator()(const Dynarmic::A32::LocationDescriptor& x) const {
size_t operator()(const Dynarmic::A32::LocationDescriptor& x) const noexcept {
return std::hash<u64>()(x.UniqueHash());
}
};

View file

@ -51,10 +51,10 @@ public:
return LocationDescriptor(static_cast<u64>(pc + amount), fpcr);
}
u64 UniqueHash() const {
u64 UniqueHash() const noexcept {
// This value MUST BE UNIQUE.
// This calculation has to match up with EmitTerminalPopRSBHint
u64 fpcr_u64 = static_cast<u64>(fpcr.Value()) << 37;
const u64 fpcr_u64 = static_cast<u64>(fpcr.Value()) << 37;
return pc | fpcr_u64;
}
@ -80,13 +80,13 @@ std::ostream& operator<<(std::ostream& o, const LocationDescriptor& descriptor);
namespace std {
template <>
struct less<Dynarmic::A64::LocationDescriptor> {
bool operator()(const Dynarmic::A64::LocationDescriptor& x, const Dynarmic::A64::LocationDescriptor& y) const {
bool operator()(const Dynarmic::A64::LocationDescriptor& x, const Dynarmic::A64::LocationDescriptor& y) const noexcept {
return x.UniqueHash() < y.UniqueHash();
}
};
template <>
struct hash<Dynarmic::A64::LocationDescriptor> {
size_t operator()(const Dynarmic::A64::LocationDescriptor& x) const {
size_t operator()(const Dynarmic::A64::LocationDescriptor& x) const noexcept {
return std::hash<u64>()(x.UniqueHash());
}
};

View file

@ -38,13 +38,13 @@ std::ostream& operator<<(std::ostream& o, const LocationDescriptor& descriptor);
namespace std {
template <>
struct less<Dynarmic::IR::LocationDescriptor> {
bool operator()(const Dynarmic::IR::LocationDescriptor& x, const Dynarmic::IR::LocationDescriptor& y) const {
bool operator()(const Dynarmic::IR::LocationDescriptor& x, const Dynarmic::IR::LocationDescriptor& y) const noexcept {
return x.Value() < y.Value();
}
};
template <>
struct hash<Dynarmic::IR::LocationDescriptor> {
size_t operator()(const Dynarmic::IR::LocationDescriptor& x) const {
size_t operator()(const Dynarmic::IR::LocationDescriptor& x) const noexcept {
return std::hash<u64>()(x.Value());
}
};