@@ -4938,7 +4938,7 @@ void CodeGen::genEnregisterOSRArgsAndLocals()
49384938
49394939 GetEmitter ()->emitIns_R_AR (ins_Load (lclTyp), size, varDsc->GetRegNum (), genFramePointerReg (), offset);
49404940
4941- #elif defined(TARGET_ARM64) || defined(TARGET_LOONGARCH64) || defined( TARGET_RISCV64)
4941+ #elif defined(TARGET_ARM64) || defined(TARGET_RISCV64)
49424942
49434943 // Patchpoint offset is from top of Tier0 frame
49444944 //
@@ -4964,6 +4964,39 @@ void CodeGen::genEnregisterOSRArgsAndLocals()
49644964 // | | | |
49654965 const int offset = stkOffs + tier0FrameSize + osrFrameSize - osrSpToFpDelta;
49664966
4967+ JITDUMP (" ---OSR--- V%02u (reg) Tier0 virtual offset %d OSR frame size %d OSR sp-fp "
4968+ " delta %d total offset %d (0x%x)\n " ,
4969+ varNum, stkOffs, osrFrameSize, osrSpToFpDelta, offset, offset);
4970+
4971+ genInstrWithConstant (ins_Load (lclTyp), size, varDsc->GetRegNum (), genFramePointerReg (), offset, initReg);
4972+ *pInitRegZeroed = false ;
4973+
4974+ #elif defined(TARGET_LOONGARCH64)
4975+
4976+ // Patchpoint offset is from top of Tier0 frame
4977+ //
4978+ // We need to determine the frame-pointer relative
4979+ // offset for this variable in the osr frame.
4980+ //
4981+ // First get the fp's relative offset within Tier0 frame
4982+ //
4983+ const int tier0FrameOffset = compiler->info .compPatchpointInfo ->CalleeSaveRegisters ();
4984+
4985+ // then add the OSR frame size
4986+ //
4987+ const int osrFrameSize = genTotalFrameSize ();
4988+
4989+ // then subtract OSR SP-FP delta
4990+ //
4991+ const int osrSpToFpDelta = genSPtoFPdelta ();
4992+
4993+ // | => tier0 top of frame relative
4994+ // | + => tier0's fp relative offset
4995+ // | | + => osr bottom of frame (sp) relative
4996+ // | | | - => osr fp relative
4997+ // | | | |
4998+ const int offset = stkOffs + tier0FrameOffset + osrFrameSize - osrSpToFpDelta;
4999+
49675000 JITDUMP (" ---OSR--- V%02u (reg) Tier0 virtual offset %d OSR frame size %d OSR sp-fp "
49685001 " delta %d total offset %d (0x%x)\n " ,
49695002 varNum, stkOffs, osrFrameSize, osrSpToFpDelta, offset, offset);
0 commit comments