@@ -4922,7 +4922,7 @@ void CodeGen::genEnregisterOSRArgsAndLocals()
4922
4922
4923
4923
GetEmitter ()->emitIns_R_AR (ins_Load (lclTyp), size, varDsc->GetRegNum (), genFramePointerReg (), offset);
4924
4924
4925
- #elif defined(TARGET_ARM64) || defined(TARGET_LOONGARCH64) || defined( TARGET_RISCV64)
4925
+ #elif defined(TARGET_ARM64) || defined(TARGET_RISCV64)
4926
4926
4927
4927
// Patchpoint offset is from top of Tier0 frame
4928
4928
//
@@ -4948,6 +4948,39 @@ void CodeGen::genEnregisterOSRArgsAndLocals()
4948
4948
// | | | |
4949
4949
const int offset = stkOffs + tier0FrameSize + osrFrameSize - osrSpToFpDelta;
4950
4950
4951
+ JITDUMP (" ---OSR--- V%02u (reg) Tier0 virtual offset %d OSR frame size %d OSR sp-fp "
4952
+ " delta %d total offset %d (0x%x)\n " ,
4953
+ varNum, stkOffs, osrFrameSize, osrSpToFpDelta, offset, offset);
4954
+
4955
+ genInstrWithConstant (ins_Load (lclTyp), size, varDsc->GetRegNum (), genFramePointerReg (), offset, initReg);
4956
+ *pInitRegZeroed = false ;
4957
+
4958
+ #elif defined(TARGET_LOONGARCH64)
4959
+
4960
+ // Patchpoint offset is from top of Tier0 frame
4961
+ //
4962
+ // We need to determine the frame-pointer relative
4963
+ // offset for this variable in the osr frame.
4964
+ //
4965
+ // First get the fp's relative offset within Tier0 frame
4966
+ //
4967
+ const int tier0FrameOffset = compiler->info .compPatchpointInfo ->CalleeSaveRegisters ();
4968
+
4969
+ // then add the OSR frame size
4970
+ //
4971
+ const int osrFrameSize = genTotalFrameSize ();
4972
+
4973
+ // then subtract OSR SP-FP delta
4974
+ //
4975
+ const int osrSpToFpDelta = genSPtoFPdelta ();
4976
+
4977
+ // | => tier0 top of frame relative
4978
+ // | + => tier0's fp relative offset
4979
+ // | | + => osr bottom of frame (sp) relative
4980
+ // | | | - => osr fp relative
4981
+ // | | | |
4982
+ const int offset = stkOffs + tier0FrameOffset + osrFrameSize - osrSpToFpDelta;
4983
+
4951
4984
JITDUMP (" ---OSR--- V%02u (reg) Tier0 virtual offset %d OSR frame size %d OSR sp-fp "
4952
4985
" delta %d total offset %d (0x%x)\n " ,
4953
4986
varNum, stkOffs, osrFrameSize, osrSpToFpDelta, offset, offset);
0 commit comments