Skip to content

Commit feaa635

Browse files
committed
revert the OSR offset's changing which will be pushed by a new PR.
1 parent 30e20dc commit feaa635

File tree

5 files changed

+8
-42
lines changed

5 files changed

+8
-42
lines changed

src/coreclr/jit/codegencommon.cpp

+2-32
Original file line numberDiff line numberDiff line change
@@ -4086,7 +4086,7 @@ void CodeGen::genEnregisterOSRArgsAndLocals()
40864086

40874087
GetEmitter()->emitIns_R_AR(ins_Load(lclTyp), size, varDsc->GetRegNum(), genFramePointerReg(), offset);
40884088

4089-
#elif defined(TARGET_ARM64)
4089+
#elif defined(TARGET_ARM64) || defined(TARGET_LOONGARCH64) || defined(TARGET_RISCV64)
40904090

40914091
// Patchpoint offset is from top of Tier0 frame
40924092
//
@@ -4118,37 +4118,7 @@ void CodeGen::genEnregisterOSRArgsAndLocals()
41184118

41194119
genInstrWithConstant(ins_Load(lclTyp), size, varDsc->GetRegNum(), genFramePointerReg(), offset, initReg);
41204120
*pInitRegZeroed = false;
4121-
#elif defined(TARGET_LOONGARCH64) || defined(TARGET_RISCV64)
4122-
4123-
// Patchpoint offset is from top of Tier0 frame
4124-
//
4125-
// We need to determine the frame-pointer relative
4126-
// offset for this variable in the osr frame.
4127-
//
4128-
// First there is no need to ajust stkOffs
4129-
// as it relative to sp within Tier0 frame
4130-
4131-
// then add the OSR frame size
4132-
//
4133-
const int osrFrameSize = genTotalFrameSize();
4134-
4135-
// then subtract OSR SP-FP delta
4136-
//
4137-
const int osrSpToFpDelta = genSPtoFPdelta();
4138-
4139-
// | => tier0 top of frame relative
4140-
// | + => osr bottom of frame (sp) relative
4141-
// | | - => osr fp relative
4142-
// | | |
4143-
const int offset = stkOffs + osrFrameSize - osrSpToFpDelta;
4144-
4145-
JITDUMP("---OSR--- V%02u (reg) Tier0 virtual offset %d OSR frame size %d OSR sp-fp "
4146-
"delta %d total offset %d (0x%x)\n",
4147-
varNum, stkOffs, osrFrameSize, osrSpToFpDelta, offset, offset);
4148-
4149-
genInstrWithConstant(ins_Load(lclTyp), size, varDsc->GetRegNum(), genFramePointerReg(), offset, initReg);
4150-
*pInitRegZeroed = false;
4151-
#endif // TARGET_LOONGARCH64 || TARGET_RISCV64
4121+
#endif // TARGET_ARM64 || TARGET_LOONGARCH64 || TARGET_RISCV64
41524122
}
41534123
}
41544124

src/coreclr/jit/codegenloongarch64.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -691,7 +691,7 @@ void CodeGen::genRestoreCalleeSavedRegistersHelp(regMaskTP regsToRestoreMask, in
691691
* |-----------------------|
692692
* | PSP slot | // 8 bytes (omitted in NativeAOT ABI)
693693
* |-----------------------|
694-
* |Callee saved registers | // multiple of 8 bytes, not includting FP/RA
694+
* |Callee saved registers | // multiple of 8 bytes, not including FP/RA
695695
* |-----------------------|
696696
* | Saved FP, RA | // 16 bytes
697697
* |-----------------------|

src/coreclr/jit/codegenriscv64.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -787,7 +787,7 @@ void CodeGen::genRestoreCalleeSavedRegistersHelp(regMaskTP regsToRestoreMask, in
787787
* |-----------------------|
788788
* ~ alignment padding ~ // To make the whole frame 16 byte aligned
789789
* |-----------------------|
790-
* |Callee saved registers | // multiple of 8 bytes, not includting FP/RA
790+
* |Callee saved registers | // multiple of 8 bytes, not including FP/RA
791791
* |-----------------------|
792792
* | Saved FP, RA | // 16 bytes
793793
* |-----------------------|

src/coreclr/jit/compiler.cpp

+1-7
Original file line numberDiff line numberDiff line change
@@ -5834,18 +5834,12 @@ void Compiler::generatePatchpointInfo()
58345834
//
58355835
const int totalFrameSize = codeGen->genTotalFrameSize() + TARGET_POINTER_SIZE;
58365836
const int offsetAdjust = 0;
5837-
#elif defined(TARGET_ARM64)
5837+
#elif defined(TARGET_ARM64) || defined(TARGET_LOONGARCH64) || defined(TARGET_RISCV64)
58385838
// SP is not manipulated by calls so no frame size adjustment needed.
58395839
// Local Offsets may need adjusting, if FP is at bottom of frame.
58405840
//
58415841
const int totalFrameSize = codeGen->genTotalFrameSize();
58425842
const int offsetAdjust = codeGen->genSPtoFPdelta() - totalFrameSize;
5843-
#elif defined(TARGET_LOONGARCH64) || defined(TARGET_RISCV64)
5844-
// SP is not manipulated by calls so no frame size adjustment needed.
5845-
// Local Offsets are adjusted which relative to SP.
5846-
//
5847-
const int totalFrameSize = codeGen->genTotalFrameSize();
5848-
const int offsetAdjust = codeGen->genSPtoFPdelta();
58495843
#else
58505844
NYI("patchpoint info generation");
58515845
const int offsetAdjust = 0;

src/coreclr/jit/lclvars.cpp

+3-1
Original file line numberDiff line numberDiff line change
@@ -6571,7 +6571,9 @@ void Compiler::lvaAssignVirtualFrameOffsetsToLocals()
65716571
//
65726572
if (opts.IsOSR())
65736573
{
6574-
#if !defined(TARGET_LOONGARCH64) && !defined(TARGET_RISCV64)
6574+
#if defined(TARGET_LOONGARCH64) || defined(TARGET_RISCV64)
6575+
originalFrameStkOffs = info.compPatchpointInfo->TotalFrameSize();
6576+
#else
65756577
originalFrameSize = info.compPatchpointInfo->TotalFrameSize();
65766578
originalFrameStkOffs = stkOffs;
65776579
stkOffs -= originalFrameSize;

0 commit comments

Comments
 (0)