This commit is contained in:
kobalicek
2015-10-13 19:18:54 +02:00
parent 4ad2729632
commit dacd9eb641
4 changed files with 13 additions and 8 deletions

View File

@@ -175,6 +175,13 @@ UNIT(base_intutil) {
"IntUtil::findFirstBit(%X) should return %u.", (1 << i), i); "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()."); INFO("IntUtil::isAligned().");
EXPECT(IntUtil::isAligned<size_t>(0xFFFF, 4) == false, ""); EXPECT(IntUtil::isAligned<size_t>(0xFFFF, 4) == false, "");
EXPECT(IntUtil::isAligned<size_t>(0xFFF4, 4) == true , ""); EXPECT(IntUtil::isAligned<size_t>(0xFFF4, 4) == true , "");

View File

@@ -382,7 +382,7 @@ struct IntUtil {
uint32_t m = 0x1; uint32_t m = 0x1;
do { do {
nBits -= (mask & m) == 0; nBits -= (mask & m) != 0;
m <<= 1; m <<= 1;
if (nBits == 0) { if (nBits == 0) {
m -= 1; m -= 1;

View File

@@ -1265,12 +1265,9 @@ struct X86FuncNode : public FuncNode {
_stackFrameRegIndex = kInvalidReg; _stackFrameRegIndex = kInvalidReg;
_isStackFrameRegPreserved = false; _isStackFrameRegPreserved = false;
_stackFrameCopyGpIndex[0] = kInvalidReg;
_stackFrameCopyGpIndex[1] = kInvalidReg; for (uint32_t i = 0; i < ASMJIT_ARRAY_SIZE(_stackFrameCopyGpIndex); i++)
_stackFrameCopyGpIndex[2] = kInvalidReg; _stackFrameCopyGpIndex[i] = static_cast<uint8_t>(kInvalidReg);
_stackFrameCopyGpIndex[3] = kInvalidReg;
_stackFrameCopyGpIndex[4] = kInvalidReg;
_stackFrameCopyGpIndex[5] = kInvalidReg;
} }
//! Destroy the `X86FuncNode` instance. //! Destroy the `X86FuncNode` instance.

View File

@@ -4962,9 +4962,10 @@ static Error X86Context_translatePrologEpilog(X86Context* self, X86FuncNode* fun
X86GpReg r[8]; X86GpReg r[8];
uint32_t numRegs = 0; 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) if (func->_stackFrameCopyGpIndex[i] != kInvalidReg)
r[numRegs++] = gpReg.setIndex(func->_stackFrameCopyGpIndex[i]); r[numRegs++] = gpReg.setIndex(func->_stackFrameCopyGpIndex[i]);
ASMJIT_ASSERT(numRegs > 0);
int32_t dSrc = func->getPushPopStackSize() + regSize; int32_t dSrc = func->getPushPopStackSize() + regSize;
int32_t dDst = func->getAlignStackSize() + int32_t dDst = func->getAlignStackSize() +