backend/x64/a32_interface: Mark Context move constructor and move assignment as noexcept

Provides a more "correct" move constructor/assignment operator, since
these relevant functions shouldn't throw exceptions.

Has the benefit of playing nicely with std::move_if_noexcept and other
noexcept library facilities.
This commit is contained in:
Lioncash 2019-02-27 10:47:42 -05:00 committed by MerryMage
parent 20fabc5083
commit 2e180a7f14
2 changed files with 4 additions and 4 deletions

View file

@ -18,9 +18,9 @@ public:
Context(); Context();
~Context(); ~Context();
Context(const Context&); Context(const Context&);
Context(Context&&); Context(Context&&) noexcept;
Context& operator=(const Context&); Context& operator=(const Context&);
Context& operator=(Context&&); Context& operator=(Context&&) noexcept;
/// View and modify registers. /// View and modify registers.
std::array<std::uint32_t, 16>& Regs(); std::array<std::uint32_t, 16>& Regs();

View file

@ -222,12 +222,12 @@ struct Context::Impl {
Context::Context() : impl(std::make_unique<Context::Impl>()) { impl->jit_state.ResetRSB(); } Context::Context() : impl(std::make_unique<Context::Impl>()) { impl->jit_state.ResetRSB(); }
Context::~Context() = default; Context::~Context() = default;
Context::Context(const Context& ctx) : impl(std::make_unique<Context::Impl>(*ctx.impl)) {} Context::Context(const Context& ctx) : impl(std::make_unique<Context::Impl>(*ctx.impl)) {}
Context::Context(Context&& ctx) : impl(std::move(ctx.impl)) {} Context::Context(Context&& ctx) noexcept : impl(std::move(ctx.impl)) {}
Context& Context::operator=(const Context& ctx) { Context& Context::operator=(const Context& ctx) {
*impl = *ctx.impl; *impl = *ctx.impl;
return *this; return *this;
} }
Context& Context::operator=(Context&& ctx) { Context& Context::operator=(Context&& ctx) noexcept {
impl = std::move(ctx.impl); impl = std::move(ctx.impl);
return *this; return *this;
} }