typeInfo->m_type_size = typeHandle.AsMethodTable()->GetClass()->GetSize();
- pTypeMap->Add(typeInfo->GetTypeKey(), typeInfo);
- typeInfo->CalculateName();
-
RefTypeInfo* refTypeInfo = nullptr;
if (!typeHandle.IsValueType())
{
pTypeMap->Add(refTypeInfo->GetTypeKey(), refTypeInfo);
}
+
+ pTypeMap->Add(typeInfo->GetTypeKey(), typeInfo);
+ typeInfo->CalculateName();
+
//
// Now fill in the array
//
else
{
PTR_BYTE base = 0;
- if (!pField->IsRVA())
+ MethodTable* pMT = pField->GetEnclosingMethodTable();
+ base = pField->GetBase();
+
+ // TODO: add support of generics with static fields
+ if (pField->IsRVA() || !pMT->IsDynamicStatics())
{
- MethodTable* pMT = pField->GetEnclosingMethodTable();
- base = pField->GetBaseInDomainLocalModule(pMT->GetDomainLocalModule(NULL));
+ PTR_VOID pAddress = pField->GetStaticAddressHandle((PTR_VOID)dac_cast<TADDR>(base));
+ info->members[i].m_static_member_address = dac_cast<TADDR>(pAddress);
}
- PTR_VOID pAddress = pField->GetStaticAddressHandle((PTR_VOID)dac_cast<TADDR>(base));
- info->members[i].m_static_member_address = dac_cast<TADDR>(pAddress);
}
info->members[i].m_member_type =
else
return typeInfo;
}
+ case ELEMENT_TYPE_PTR:
case ELEMENT_TYPE_BYREF:
{
TypeInfoBase* valTypeInfo = GetTypeInfoFromTypeHandle(typeHandle.GetTypeParam(), pTypeMap);