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:
authordotnet-bot <dotnet-bot@microsoft.com>2017-05-23 04:44:38 +0300
committerdotnet-bot <dotnet-bot@microsoft.com>2017-05-23 04:44:38 +0300
commit3ba4ad193631c4b1cc74a2d7779e58b321a844cd (patch)
treec8efb038c2e5549d9a2962368b98628f22a03fea /src/ILCompiler.CppCodeGen
parent270e0476e9696c67c7585f17027352d819d763bd (diff)
ProjectX: Special handling of naming and exporting method generic dictionaries.
The naming and exporting of method generic dictionaries are differnt from method entries. They have their own oridinals in the TOC files. Actually, method that has generic dictionaries are implemented by shared code, so its entry should not be in the TOC files. This change seperates the handling of method generic dictionaries from method entries and ensure they get a unique and consistent name between the compilation of shared library and an app. This change also moves the UTC symbol attribute abstraction (such as isInModule, isDirectReference, isExport ...) upwards to the JIT interface so that we no longer use a method handle for every method-related query or type handle for every type-related query. Also, in this way UTC does not need to know how to handle differnt types of symbols specifically. It will generally call SetPNSymbolAttributes with type system returned attributes on almost all symbols [tfs-changeset: 1659289]
Diffstat (limited to 'src/ILCompiler.CppCodeGen')
-rw-r--r--src/ILCompiler.CppCodeGen/src/Compiler/CppNodeMangler.cs10
-rw-r--r--src/ILCompiler.CppCodeGen/src/Compiler/DependencyAnalysis/CppCodegenNodeFactory.cs2
2 files changed, 11 insertions, 1 deletions
diff --git a/src/ILCompiler.CppCodeGen/src/Compiler/CppNodeMangler.cs b/src/ILCompiler.CppCodeGen/src/Compiler/CppNodeMangler.cs
index c56fe6466..b4a01d6b2 100644
--- a/src/ILCompiler.CppCodeGen/src/Compiler/CppNodeMangler.cs
+++ b/src/ILCompiler.CppCodeGen/src/Compiler/CppNodeMangler.cs
@@ -39,5 +39,15 @@ namespace ILCompiler
{
return "__ThreadStaticBase_" + NameMangler.GetMangledTypeName(type);
}
+
+ public sealed override string TypeGenericDictionary(TypeDesc type)
+ {
+ return GenericDictionaryNamePrefix + NameMangler.GetMangledTypeName(type);
+ }
+
+ public sealed override string MethodGenericDictionary(MethodDesc method)
+ {
+ return GenericDictionaryNamePrefix + NameMangler.GetMangledMethodName(method);
+ }
}
}
diff --git a/src/ILCompiler.CppCodeGen/src/Compiler/DependencyAnalysis/CppCodegenNodeFactory.cs b/src/ILCompiler.CppCodeGen/src/Compiler/DependencyAnalysis/CppCodegenNodeFactory.cs
index 7708cc300..3eaf2ae2a 100644
--- a/src/ILCompiler.CppCodeGen/src/Compiler/DependencyAnalysis/CppCodegenNodeFactory.cs
+++ b/src/ILCompiler.CppCodeGen/src/Compiler/DependencyAnalysis/CppCodegenNodeFactory.cs
@@ -19,7 +19,7 @@ namespace ILCompiler.DependencyAnalysis
protected override IMethodNode CreateMethodEntrypointNode(MethodDesc method)
{
- if (CompilationModuleGroup.ContainsMethod(method))
+ if (CompilationModuleGroup.ContainsMethodBody(method))
{
return new CppMethodCodeNode(method);
}