return curArgTabEntry;
}
+#ifdef DEBUG
void fgArgInfo::RemorphReset()
{
nextSlotNum = INIT_ARG_STACK_SLOT;
}
+#endif
fgArgTabEntry* fgArgInfo::RemorphRegArg(
unsigned argNum, GenTreePtr node, GenTreePtr parent, regNumber regNum, unsigned numRegs, unsigned alignment)
}
}
+#ifdef DEBUG
nextSlotNum = (unsigned)roundUp(nextSlotNum, alignment);
+#endif
assert(curArgTabEntry->argNum == argNum);
assert(curArgTabEntry->slotNum == nextSlotNum);
curArgTabEntry->node = node;
#endif
+#ifdef DEBUG
nextSlotNum += numSlots;
+#endif
}
void fgArgInfo::SplitArg(unsigned argNum, unsigned numRegs, unsigned numSlots, bool isReMorph)
assert(curArgTabEntry->isSplit == true);
assert(curArgTabEntry->numRegs == numRegs);
assert(curArgTabEntry->numSlots == numSlots);
+#ifdef DEBUG
+ nextSlotNum += numSlots;
+#endif
}
else
{
curArgTabEntry->isSplit = true;
curArgTabEntry->numRegs = numRegs;
curArgTabEntry->numSlots = numSlots;
+ nextSlotNum += numSlots;
}
-
- nextSlotNum += numSlots;
}
void fgArgInfo::EvalToTmp(unsigned argNum, unsigned tmpNum, GenTreePtr newNode)
fgPtrArgCntCur -= callStkLevel;
}
assert(call->fgArgInfo != nullptr);
+#ifndef DEBUG
call->fgArgInfo->RemorphReset();
+#endif
numArgs = call->fgArgInfo->ArgCount();
}
assert(varTypeIsStruct(argx));
unsigned numRegsPartial = size - (fltArgRegNum - MAX_FLOAT_REG_ARG);
assert((unsigned char)numRegsPartial == numRegsPartial);
+#ifndef DEBUG
+ if (!reMorphing)
+#endif
call->fgArgInfo->SplitArg(argIndex, numRegsPartial, size - numRegsPartial, reMorphing);
fltArgRegNum = MAX_FLOAT_REG_ARG;
}
(argx->gtOper == GT_COMMA && (args->gtFlags & GTF_ASG)));
unsigned numRegsPartial = size - (intArgRegNum - MAX_REG_ARG);
assert((unsigned char)numRegsPartial == numRegsPartial);
+#ifndef DEBUG
+ if (!reMorphing)
+#endif
call->fgArgInfo->SplitArg(argIndex, numRegsPartial, size - numRegsPartial, reMorphing);
intArgRegNum = MAX_REG_ARG;
fgPtrArgCntCur += size - numRegsPartial;