diff --git a/src/asmjit/base/intutil.cpp b/src/asmjit/base/intutil.cpp index 3a811b6..371a2c4 100644 --- a/src/asmjit/base/intutil.cpp +++ b/src/asmjit/base/intutil.cpp @@ -175,6 +175,13 @@ UNIT(base_intutil) { "IntUtil::findFirstBit(%X) should return %u.", (1 << i), i); } + INFO("IntUtil::keepNOnesFromRight()."); + EXPECT(IntUtil::keepNOnesFromRight(0xF, 1) == 0x1, ""); + EXPECT(IntUtil::keepNOnesFromRight(0xF, 2) == 0x3, ""); + EXPECT(IntUtil::keepNOnesFromRight(0xF, 3) == 0x7, ""); + EXPECT(IntUtil::keepNOnesFromRight(0x5, 2) == 0x5, ""); + EXPECT(IntUtil::keepNOnesFromRight(0xD, 2) == 0x5, ""); + INFO("IntUtil::isAligned()."); EXPECT(IntUtil::isAligned(0xFFFF, 4) == false, ""); EXPECT(IntUtil::isAligned(0xFFF4, 4) == true , ""); diff --git a/src/asmjit/base/intutil.h b/src/asmjit/base/intutil.h index 44722b4..32b47ce 100644 --- a/src/asmjit/base/intutil.h +++ b/src/asmjit/base/intutil.h @@ -382,7 +382,7 @@ struct IntUtil { uint32_t m = 0x1; do { - nBits -= (mask & m) == 0; + nBits -= (mask & m) != 0; m <<= 1; if (nBits == 0) { m -= 1; diff --git a/src/asmjit/x86/x86compiler.h b/src/asmjit/x86/x86compiler.h index 1f0038c..cff955d 100644 --- a/src/asmjit/x86/x86compiler.h +++ b/src/asmjit/x86/x86compiler.h @@ -1265,12 +1265,9 @@ struct X86FuncNode : public FuncNode { _stackFrameRegIndex = kInvalidReg; _isStackFrameRegPreserved = false; - _stackFrameCopyGpIndex[0] = kInvalidReg; - _stackFrameCopyGpIndex[1] = kInvalidReg; - _stackFrameCopyGpIndex[2] = kInvalidReg; - _stackFrameCopyGpIndex[3] = kInvalidReg; - _stackFrameCopyGpIndex[4] = kInvalidReg; - _stackFrameCopyGpIndex[5] = kInvalidReg; + + for (uint32_t i = 0; i < ASMJIT_ARRAY_SIZE(_stackFrameCopyGpIndex); i++) + _stackFrameCopyGpIndex[i] = static_cast(kInvalidReg); } //! Destroy the `X86FuncNode` instance. diff --git a/src/asmjit/x86/x86context.cpp b/src/asmjit/x86/x86context.cpp index dced6ed..fedd32c 100644 --- a/src/asmjit/x86/x86context.cpp +++ b/src/asmjit/x86/x86context.cpp @@ -4962,9 +4962,10 @@ static Error X86Context_translatePrologEpilog(X86Context* self, X86FuncNode* fun X86GpReg r[8]; uint32_t numRegs = 0; - for (i = 0; i < 6; i++) + for (i = 0; i < ASMJIT_ARRAY_SIZE(func->_stackFrameCopyGpIndex); i++) if (func->_stackFrameCopyGpIndex[i] != kInvalidReg) r[numRegs++] = gpReg.setIndex(func->_stackFrameCopyGpIndex[i]); + ASMJIT_ASSERT(numRegs > 0); int32_t dSrc = func->getPushPopStackSize() + regSize; int32_t dDst = func->getAlignStackSize() +