diff options
author | Jan Kotas <jkotas@microsoft.com> | 2016-01-12 23:47:18 +0300 |
---|---|---|
committer | Jan Kotas <jkotas@microsoft.com> | 2016-01-13 02:34:48 +0300 |
commit | 1ea2ab46fd18a66dd33dccda27dd7b4ad1c37f55 (patch) | |
tree | 8d2c25ffd2059f5f9db5055e43dd3ba4d494b728 /src/Native | |
parent | c4232511ff688be60494042599eafa259a88b2aa (diff) |
Implement StelemRef and LdelemaRef helpers
Diffstat (limited to 'src/Native')
-rw-r--r-- | src/Native/Bootstrap/main.cpp | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/src/Native/Bootstrap/main.cpp b/src/Native/Bootstrap/main.cpp index 09cc1275d..a3aeb341a 100644 --- a/src/Native/Bootstrap/main.cpp +++ b/src/Native/Bootstrap/main.cpp @@ -15,6 +15,8 @@ extern "C" Object * RhNewObject(MethodTable * pMT); extern "C" Object * RhNewArray(MethodTable * pMT, int32_t elements); extern "C" void * RhTypeCast_IsInstanceOf(void * pObject, MethodTable * pMT); extern "C" void * RhTypeCast_CheckCast(void * pObject, MethodTable * pMT); +extern "C" void RhpStelemRef(void * pArray, int index, void * pObj); +extern "C" void * RhpLdelemaRef(void * pArray, int index, MethodTable * pMT); extern "C" __declspec(noreturn) void RhpThrowEx(void * pEx); #ifdef CPPCODEGEN @@ -39,6 +41,16 @@ extern "C" Object * __isinst(void * obj, MethodTable * pTargetMT) return (Object *)RhTypeCast_IsInstanceOf(obj, pTargetMT); } +extern "C" void __stelem_ref(void * pArray, unsigned idx, void * obj) +{ + RhpStelemRef(pArray, idx, obj); +} + +extern "C" void* __ldelema_ref(void * pArray, unsigned idx, MethodTable * type) +{ + return RhpLdelemaRef(pArray, idx, type); +} + extern "C" void __throw_exception(void * pEx) { RhpThrowEx(pEx); @@ -136,18 +148,6 @@ Object * __allocate_string(int32_t len) #endif } -extern "C" void __stelem_ref(System::Array * pArray, unsigned idx, Object * val) -{ - // TODO: Range checks, writer barrier, etc. - ((Object **)(pArray->GetArrayData()))[idx] = val; -} - -extern "C" void* __ldelema_ref(System::Array * pArray, unsigned idx, MethodTable * type) -{ - // TODO: Range checks, etc. - return &(((Object **)(pArray->GetArrayData()))[idx]); -} - void PrintStringObject(System::String *pStringToPrint) { // Get the number of characters in managed string (stored as UTF16) @@ -221,7 +221,7 @@ Object * __get_commandline_args(int argc, char * argv[]) for (int i = 0; i < argc; i++) { - __stelem_ref(args, i, __load_string_literal(argv[i])); + RhpStelemRef(args, i, __load_string_literal(argv[i])); } return (Object *)args; |