summaryrefslogtreecommitdiff
path: root/src/vm/comutilnative.cpp
diff options
context:
space:
mode:
authorKoundinya Veluri <kouvel@microsoft.com>2017-03-09 13:12:43 -0800
committerGitHub <noreply@github.com>2017-03-09 13:12:43 -0800
commita6a7bde881a404fd3e44b2909960675072b4fca1 (patch)
tree461458153ed9001dafe537f28a1552124ca9064c /src/vm/comutilnative.cpp
parent515af5ef422e33f35c13a84bf3d4bd812ca1e0de (diff)
downloadcoreclr-a6a7bde881a404fd3e44b2909960675072b4fca1.tar.gz
coreclr-a6a7bde881a404fd3e44b2909960675072b4fca1.tar.bz2
coreclr-a6a7bde881a404fd3e44b2909960675072b4fca1.zip
Improve span copy of pointers and structs containing pointers (#9999)
Improve span copy of pointers and structs containing pointers Fixes #9161 PR #9786 fixes perf of span copy of types that don't contain references
Diffstat (limited to 'src/vm/comutilnative.cpp')
-rw-r--r--src/vm/comutilnative.cpp14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/vm/comutilnative.cpp b/src/vm/comutilnative.cpp
index 6ce611d070..8e8d8a6aac 100644
--- a/src/vm/comutilnative.cpp
+++ b/src/vm/comutilnative.cpp
@@ -40,6 +40,8 @@
#include "comcache.h"
#endif // FEATURE_COMINTEROP
+#include "arraynative.inl"
+
#define STACK_OVERFLOW_MESSAGE W("StackOverflowException")
//These are defined in System.ParseNumbers and should be kept in sync.
@@ -1494,13 +1496,23 @@ FCIMPL5(VOID, Buffer::InternalBlockCopy, ArrayBase *src, int srcOffset, ArrayBas
}
FCIMPLEND
-void QCALLTYPE SpanNative::SpanClear(void *dst, size_t length)
+void QCALLTYPE MemoryNative::Clear(void *dst, size_t length)
{
QCALL_CONTRACT;
memset(dst, 0, length);
}
+FCIMPL3(VOID, MemoryNative::BulkMoveWithWriteBarrier, void *dst, void *src, size_t byteCount)
+{
+ FCALL_CONTRACT;
+
+ InlinedMemmoveGCRefsHelper(dst, src, byteCount);
+
+ FC_GC_POLL();
+}
+FCIMPLEND
+
void QCALLTYPE Buffer::MemMove(void *dst, void *src, size_t length)
{
QCALL_CONTRACT;