arm_types: Specialize std::hash for LocationDescriptor (#14)
Same thing, but with the benefit of working with anything that uses std::hash by default.
This commit is contained in:
parent
8c4df46580
commit
05b189bc26
2 changed files with 12 additions and 9 deletions
|
@ -81,9 +81,9 @@ private:
|
||||||
Jit* jit_interface;
|
Jit* jit_interface;
|
||||||
std::unordered_map<u64, CodePtr> unique_hash_to_code_ptr;
|
std::unordered_map<u64, CodePtr> unique_hash_to_code_ptr;
|
||||||
std::unordered_map<u64, std::vector<CodePtr>> patch_unique_hash_locations;
|
std::unordered_map<u64, std::vector<CodePtr>> patch_unique_hash_locations;
|
||||||
std::unordered_map<Arm::LocationDescriptor, BlockDescriptor, Arm::LocationDescriptorHash> basic_blocks;
|
std::unordered_map<Arm::LocationDescriptor, BlockDescriptor> basic_blocks;
|
||||||
std::unordered_map<Arm::LocationDescriptor, std::vector<CodePtr>, Arm::LocationDescriptorHash> patch_jg_locations;
|
std::unordered_map<Arm::LocationDescriptor, std::vector<CodePtr>> patch_jg_locations;
|
||||||
std::unordered_map<Arm::LocationDescriptor, std::vector<CodePtr>, Arm::LocationDescriptorHash> patch_jmp_locations;
|
std::unordered_map<Arm::LocationDescriptor, std::vector<CodePtr>> patch_jmp_locations;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace BackendX64
|
} // namespace BackendX64
|
||||||
|
|
|
@ -137,12 +137,6 @@ private:
|
||||||
Arm::FPSCR fpscr; ///< Floating point status control register.
|
Arm::FPSCR fpscr; ///< Floating point status control register.
|
||||||
};
|
};
|
||||||
|
|
||||||
struct LocationDescriptorHash {
|
|
||||||
size_t operator()(const LocationDescriptor& x) const {
|
|
||||||
return std::hash<u64>()(x.UniqueHash());
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
const char* CondToString(Cond cond, bool explicit_al = false);
|
const char* CondToString(Cond cond, bool explicit_al = false);
|
||||||
const char* RegToString(Reg reg);
|
const char* RegToString(Reg reg);
|
||||||
const char* ExtRegToString(ExtReg reg);
|
const char* ExtRegToString(ExtReg reg);
|
||||||
|
@ -183,3 +177,12 @@ inline ExtReg operator+(ExtReg reg, size_t number) {
|
||||||
|
|
||||||
} // namespace Arm
|
} // namespace Arm
|
||||||
} // namespace Dynarmic
|
} // namespace Dynarmic
|
||||||
|
|
||||||
|
namespace std {
|
||||||
|
template <>
|
||||||
|
struct hash<Dynarmic::Arm::LocationDescriptor> {
|
||||||
|
size_t operator()(const Dynarmic::Arm::LocationDescriptor& x) const {
|
||||||
|
return std::hash<u64>()(x.UniqueHash());
|
||||||
|
}
|
||||||
|
};
|
||||||
|
} // namespace std
|
||||||
|
|
Loading…
Reference in a new issue