You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Performance: QCalls are generally faster than FCalls with HELPER_METHOD_FRAME
Eliminate duplication: These are redundant mechanism. Once all of them are converted, we can eliminate the duplication.
Complexity of stackwalking algorithm: HELPER_METHOD_FRAMEs make the stackwalking algorithm with all its dependencies more complicated than it needs to be. (See nibblemapmacros do a linear scan #93550 for more context.)
We want to work towards unification of CoreCLR stackwalker and native AOT stackwalker. Native AOT has much simpler stackwalker and it does not have HELPER_METHOD_FRAMEs.
Work
List of JIT helpers that need the removal of explicit HMFs:
Benefits:
Work
List of JIT helpers that need the removal of explicit HMFs:
JIT_GetFieldAddr_Framed,JIT_NewMDArrRemove HMFs from JIT helpers #111034JIT_NewShare allocation helpers between CoreCLR and NativeAOT #115339JIT_NewMaybeFrozenShare allocation helpers between CoreCLR and NativeAOT #115339FramedAllocateStringShare allocation helpers between CoreCLR and NativeAOT #115339JIT_StrCnsConvert JitHelperJIT_StrCnsto QCall #113674JIT_NewArr1Share allocation helpers between CoreCLR and NativeAOT #115339JIT_NewArr1MaybeFrozenShare allocation helpers between CoreCLR and NativeAOT #115339JIT_BoxConvert JIT_Box* to C# #115134JIT_StressGC,JIT_GetRuntimeFieldStub,JIT_GetRuntimeMethodStubRemove HMFs from JIT helpers #111088JIT_UserBreakpointJIT_GetRuntimeType_FramedRemove HMFs from JIT helpers #111134JIT_MonEnter_HelperRemove helper method frames from Monitors #113242JIT_MonTryEnter_HelperRemove helper method frames from Monitors #113242JIT_MonExit_HelperRemove helper method frames from Monitors #113242JIT_MonExit_SignalRemove helper method frames from Monitors #113242IL_Throw,IL_RethrowRemove HMF from IL_Throw/IL_ThrowExact/IL_Rethrow #115253JIT_ThrowMethodAccessException,JIT_ThrowFieldAccessException,JIT_ThrowClassAccessExceptionRemove HMFs from JIT helpers #111075JIT_PollGC_FramedGc enter/leave/poll without HELPER_METHOD_FRAME #109378JIT_PInvokeEndRarePathGc enter/leave/poll without HELPER_METHOD_FRAME #109378JIT_RareDisableHelper/JIT_RareDisableHelperWorkerGc enter/leave/poll without HELPER_METHOD_FRAME #109378JIT_Patchpoint_FramedReplace HELPER_METHOD_FRAME with DynamicHelperFrame in patchpoints #112025JIT_PartialCompilationPatchpointReplace HELPER_METHOD_FRAME with DynamicHelperFrame in patchpoints #112025List of JIT helpers with implicit HMFs through a use of
FCThrow.JIT_Div,JIT_Mod,JIT_UDiv,JIT_UMod,JIT_LDiv,JIT_LMod,JIT_ULDiv,JIT_ULMod- Move arithmetic helpers to managed code #109087 or Alternate approach for HELPER_METHOD_FRAME removal for arithmetic div… #113286Remove all remaining explicit calls to GCPoll (that is,
FC_GC_POLLandFC_GC_POLL_RET):Buffer::BulkMoveWithWriteBarrier,GCInterface::SuppressFinalize,GCInterface::GetGenerationInternal,GCInterface::GetSegmentSize,GCInterface::CollectionCount,ObjectNative::ContentEquals- Remove all explicit GC Poll calls in unmanaged code. #113715The following clean-up can occur after all the above is complete:
HELPER_METHOD_FRAMErelated infrastrcture infcall.handfcall.cppCleanup HMF definitions #116085HELPER_METHOD_FRAMEconcept. Cleanup HMF definitions #116085