-
Notifications
You must be signed in to change notification settings - Fork 4.5k
/
CompilationBuilder.Aot.cs
136 lines (115 loc) · 4.78 KB
/
CompilationBuilder.Aot.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
using System;
namespace ILCompiler
{
public partial class CompilationBuilder
{
private PreinitializationManager _preinitializationManager;
// These need to provide reasonable defaults so that the user can optionally skip
// calling the Use/Configure methods and still get something reasonable back.
protected MetadataManager _metadataManager;
protected InteropStubManager _interopStubManager = new EmptyInteropStubManager();
protected VTableSliceProvider _vtableSliceProvider = new LazyVTableSliceProvider();
protected DictionaryLayoutProvider _dictionaryLayoutProvider = new LazyDictionaryLayoutProvider();
protected DebugInformationProvider _debugInformationProvider = new DebugInformationProvider();
protected DevirtualizationManager _devirtualizationManager = new DevirtualizationManager();
protected MethodImportationErrorProvider _methodImportationErrorProvider = new MethodImportationErrorProvider();
protected IInliningPolicy _inliningPolicy;
protected bool _methodBodyFolding;
protected InstructionSetSupport _instructionSetSupport;
protected SecurityMitigationOptions _mitigationOptions;
protected bool _dehydrate;
protected bool _useDwarf5;
partial void InitializePartial()
{
_metadataManager = new AnalysisBasedMetadataManager(_context);
_instructionSetSupport = new InstructionSetSupport(default, default, _context.Target.Architecture);
}
public CompilationBuilder UseInstructionSetSupport(InstructionSetSupport support)
{
_instructionSetSupport = support;
return this;
}
public CompilationBuilder UseInliningPolicy(IInliningPolicy policy)
{
_inliningPolicy = policy;
return this;
}
public CompilationBuilder UseMetadataManager(MetadataManager metadataManager)
{
_metadataManager = metadataManager;
return this;
}
public CompilationBuilder UseInteropStubManager(InteropStubManager interopStubManager)
{
_interopStubManager = interopStubManager;
return this;
}
public CompilationBuilder UseVTableSliceProvider(VTableSliceProvider provider)
{
_vtableSliceProvider = provider;
return this;
}
public CompilationBuilder UseGenericDictionaryLayoutProvider(DictionaryLayoutProvider provider)
{
_dictionaryLayoutProvider = provider;
return this;
}
public CompilationBuilder UseDevirtualizationManager(DevirtualizationManager manager)
{
_devirtualizationManager = manager;
return this;
}
public CompilationBuilder UseDebugInfoProvider(DebugInformationProvider provider)
{
_debugInformationProvider = provider;
return this;
}
public CompilationBuilder UseSecurityMitigationOptions(SecurityMitigationOptions options)
{
_mitigationOptions = options;
return this;
}
public CompilationBuilder UseDehydration(bool dehydrate)
{
_dehydrate = dehydrate;
return this;
}
public CompilationBuilder UseMethodBodyFolding(bool enable)
{
_methodBodyFolding = enable;
return this;
}
public CompilationBuilder UsePreinitializationManager(PreinitializationManager manager)
{
_preinitializationManager = manager;
return this;
}
public CompilationBuilder UseMethodImportationErrorProvider(MethodImportationErrorProvider errorProvider)
{
_methodImportationErrorProvider = errorProvider;
return this;
}
public CompilationBuilder UseDwarf5(bool value)
{
_useDwarf5 = value;
return this;
}
protected PreinitializationManager GetPreinitializationManager()
{
if (_preinitializationManager == null)
return new PreinitializationManager(_context, _compilationGroup, GetILProvider(), enableInterpreter: false);
return _preinitializationManager;
}
public ILScannerBuilder GetILScannerBuilder(CompilationModuleGroup compilationGroup = null)
{
return new ILScannerBuilder(_context, compilationGroup ?? _compilationGroup, _nameMangler, GetILProvider(), GetPreinitializationManager());
}
}
[Flags]
public enum SecurityMitigationOptions
{
ControlFlowGuardAnnotations = 0x0001,
}
}