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:
authorDavid Wrighton <davidwr@microsoft.com>2017-10-03 00:27:56 +0300
committerDavid Wrighton <davidwr@microsoft.com>2017-10-03 00:27:56 +0300
commitd9d8d70584e0e3fe7ff0933f23bae17e9b5dda03 (patch)
tree79ff8f329fba5160812c91ad0bc3391ee485641b
parent545d068c455e3def526cdac9d05354b5c3b0e84c (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.cs15
-rw-r--r--src/ILCompiler.Compiler/src/Compiler/DependencyAnalysis/ShadowConcreteMethodNode.cs2
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.