Moving fast parts of cast FCALLs to managed code. (#1068)
authorVladimir Sadov <vsadov@microsoft.com>
Wed, 22 Jan 2020 19:02:56 +0000 (11:02 -0800)
committerGitHub <noreply@github.com>
Wed, 22 Jan 2020 19:02:56 +0000 (11:02 -0800)
commitc3dc1fdfdcca9bf504a68be565b053c0372ac73c
tree4f82fb0d77226559b8c378588fae62214dd83fda
parent375a15baafb58b30843f750a22ddedcce70853cd
Moving fast parts of cast FCALLs to managed code. (#1068)

* Exposed casting cache to managed code
* Implemented a managed version of cache lookup
* Moved `JIT_IsInstanceOfAny` and `JIT_ChkCastAny`  to managed code as the first ones to move.
* Skip managed JIT helpers in exception stack traces and debugger
* Managed `JIT_IsInstanceOfInterface`
* All other cast helpers are managed.

Fixes:https://github.com/dotnet/coreclr/issues/27931
22 files changed:
src/coreclr/src/System.Private.CoreLib/System.Private.CoreLib.csproj
src/coreclr/src/System.Private.CoreLib/src/System/Runtime/CompilerServices/CastHelpers.cs [new file with mode: 0644]
src/coreclr/src/System.Private.CoreLib/src/System/Runtime/CompilerServices/RuntimeHelpers.CoreCLR.cs
src/coreclr/src/inc/jithelpers.h
src/coreclr/src/vm/amd64/JitHelpers_Fast.asm
src/coreclr/src/vm/amd64/cgencpu.h
src/coreclr/src/vm/appdomain.cpp
src/coreclr/src/vm/castcache.cpp
src/coreclr/src/vm/castcache.h
src/coreclr/src/vm/ceemain.cpp
src/coreclr/src/vm/ecall.cpp
src/coreclr/src/vm/ecall.h
src/coreclr/src/vm/ecalllist.h
src/coreclr/src/vm/i386/asmconstants.h
src/coreclr/src/vm/i386/cgencpu.h
src/coreclr/src/vm/i386/jithelp.asm
src/coreclr/src/vm/i386/jitinterfacex86.cpp
src/coreclr/src/vm/jithelpers.cpp
src/coreclr/src/vm/jitinterface.h
src/coreclr/src/vm/metasig.h
src/coreclr/src/vm/methodtable.h
src/coreclr/src/vm/mscorlib.h