diff options
author | David Wrighton <davidwr@microsoft.com> | 2017-11-30 01:07:09 +0300 |
---|---|---|
committer | David Wrighton <davidwr@microsoft.com> | 2017-11-30 01:07:09 +0300 |
commit | a0d449b381fd508331915dbcb1042345759218b5 (patch) | |
tree | 917eab765da87c514fc288f69502e351998a072d /src/ILCompiler.CppCodeGen | |
parent | 01bad0bd5b8e0c2ba2f5a485a4b6fdff4daf7698 (diff) |
Ordinal Multifile support
- Add ordinal import mechanism to ready to run header
- Add concept of various different types of export to nodes (Now nodes can be exported by symbol name or by ordinal)
- Abstraction of how nodes from exported modules are imported (ImportedNodeProvider)
- Import/Export table nodes (MrtProcessedImportAddressTable, MrtProcessedExportAddressTable)
- Runtime decodable jump stubs
- Tweaks to floating dictionary computation to behave correctly when no floating section is present, and to tolerate floating sections without version numbers
- Not integrated with the open source version of the compiler, but the basic nodes and necessary infra are present
Also
- Allow a TypeSystemContext to specify the module in which the Canon types are logically located
- Overrideable apis for the CompilerTypeSystemContext to allow customization of the set of methods logically present on Enums and Delegates
- New apis on CompilationModuleGroup to allow more granular policy to be specified about what is to be compiled
- Adjust GetName helper for MethodSignature to produce names that are more unique
- Fix bug in floating generic dictionary implementation where it assumed that the floating section was present in all dictionaries
- ARM64 indirect jump generation (with a assert to be disabled when it is debugged)
[tfs-changeset: 1682436]
Diffstat (limited to 'src/ILCompiler.CppCodeGen')
-rw-r--r-- | src/ILCompiler.CppCodeGen/src/Compiler/DependencyAnalysis/CppCodegenNodeFactory.cs | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/ILCompiler.CppCodeGen/src/Compiler/DependencyAnalysis/CppCodegenNodeFactory.cs b/src/ILCompiler.CppCodeGen/src/Compiler/DependencyAnalysis/CppCodegenNodeFactory.cs index fe2ad3afc..baf0339aa 100644 --- a/src/ILCompiler.CppCodeGen/src/Compiler/DependencyAnalysis/CppCodegenNodeFactory.cs +++ b/src/ILCompiler.CppCodeGen/src/Compiler/DependencyAnalysis/CppCodegenNodeFactory.cs @@ -12,7 +12,15 @@ namespace ILCompiler.DependencyAnalysis { public CppCodegenNodeFactory(CompilerTypeSystemContext context, CompilationModuleGroup compilationModuleGroup, MetadataManager metadataManager, InteropStubManager interopStubManager, NameMangler nameMangler, VTableSliceProvider vtableSliceProvider, DictionaryLayoutProvider dictionaryLayoutProvider) - : base(context, compilationModuleGroup, metadataManager, interopStubManager, nameMangler, new LazyGenericsDisabledPolicy(), vtableSliceProvider, dictionaryLayoutProvider) + : base(context, + compilationModuleGroup, + metadataManager, + interopStubManager, + nameMangler, + new LazyGenericsDisabledPolicy(), + vtableSliceProvider, + dictionaryLayoutProvider, + new ImportedNodeProviderThrowing()) { } @@ -20,7 +28,7 @@ namespace ILCompiler.DependencyAnalysis protected override IMethodNode CreateMethodEntrypointNode(MethodDesc method) { - if (CompilationModuleGroup.ContainsMethodBody(method)) + if (CompilationModuleGroup.ContainsMethodBody(method, false)) { return new CppMethodCodeNode(method); } |