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:
authorJan Kotas <jkotas@microsoft.com>2015-12-15 00:41:18 +0300
committerJan Kotas <jkotas@microsoft.com>2015-12-15 02:46:34 +0300
commita812c6d5a53f666674716a4488fefd628483dcca (patch)
tree118dde23bb0faaaddf911dbeebdf6a0a3bcd3c43 /src/ILCompiler.Compiler
parent964952dfbda231ab28e582ce4638488729e94e57 (diff)
Use proper type nodes for RelatedType
Diffstat (limited to 'src/ILCompiler.Compiler')
-rw-r--r--src/ILCompiler.Compiler/src/Compiler/DependencyAnalysis/EETypeNode.cs30
1 files changed, 20 insertions, 10 deletions
diff --git a/src/ILCompiler.Compiler/src/Compiler/DependencyAnalysis/EETypeNode.cs b/src/ILCompiler.Compiler/src/Compiler/DependencyAnalysis/EETypeNode.cs
index 23fadade0..8778a7587 100644
--- a/src/ILCompiler.Compiler/src/Compiler/DependencyAnalysis/EETypeNode.cs
+++ b/src/ILCompiler.Compiler/src/Compiler/DependencyAnalysis/EETypeNode.cs
@@ -406,23 +406,33 @@ namespace ILCompiler.DependencyAnalysis
private void OutputRelatedType(NodeFactory factory, ref ObjectDataBuilder objData)
{
- TypeDesc relatedType = _type.BaseType;
+ ISymbolNode relatedTypeNode = null;
+
if (_type.IsArray || _type.IsPointer)
{
- relatedType = ((ParameterizedType)_type).ParameterType;
+ var parameterType = ((ParameterizedType)_type).ParameterType;
+ relatedTypeNode = factory.NecessaryTypeSymbol(parameterType);
}
-
- if (relatedType != null)
+ else
{
- if (_constructed)
+ TypeDesc baseType = _type.BaseType;
+ if (baseType != null)
{
- objData.EmitPointerReloc(factory.ConstructedTypeSymbol(relatedType));
- }
- else
- {
- objData.EmitPointerReloc(factory.NecessaryTypeSymbol(relatedType));
+ if (_constructed)
+ {
+ relatedTypeNode = factory.ConstructedTypeSymbol(baseType);
+ }
+ else
+ {
+ relatedTypeNode = factory.NecessaryTypeSymbol(baseType);
+ }
}
}
+
+ if (relatedTypeNode != null)
+ {
+ objData.EmitPointerReloc(relatedTypeNode);
+ }
else
{
objData.EmitZeroPointer();