Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/corert.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/Native/Runtime/inc/eetype.inl')
-rw-r--r--src/Native/Runtime/inc/eetype.inl79
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)
{