diff options
author | Ahson Khan <ahkha@microsoft.com> | 2017-12-13 05:50:50 -0800 |
---|---|---|
committer | Jan Kotas <jkotas@microsoft.com> | 2017-12-13 08:50:50 -0500 |
commit | 4416b9b0cb2bb0ca5536d6193d197a13844da4f5 (patch) | |
tree | 2634178fdef15bc17afed172170d5f8ecd3e5544 /src/vm/jitinterface.cpp | |
parent | 9f1dc4444478ccbac2476d53949c471583876ad7 (diff) | |
download | coreclr-4416b9b0cb2bb0ca5536d6193d197a13844da4f5.tar.gz coreclr-4416b9b0cb2bb0ca5536d6193d197a13844da4f5.tar.bz2 coreclr-4416b9b0cb2bb0ca5536d6193d197a13844da4f5.zip |
Adding Unsafe APIs that are used by System.Memory (#15497)
* Adding Unsafe APIs that are used by System.Memory
* Update comment to match S.R.CS.U xml
* Changing S.R.CS namespace to Internal.R.CS and making Unsafe class public
* Add new InternalCompilerServices namespace to vm
Diffstat (limited to 'src/vm/jitinterface.cpp')
-rw-r--r-- | src/vm/jitinterface.cpp | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/src/vm/jitinterface.cpp b/src/vm/jitinterface.cpp index 349700ad72..ccddf9830e 100644 --- a/src/vm/jitinterface.cpp +++ b/src/vm/jitinterface.cpp @@ -7086,7 +7086,8 @@ bool getILIntrinsicImplementationForUnsafe(MethodDesc * ftn, return true; } else if (tk == MscorlibBinder::GetMethod(METHOD__UNSAFE__BYREF_AS)->GetMemberDef() || - tk == MscorlibBinder::GetMethod(METHOD__UNSAFE__OBJECT_AS)->GetMemberDef()) + tk == MscorlibBinder::GetMethod(METHOD__UNSAFE__OBJECT_AS)->GetMemberDef() || + tk == MscorlibBinder::GetMethod(METHOD__UNSAFE__AS_REF)->GetMemberDef()) { // Return the argument that was passed in. static const BYTE ilcode[] = { CEE_LDARG_0, CEE_RET }; @@ -7154,6 +7155,23 @@ bool getILIntrinsicImplementationForUnsafe(MethodDesc * ftn, methInfo->options = (CorInfoOptions)0; return true; } + else if (tk == MscorlibBinder::GetMethod(METHOD__UNSAFE__BYREF_BYTE_OFFSET)->GetMemberDef()) + { + static const BYTE ilcode[] = + { + CEE_LDARG_1, + CEE_LDARG_0, + CEE_SUB, + CEE_RET + }; + + methInfo->ILCode = const_cast<BYTE*>(ilcode); + methInfo->ILCodeSize = sizeof(ilcode); + methInfo->maxStack = 2; + methInfo->EHcount = 0; + methInfo->options = (CorInfoOptions)0; + return true; + } else if (tk == MscorlibBinder::GetMethod(METHOD__UNSAFE__BYREF_READ_UNALIGNED)->GetMemberDef() || tk == MscorlibBinder::GetMethod(METHOD__UNSAFE__PTR_READ_UNALIGNED)->GetMemberDef()) { |