* Set the CORINFO_EH_CLAUSE_SAMETRY on CORINFO_EH_CLAUSE
This change makes setting the `CORINFO_EH_CLAUSE_SAMETRY` on
`CORINFO_EH_CLAUSE` to happen for coreclr to. It is a prerequisity for the
port of exception handling from nativeaot to coreclr and it is a noop on
coreclr with the old exception handling.
* Fix comments
* Add clr-abi note and r2rdump support for the flag
* Fix markdown LINT error
* Update docs/design/coreclr/botr/clr-abi.md
* Update docs/design/coreclr/botr/clr-abi.md
* Update the ABI doc
---------
Co-authored-by: Jan Kotas <jkotas@microsoft.com>
* EnC non-functional changes
- Update inappropriate naming
- Update many logging statements
- Remove unused code
* EnC support for fields on generic types
* EnC support for methods on generic types
* Fix use after free introduced in EnC breakpoint.
Fix off by one for string logging.
* update new feature capabilities, JIT GUID
* Fix non-enc build
* Fix EnCFieldIndex check
* Remove IsFdPrivate assert
---------
Co-authored-by: Aaron R Robinson <arobins@microsoft.com>
Co-authored-by: Juan Hoyos <19413848+hoyosjs@users.noreply.github.com>
Co-authored-by: Tom McDonald <tommcdon@microsoft.com>
This adds support for EnC on arm64. A couple of notes on the
implementation compared to x64:
- On x64 we get the fixed stack size from unwind info. However, for the
frames we set up on arm64 for EnC it is not possible to extract the
frame size from there because their prologs generally look like
stp fp, lr, [sp,#-16]!
mov fp, sp
sub sp, sp, #144
with unwind codes like the following:
set_fp; mov fp, sp
save_fplr_x #1 (0x01); tp fp, lr, [sp, #-16]!
As can be seen, it is not possible to get the fixed stack size from
unwind info in this case. Instead we pass it through the GC info that
already has a section for EnC data.
- On arm64 the JIT is required to place the PSPSym at the same offset
from caller-SP for both the main function and for funclets. Due to
this we try to allocate the PSPSym as early as possible in the main
function and we must take some care in funclets. However, this
conflicts with the EnC frame header that the JIT uses to place values
that must be preserved on EnC transitions. This is currently
callee-saved registers and the MonitorAcquired boolean.
Before this change we were allocating PSPSym above (before) the
monitor acquired boolean, but we now have to allocate MonitorAcquired
first, particularly because the size of the preserved header cannot
change on EnC transitions, while the PSPSym can disappear or appear.
This changes frame allocation slightly for synchronized functions.
* [LoongArch64] add ToolBox directory about jitinterace for getting ABI-info. (#59561)
Co-authored-by: Loongson's .NET-teams
* [LoongArch64] add new interace for getting ABI-info. (#59561)
* [LoongArch64] add the linking page for LoongArch64 ABI-info. (#59561)
* [LoongArch64] moved ThunkInput.txt to #62885.
* [LoongArch64] moved vm/jitinterface.cpp to #62885.
* remove the JIT/EE interface back from #62885..
* [LoongArch64] Fix the compiling error after merge.
* [LoongArch64] add comments for the returned value of `getFieldTypeByHnd`.
* [LoongArch64] rename getFieldTypeByHnd to getFieldSizeClassificationByHnd.
Also add macro define for returned value of `getFieldSizeClassificationByHnd`.
* [LoongArch64] Delete the interface `getArgType2`.
And refactor the returned values of `getFieldSizeClassificationByHnd`.
* [LoongArch64] delete `GetArgType` within `ToolBox/superpmi`.
* [LoongArch64] rename `getFieldSizeClassificationByHnd` to
`getLoongArch64PassStructInRegisterFlags`.
* [LoongArch64] amend the floating-ABI for native-struct.
* [LoongArch64] update all related `GetFieldSizeClassificationByHnd`
by `GetLoongArch64PassStructInRegisterFlags` and amend some comments.
* [LoongArch64] replace `LookupApproxFieldTypeHandle()`
by `GetFieldTypeHandleThrowing()`.
* [LoongArch64] implements the crossgen2 for LoongArch64.
* Revert "[LoongArch64] implements the crossgen2 for LoongArch64."
This reverts commit b05a2b90e8d8a2f6d1cf7f101ddfc9d4ed8d984e.
The crossgen2 for LoongArch64 will be submitted by a new PR.
* [LoongArch64] update the `GUID JITEEVersionIdentifier`.
Also delete some unused comments.
Co-authored-by: qiaopengcheng <qiaopengcheng-hf@loongson.cn>
Add support for generating control-flow guard checks. The support is enabled by a JIT flag or by setting COMPlus_JitForceControlFlowGuard=1.
Co-authored-by: Michal Strehovský <MichalStrehovsky@users.noreply.github.com>
* Convert some old style intrinsics to NamedIntrinsic
* Delete GetStubContextAddr and related code
* More cleanups
Co-authored-by: EgorBo <egorbo@gmail.com>
Co-authored-by: Jan Kotas <jkotas@microsoft.com>
- update links to sources from dotnet/coreclr -> dotnet/runtime/src/coreclr
- fix dead urls (github and non-github) under docs/design/coreclr.
- use https://software.intel.com/sites/default/files/article/402129/mpx-linux64-abi.pdf as a new home for x64 System V ABI, as http://x86-64.org is now abandoned. Update source files as well.
- normalize “, ” and ’ to ascii " and ' and remove trailing whitespaces in modified files.