Skip to content

Commit f9a229d

Browse files
committed
CreateArray now takes caller parameter
- Required to properly created array instance with generic type.
1 parent 818e7e6 commit f9a229d

File tree

3 files changed

+10
-4
lines changed

3 files changed

+10
-4
lines changed

src/CLR/Core/CLR_RT_HeapBlock_Array.cpp

+3-2
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,8 @@ HRESULT CLR_RT_HeapBlock_Array::CreateInstance(
8686
CLR_RT_HeapBlock &reference,
8787
CLR_UINT32 length,
8888
CLR_RT_Assembly *assm,
89-
CLR_UINT32 tk)
89+
CLR_UINT32 tk,
90+
const CLR_RT_MethodDef_Instance *caller)
9091
{
9192
NATIVE_PROFILE_CLR_CORE();
9293
NANOCLR_HEADER();
@@ -97,7 +98,7 @@ HRESULT CLR_RT_HeapBlock_Array::CreateInstance(
9798

9899
memset(&ref, 0, sizeof(struct CLR_RT_HeapBlock));
99100

100-
if (cls.ResolveToken(tk, assm))
101+
if (cls.ResolveToken(tk, assm, caller))
101102
{
102103
ref.SetReflection(cls);
103104
}

src/CLR/Core/Interpreter.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -2851,7 +2851,7 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg)
28512851

28522852
for (int pass = 0; pass < 2; pass++)
28532853
{
2854-
hr = CLR_RT_HeapBlock_Array::CreateInstance(evalPos[0], size, assm, arg);
2854+
hr = CLR_RT_HeapBlock_Array::CreateInstance(evalPos[0], size, assm, arg, &stack->m_call);
28552855
if (SUCCEEDED(hr))
28562856
{
28572857
break;

src/CLR/Include/nanoCLR_Runtime__HeapBlock.h

+6-1
Original file line numberDiff line numberDiff line change
@@ -1839,7 +1839,12 @@ struct CLR_RT_HeapBlock_Array : public CLR_RT_HeapBlock
18391839
CLR_UINT32 length,
18401840
const CLR_RT_ReflectionDef_Index &reflex);
18411841
static HRESULT CreateInstance(CLR_RT_HeapBlock &reference, CLR_UINT32 length, const CLR_RT_TypeDef_Index &cls);
1842-
static HRESULT CreateInstance(CLR_RT_HeapBlock &reference, CLR_UINT32 length, CLR_RT_Assembly *assm, CLR_UINT32 tk);
1842+
static HRESULT CreateInstance(
1843+
CLR_RT_HeapBlock &reference,
1844+
CLR_UINT32 length,
1845+
CLR_RT_Assembly *assm,
1846+
CLR_UINT32 tk,
1847+
const CLR_RT_MethodDef_Instance *caller);
18431848

18441849
CLR_UINT8 *GetFirstElement()
18451850
{

0 commit comments

Comments
 (0)