summaryrefslogtreecommitdiff
path: root/src/vm/jitinterface.cpp
diff options
context:
space:
mode:
authorAhson Khan <ahkha@microsoft.com>2017-12-13 05:50:50 -0800
committerJan Kotas <jkotas@microsoft.com>2017-12-13 08:50:50 -0500
commit4416b9b0cb2bb0ca5536d6193d197a13844da4f5 (patch)
tree2634178fdef15bc17afed172170d5f8ecd3e5544 /src/vm/jitinterface.cpp
parent9f1dc4444478ccbac2476d53949c471583876ad7 (diff)
downloadcoreclr-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.cpp20
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())
{