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
path: root/src
diff options
context:
space:
mode:
authorMichal Strehovský <MichalStrehovsky@users.noreply.github.com>2018-08-17 11:13:04 +0300
committerGitHub <noreply@github.com>2018-08-17 11:13:04 +0300
commit9bccc04347421e51eee79ab3bab2d6546a191357 (patch)
treeaab90849b3f22e54fc51999bd11357cb6eac3125 /src
parentbe4d490756743c78841c3b31d43bcc7840047c0c (diff)
parent6f37d094505900ae316e5c44b5b9bbf33789f75c (diff)
Merge pull request #6233 from dotnet/nmirror
Merge nmirror to master
Diffstat (limited to 'src')
-rw-r--r--src/ILCompiler.Compiler/src/Compiler/DependencyAnalysis/ClonedConstructedEETypeNode.cs2
-rw-r--r--src/ILCompiler.Compiler/src/Compiler/DependencyAnalysis/EETypeNode.cs6
-rw-r--r--src/ILCompiler.Compiler/src/Compiler/DependencyAnalysis/ISymbolNode.cs10
-rw-r--r--src/ILCompiler.Compiler/src/Compiler/DependencyAnalysis/ObjectNode.cs10
-rw-r--r--src/ILCompiler.Compiler/src/Compiler/DependencyAnalysis/ShadowConcreteMethodNode.cs7
5 files changed, 20 insertions, 15 deletions
diff --git a/src/ILCompiler.Compiler/src/Compiler/DependencyAnalysis/ClonedConstructedEETypeNode.cs b/src/ILCompiler.Compiler/src/Compiler/DependencyAnalysis/ClonedConstructedEETypeNode.cs
index dda4941c2..7b7642938 100644
--- a/src/ILCompiler.Compiler/src/Compiler/DependencyAnalysis/ClonedConstructedEETypeNode.cs
+++ b/src/ILCompiler.Compiler/src/Compiler/DependencyAnalysis/ClonedConstructedEETypeNode.cs
@@ -15,7 +15,7 @@ namespace ILCompiler.DependencyAnalysis
protected override string GetName(NodeFactory factory) => this.GetMangledName(factory.NameMangler) + " cloned";
- public override ObjectNode NodeForLinkage(NodeFactory factory) => this;
+ public override ISymbolNode NodeForLinkage(NodeFactory factory) => this;
//
// A cloned type must be named differently than the type it is a clone of so the linker
diff --git a/src/ILCompiler.Compiler/src/Compiler/DependencyAnalysis/EETypeNode.cs b/src/ILCompiler.Compiler/src/Compiler/DependencyAnalysis/EETypeNode.cs
index 6299c3fff..8db7d5547 100644
--- a/src/ILCompiler.Compiler/src/Compiler/DependencyAnalysis/EETypeNode.cs
+++ b/src/ILCompiler.Compiler/src/Compiler/DependencyAnalysis/EETypeNode.cs
@@ -56,7 +56,7 @@ namespace ILCompiler.DependencyAnalysis
/// |
/// [Pointer Size] | Pointer to the generic argument and variance info (optional)
/// </summary>
- public partial class EETypeNode : ObjectNode, IExportableSymbolNode, IEETypeNode, ISymbolDefinitionNode
+ public partial class EETypeNode : ObjectNode, IExportableSymbolNode, IEETypeNode, ISymbolDefinitionNode, ISymbolNodeWithLinkage
{
protected TypeDesc _type;
internal EETypeOptionalFieldsBuilder _optionalFieldsBuilder = new EETypeOptionalFieldsBuilder();
@@ -90,9 +90,9 @@ namespace ILCompiler.DependencyAnalysis
return false;
}
- public override ObjectNode NodeForLinkage(NodeFactory factory)
+ public virtual ISymbolNode NodeForLinkage(NodeFactory factory)
{
- return (ObjectNode)factory.NecessaryTypeSymbol(_type);
+ return factory.NecessaryTypeSymbol(_type);
}
public ExportForm GetExportForm(NodeFactory factory) => factory.CompilationModuleGroup.GetExportTypeForm(Type);
diff --git a/src/ILCompiler.Compiler/src/Compiler/DependencyAnalysis/ISymbolNode.cs b/src/ILCompiler.Compiler/src/Compiler/DependencyAnalysis/ISymbolNode.cs
index ac5b5a2de..feca8b45e 100644
--- a/src/ILCompiler.Compiler/src/Compiler/DependencyAnalysis/ISymbolNode.cs
+++ b/src/ILCompiler.Compiler/src/Compiler/DependencyAnalysis/ISymbolNode.cs
@@ -32,6 +32,16 @@ namespace ILCompiler.DependencyAnalysis
bool RepresentsIndirectionCell { get; }
}
+ /// <summary>
+ /// Represents a symbol backed by a different symbol for object emission purposes.
+ /// </summary>
+ public interface ISymbolNodeWithLinkage : ISymbolNode
+ {
+ /// <summary>
+ /// Return a node that is used for linkage
+ /// </summary>
+ ISymbolNode NodeForLinkage(NodeFactory factory);
+ }
public interface ISortableSymbolNode : ISymbolNode, ISortableNode
{
diff --git a/src/ILCompiler.Compiler/src/Compiler/DependencyAnalysis/ObjectNode.cs b/src/ILCompiler.Compiler/src/Compiler/DependencyAnalysis/ObjectNode.cs
index 6dcf96ae8..21490cadc 100644
--- a/src/ILCompiler.Compiler/src/Compiler/DependencyAnalysis/ObjectNode.cs
+++ b/src/ILCompiler.Compiler/src/Compiler/DependencyAnalysis/ObjectNode.cs
@@ -51,16 +51,6 @@ namespace ILCompiler.DependencyAnalysis
return false;
}
- /// <summary>
- /// Return a node that is used for linkage
- /// </summary>
- /// <param name="factory"></param>
- /// <returns></returns>
- public virtual ObjectNode NodeForLinkage(NodeFactory factory)
- {
- return this;
- }
-
public override bool HasConditionalStaticDependencies => false;
public override bool HasDynamicDependencies => false;
public override bool InterestingForDynamicDependencyAnalysis => false;
diff --git a/src/ILCompiler.Compiler/src/Compiler/DependencyAnalysis/ShadowConcreteMethodNode.cs b/src/ILCompiler.Compiler/src/Compiler/DependencyAnalysis/ShadowConcreteMethodNode.cs
index 66c9e8ef1..5f1eef5b8 100644
--- a/src/ILCompiler.Compiler/src/Compiler/DependencyAnalysis/ShadowConcreteMethodNode.cs
+++ b/src/ILCompiler.Compiler/src/Compiler/DependencyAnalysis/ShadowConcreteMethodNode.cs
@@ -20,7 +20,7 @@ namespace ILCompiler.DependencyAnalysis
/// method body, as if it was generated. The node acts as a symbol for the canonical
/// method for convenience.
/// </summary>
- public class ShadowConcreteMethodNode : DependencyNodeCore<NodeFactory>, IMethodNode
+ public class ShadowConcreteMethodNode : DependencyNodeCore<NodeFactory>, IMethodNode, ISymbolNodeWithLinkage
{
/// <summary>
/// Gets the canonical method body that defines the dependencies of this node.
@@ -53,6 +53,11 @@ namespace ILCompiler.DependencyAnalysis
CanonicalMethodNode = canonicalMethod;
}
+ public ISymbolNode NodeForLinkage(NodeFactory factory)
+ {
+ return CanonicalMethodNode;
+ }
+
public override IEnumerable<DependencyListEntry> GetStaticDependencies(NodeFactory factory)
{
DependencyList dependencies = new DependencyList();