diff options
author | David Wrighton <davidwr@microsoft.com> | 2017-10-03 00:27:56 +0300 |
---|---|---|
committer | David Wrighton <davidwr@microsoft.com> | 2017-10-03 00:27:56 +0300 |
commit | d9d8d70584e0e3fe7ff0933f23bae17e9b5dda03 (patch) | |
tree | 79ff8f329fba5160812c91ad0bc3391ee485641b | |
parent | 545d068c455e3def526cdac9d05354b5c3b0e84c (diff) |
Steps towards reducing ProjectN abi special casing in dependency analysis
- Provide temporary mechanism to dynamically change dependency analysis for ProjectN abi scenarios
- Make ShadowConcreteMethodNode public so that it can be manipulated by code outside of the current module
[tfs-changeset: 1677100]
-rw-r--r-- | src/ILCompiler.Compiler/src/Compiler/DependencyAnalysis/NonExternMethodSymbolNode.cs | 15 | ||||
-rw-r--r-- | src/ILCompiler.Compiler/src/Compiler/DependencyAnalysis/ShadowConcreteMethodNode.cs | 2 |
2 files changed, 12 insertions, 5 deletions
diff --git a/src/ILCompiler.Compiler/src/Compiler/DependencyAnalysis/NonExternMethodSymbolNode.cs b/src/ILCompiler.Compiler/src/Compiler/DependencyAnalysis/NonExternMethodSymbolNode.cs index c39eda7e0..030bacaa2 100644 --- a/src/ILCompiler.Compiler/src/Compiler/DependencyAnalysis/NonExternMethodSymbolNode.cs +++ b/src/ILCompiler.Compiler/src/Compiler/DependencyAnalysis/NonExternMethodSymbolNode.cs @@ -12,6 +12,13 @@ using Internal.TypeSystem; namespace ILCompiler.DependencyAnalysis { + public static class ProjectNDependencyBehavior + { + // Temporary static variable to enable full analysis when using the ProjectN abi + // When full analysis is fully supported, remove this class and field forever. + public static bool EnableFullAnalysis = false; + } + /// <summary> /// Represents a symbol that is defined externally but modeled as a method /// in the DependencyAnalysis infrastructure during compilation that is compiled @@ -94,10 +101,10 @@ namespace ILCompiler.DependencyAnalysis { get { - // TODO Change this to - // return HasCompiledBody; - // when we fix up creation of NonExternMethodSymbolNode to be correctly handled - return true; + if (ProjectNDependencyBehavior.EnableFullAnalysis) + return HasCompiledBody; + else + return true; } } diff --git a/src/ILCompiler.Compiler/src/Compiler/DependencyAnalysis/ShadowConcreteMethodNode.cs b/src/ILCompiler.Compiler/src/Compiler/DependencyAnalysis/ShadowConcreteMethodNode.cs index cb5e24e64..43c1f4adf 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> - internal class ShadowConcreteMethodNode : DependencyNodeCore<NodeFactory>, IMethodNode + public class ShadowConcreteMethodNode : DependencyNodeCore<NodeFactory>, IMethodNode { /// <summary> /// Gets the canonical method body that defines the dependencies of this node. |