diff options
Diffstat (limited to 'src/Native/Runtime/inc/eetype.inl')
-rw-r--r-- | src/Native/Runtime/inc/eetype.inl | 79 |
1 files changed, 9 insertions, 70 deletions
diff --git a/src/Native/Runtime/inc/eetype.inl b/src/Native/Runtime/inc/eetype.inl index e52fed148..38e4ad89a 100644 --- a/src/Native/Runtime/inc/eetype.inl +++ b/src/Native/Runtime/inc/eetype.inl @@ -372,65 +372,15 @@ inline UInt8 EEType::GetNullableValueOffset() return pOptFields->GetNullableValueOffset(0) + 1; } -inline void EEType::set_GenericDefinition(EEType *pTypeDef) -{ - ASSERT(IsGeneric()); - - UInt32 cbOffset = GetFieldOffset(ETF_GenericDefinition); - - *(EEType**)((UInt8*)this + cbOffset) = pTypeDef; -} - -inline EETypeRef & EEType::get_GenericDefinition() -{ - ASSERT(IsGeneric()); - - UInt32 cbOffset = GetFieldOffset(ETF_GenericDefinition); - - return *(EETypeRef *)((UInt8*)this + cbOffset); -} - inline void EEType::set_GenericComposition(GenericComposition *pGenericComposition) { - ASSERT(IsGeneric()); + ASSERT(IsGeneric() && IsDynamicType()); UInt32 cbOffset = GetFieldOffset(ETF_GenericComposition); *(GenericComposition **)((UInt8*)this + cbOffset) = pGenericComposition; } -inline GenericComposition *EEType::get_GenericComposition() -{ - ASSERT(IsGeneric()); - - UInt32 cbOffset = GetFieldOffset(ETF_GenericComposition); - - GenericComposition *pGenericComposition = *(GenericComposition **)((UInt8*)this + cbOffset); - - return pGenericComposition; -} - -inline UInt32 EEType::get_GenericArity() -{ - GenericComposition *pGenericComposition = get_GenericComposition(); - - return pGenericComposition->GetArity(); -} - -inline EETypeRef* EEType::get_GenericArguments() -{ - GenericComposition *pGenericComposition = get_GenericComposition(); - - return pGenericComposition->GetArguments(); -} - -inline GenericVarianceType* EEType::get_GenericVariance() -{ - GenericComposition *pGenericComposition = get_GenericComposition(); - - return pGenericComposition->GetVariance(); -} - inline EEType * EEType::get_DynamicTemplateType() { ASSERT(IsDynamicType()); @@ -570,7 +520,7 @@ inline DynamicModule * EEType::get_DynamicModule() + (fRequiresOptionalFields ? sizeof(UIntTarget) : 0) + (fRequiresNullableType ? sizeof(UIntTarget) : 0) + (fHasSealedVirtuals ? sizeof(Int32) : 0) - + (fHasGenericInfo ? sizeof(UIntTarget)*2 : 0); + + (fHasGenericInfo ? sizeof(UInt32)*2 : 0); } #if !defined(BINDER) && !defined(DACCESS_COMPILE) @@ -578,21 +528,10 @@ inline DynamicModule * EEType::get_DynamicModule() // represented - instead the classlib has a common one for all arrays inline EEType * EEType::GetArrayBaseType() { - RuntimeInstance * pRuntimeInstance = GetRuntimeInstance(); - Module * pModule = NULL; - if (pRuntimeInstance->IsInStandaloneExeMode()) - { - // With dynamically created types, there is no home module to use to find System.Array. That's okay - // for now, but when we support multi-module, we'll have to do something more clever here. - pModule = pRuntimeInstance->GetStandaloneExeModule(); - } - else - { - EEType *pEEType = this; - if (pEEType->IsDynamicType()) - pEEType = pEEType->get_DynamicTemplateType(); - pModule = GetRuntimeInstance()->FindModuleByReadOnlyDataAddress(pEEType); - } + EEType *pEEType = this; + if (pEEType->IsDynamicType()) + pEEType = pEEType->get_DynamicTemplateType(); + Module * pModule = GetRuntimeInstance()->FindModuleByReadOnlyDataAddress(pEEType); EEType * pArrayBaseType = pModule->GetArrayBaseType(); return pArrayBaseType; } @@ -684,7 +623,7 @@ __forceinline UInt32 EEType::GetFieldOffset(EETypeField eField) return cbOffset; } if (IsGeneric()) - cbOffset += sizeof(UIntTarget); + cbOffset += (IsDynamicType() ? sizeof(UIntTarget) : sizeof(UInt32)); if (eField == ETF_GenericComposition) { @@ -692,7 +631,7 @@ __forceinline UInt32 EEType::GetFieldOffset(EETypeField eField) return cbOffset; } if (IsGeneric()) - cbOffset += sizeof(UIntTarget); + cbOffset += (IsDynamicType() ? sizeof(UIntTarget) : sizeof(UInt32)); if (eField == ETF_DynamicModule) { @@ -806,7 +745,7 @@ __forceinline UInt32 EEType::GetFieldOffset(EETypeField eField) { return cbOffset; } - cbOffset += sizeof(UIntTarget); + cbOffset += sizeof(UInt32); if (eField == ETF_GenericComposition) { |