File tree 1 file changed +18
-3
lines changed
src/coreclr/nativeaot/Runtime/windows
1 file changed +18
-3
lines changed Original file line number Diff line number Diff line change @@ -573,9 +573,24 @@ uintptr_t CoffNativeCodeManager::GetConservativeUpperBoundForOutgoingArgs(Method
573
573
574
574
upperBound = dac_cast<TADDR>(context.Sp );
575
575
#else
576
- PORTABILITY_ASSERT (" GetConservativeUpperBoundForOutgoingArgs" );
577
- upperBound = NULL ;
578
- RhFailFast ();
576
+ PTR_uint8_t gcInfo;
577
+ uint32_t codeOffset = GetCodeOffset (pMethodInfo, (PTR_VOID)pRegisterSet->IP , &gcInfo);
578
+
579
+ hdrInfo infoBuf;
580
+ size_t infoSize = DecodeGCHdrInfo (GCInfoToken (gcInfo), codeOffset, &infoBuf);
581
+ PTR_CBYTE table = gcInfo + infoSize;
582
+
583
+ REGDISPLAY registerSet = *pRegisterSet;
584
+
585
+ ::UnwindStackFrameX86 (®isterSet,
586
+ (PTR_CBYTE)(m_moduleBase + pNativeMethodInfo->mainRuntimeFunction->BeginAddress),
587
+ codeOffset,
588
+ &infoBuf,
589
+ table,
590
+ (PTR_CBYTE)(m_moduleBase + pNativeMethodInfo->runtimeFunction->BeginAddress),
591
+ (unwindBlockFlags & UBF_FUNC_KIND_MASK) != UBF_FUNC_KIND_ROOT,
592
+ true);
593
+ upperBound = dac_cast<TADDR>(registerSet.PCTAddr );
579
594
#endif
580
595
}
581
596
return upperBound;
You can’t perform that action at this time.
0 commit comments