From 7f583b66cbb32b0a5c02d53e78540b72d0bda316 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Sun, 25 Mar 2018 15:52:01 -0400 Subject: [PATCH] x64Emitter: Clean up constructors for OpArg Default initializes members and moves initial assignments into the initializer list. --- Source/Core/Common/x64Emitter.h | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/Source/Core/Common/x64Emitter.h b/Source/Core/Common/x64Emitter.h index 7a728e6e88..648fafe08e 100644 --- a/Source/Core/Common/x64Emitter.h +++ b/Source/Core/Common/x64Emitter.h @@ -110,15 +110,12 @@ struct OpArg // This also allows us to keep the op writing functions private. friend class XEmitter; - OpArg() {} // dummy op arg, used for storage - OpArg(u64 _offset, int _scale, X64Reg rmReg = RAX, X64Reg scaledReg = RAX) + // dummy op arg, used for storage + constexpr OpArg() = default; + constexpr OpArg(u64 offset_, int scale_, X64Reg rm_reg = RAX, X64Reg scaled_reg = RAX) + : scale{static_cast(scale_)}, offsetOrBaseReg{static_cast(rm_reg)}, + indexReg{static_cast(scaled_reg)}, offset{offset_} { - operandReg = 0; - scale = (u8)_scale; - offsetOrBaseReg = (u16)rmReg; - indexReg = (u16)scaledReg; - // if scale == 0 never mind offsetting - offset = _offset; } bool operator==(const OpArg& b) const { @@ -237,11 +234,11 @@ private: void WriteSingleByteOp(XEmitter* emit, u8 op, X64Reg operandReg, int bits); void WriteNormalOp(XEmitter* emit, bool toRM, NormalOp op, const OpArg& operand, int bits) const; - u8 scale; - u16 offsetOrBaseReg; - u16 indexReg; - u64 offset; // Also used to store immediates. - u16 operandReg; + u8 scale = 0; + u16 offsetOrBaseReg = 0; + u16 indexReg = 0; + u64 offset = 0; // Also used to store immediates. + u16 operandReg = 0; }; template