-
Notifications
You must be signed in to change notification settings - Fork 5.2k
Labels
area-VM-coreclrin-prThere is an active PR which will close this issue when it is mergedThere is an active PR which will close this issue when it is merged
Milestone
Description
Benefits:
- 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:
-
JIT_GetFieldAddr_Framed,JIT_NewMDArrRemove HMFs from JIT helpers #111034 -
JIT_NewShare allocation helpers between CoreCLR and NativeAOT #115339 -
JIT_NewMaybeFrozenShare allocation helpers between CoreCLR and NativeAOT #115339 -
FramedAllocateStringShare allocation helpers between CoreCLR and NativeAOT #115339 -
JIT_StrCnsConvert JitHelperJIT_StrCnsto QCall #113674 -
JIT_NewArr1Share allocation helpers between CoreCLR and NativeAOT #115339 -
JIT_NewArr1MaybeFrozenShare allocation helpers between CoreCLR and NativeAOT #115339 -
JIT_BoxConvert JIT_Box* to C# #115134 -
JIT_StressGC,JIT_GetRuntimeFieldStub,JIT_GetRuntimeMethodStubRemove HMFs from JIT helpers #111088 -
JIT_UserBreakpointJIT_GetRuntimeType_FramedRemove HMFs from JIT helpers #111134 -
JIT_MonEnter_HelperRemove helper method frames from Monitors #113242 -
JIT_MonTryEnter_HelperRemove helper method frames from Monitors #113242 -
JIT_MonExit_HelperRemove helper method frames from Monitors #113242 -
JIT_MonExit_SignalRemove helper method frames from Monitors #113242 -
IL_Throw,IL_RethrowRemove HMF from IL_Throw/IL_ThrowExact/IL_Rethrow #115253 -
JIT_ThrowMethodAccessException,JIT_ThrowFieldAccessException,JIT_ThrowClassAccessExceptionRemove HMFs from JIT helpers #111075 -
JIT_PollGC_FramedGc enter/leave/poll without HELPER_METHOD_FRAME #109378 -
JIT_PInvokeEndRarePathGc enter/leave/poll without HELPER_METHOD_FRAME #109378 -
JIT_RareDisableHelper/JIT_RareDisableHelperWorkerGc enter/leave/poll without HELPER_METHOD_FRAME #109378 -
JIT_Patchpoint_FramedReplace HELPER_METHOD_FRAME with DynamicHelperFrame in patchpoints #112025 -
JIT_PartialCompilationPatchpointReplace HELPER_METHOD_FRAME with DynamicHelperFrame in patchpoints #112025
List 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… #113286
Remove all remaining explicit calls to GCPoll (that is, FC_GC_POLL and FC_GC_POLL_RET):
-
Buffer::BulkMoveWithWriteBarrier,GCInterface::SuppressFinalize,GCInterface::GetGenerationInternal,GCInterface::GetSegmentSize,GCInterface::CollectionCount,ObjectNative::ContentEquals- Remove all explicit GC Poll calls in unmanaged code. #113715
The following clean-up can occur after all the above is complete:
- Removal of any
HELPER_METHOD_FRAMErelated infrastrcture infcall.handfcall.cppCleanup HMF definitions #116085 - Update BoTR to remove description of the
HELPER_METHOD_FRAMEconcept. Cleanup HMF definitions #116085
am11, PaulusParssinen, davidwrighton, En3Tho, Zagrthos and 4 morejkoritzinsky
Metadata
Metadata
Assignees
Labels
area-VM-coreclrin-prThere is an active PR which will close this issue when it is mergedThere is an active PR which will close this issue when it is merged