diff options
author | Koundinya Veluri <kouvel@microsoft.com> | 2017-03-09 13:12:43 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-03-09 13:12:43 -0800 |
commit | a6a7bde881a404fd3e44b2909960675072b4fca1 (patch) | |
tree | 461458153ed9001dafe537f28a1552124ca9064c /src/vm/comutilnative.cpp | |
parent | 515af5ef422e33f35c13a84bf3d4bd812ca1e0de (diff) | |
download | coreclr-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.cpp | 14 |
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; |