diff options
Diffstat (limited to 'src/classlibnative')
-rw-r--r-- | src/classlibnative/bcltype/arraynative.cpp | 16 | ||||
-rw-r--r-- | src/classlibnative/bcltype/arraynative.h | 3 |
2 files changed, 14 insertions, 5 deletions
diff --git a/src/classlibnative/bcltype/arraynative.cpp b/src/classlibnative/bcltype/arraynative.cpp index a40aed5619..eb5cfd9340 100644 --- a/src/classlibnative/bcltype/arraynative.cpp +++ b/src/classlibnative/bcltype/arraynative.cpp @@ -133,21 +133,29 @@ FCIMPL1(INT64, ArrayNative::GetLongLengthNoRank, ArrayBase* array) FCIMPLEND -FCIMPL1(INT32, ArrayNative::GetDataPtrOffsetInternal, ArrayBase* array) +FCIMPL1(void*, ArrayNative::GetRawArrayData, ArrayBase* array) { FCALL_CONTRACT; VALIDATEOBJECT(array); - if (array == NULL) - FCThrow(kNullReferenceException); + _ASSERTE(array != NULL); - return ArrayBase::GetDataPtrOffset(array->GetMethodTable()); + return array->GetDataPtr(); } FCIMPLEND +FCIMPL1(INT32, ArrayNative::GetElementSize, ArrayBase* array) +{ + FCALL_CONTRACT; + + VALIDATEOBJECT(array); + _ASSERTE(array != NULL); + return (INT32)array->GetComponentSize(); +} +FCIMPLEND diff --git a/src/classlibnative/bcltype/arraynative.h b/src/classlibnative/bcltype/arraynative.h index 3b6d5495f3..8161deca83 100644 --- a/src/classlibnative/bcltype/arraynative.h +++ b/src/classlibnative/bcltype/arraynative.h @@ -26,7 +26,8 @@ class ArrayNative { public: static FCDECL1(INT32, GetRank, ArrayBase* pArray); - static FCDECL1(INT32, GetDataPtrOffsetInternal, ArrayBase* array); + static FCDECL1(void*, GetRawArrayData, ArrayBase* array); + static FCDECL1(INT32, GetElementSize, ArrayBase* array); static FCDECL2(INT32, GetLowerBound, ArrayBase* pArray, unsigned int dimension); static FCDECL2(INT32, GetUpperBound, ArrayBase* pArray, unsigned int dimension); static FCDECL1(INT32, GetLengthNoRank, ArrayBase* pArray); |