Skip to content

Commit 03f64dc

Browse files
committed
Remove artifact from having a stack probing loop in the past on XArch in src/coreclr/jit/codegencommon.cpp
1 parent 117c2d6 commit 03f64dc

File tree

1 file changed

+11
-22
lines changed

1 file changed

+11
-22
lines changed

src/coreclr/jit/codegencommon.cpp

Lines changed: 11 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -7220,37 +7220,26 @@ void CodeGen::genFnProlog()
72207220
}
72217221
#endif // TARGET_ARM
72227222

7223-
#if defined(TARGET_XARCH)
7224-
if (compiler->compLclFrameSize >= compiler->getVeryLargeFrameSize())
7223+
tempMask = initRegs & ~excludeMask & ~regSet.rsMaskResvd;
7224+
7225+
if (tempMask != RBM_NONE)
72257226
{
7226-
// We currently must use REG_EAX on x86 here
7227-
// because the loop's backwards branch depends upon the size of EAX encodings
7228-
assert(initReg == REG_EAX);
7227+
// We will use one of the registers that we were planning to zero init anyway.
7228+
// We pick the lowest register number.
7229+
tempMask = genFindLowestBit(tempMask);
7230+
initReg = genRegNumFromMask(tempMask);
72297231
}
7232+
// Next we prefer to use one of the unused argument registers.
7233+
// If they aren't available we use one of the caller-saved integer registers.
72307234
else
7231-
#endif // TARGET_XARCH
72327235
{
7233-
tempMask = initRegs & ~excludeMask & ~regSet.rsMaskResvd;
7234-
7236+
tempMask = regSet.rsGetModifiedRegsMask() & RBM_ALLINT & ~excludeMask & ~regSet.rsMaskResvd;
72357237
if (tempMask != RBM_NONE)
72367238
{
7237-
// We will use one of the registers that we were planning to zero init anyway.
7238-
// We pick the lowest register number.
7239+
// We pick the lowest register number
72397240
tempMask = genFindLowestBit(tempMask);
72407241
initReg = genRegNumFromMask(tempMask);
72417242
}
7242-
// Next we prefer to use one of the unused argument registers.
7243-
// If they aren't available we use one of the caller-saved integer registers.
7244-
else
7245-
{
7246-
tempMask = regSet.rsGetModifiedRegsMask() & RBM_ALLINT & ~excludeMask & ~regSet.rsMaskResvd;
7247-
if (tempMask != RBM_NONE)
7248-
{
7249-
// We pick the lowest register number
7250-
tempMask = genFindLowestBit(tempMask);
7251-
initReg = genRegNumFromMask(tempMask);
7252-
}
7253-
}
72547243
}
72557244

72567245
noway_assert(!compiler->compMethodRequiresPInvokeFrame() || (initReg != REG_PINVOKE_FRAME));

0 commit comments

Comments
 (0)