- 
                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