@@ -33,27 +33,29 @@ internal override DkmCompilerId CompilerId
33
33
internal delegate MetadataContext < CSharpMetadataContext > GetMetadataContextDelegate < TAppDomain > ( TAppDomain appDomain ) ;
34
34
internal delegate void SetMetadataContextDelegate < TAppDomain > ( TAppDomain appDomain , MetadataContext < CSharpMetadataContext > metadataContext , bool report ) ;
35
35
36
+ /// <exception cref="BadMetadataModuleException">Module wasn't included in the compilation due to bad metadata.</exception>
36
37
internal override EvaluationContextBase CreateTypeContext (
37
38
DkmClrAppDomain appDomain ,
38
39
ImmutableArray < MetadataBlock > metadataBlocks ,
39
- Guid moduleVersionId ,
40
+ ModuleId moduleId ,
40
41
int typeToken ,
41
42
bool useReferencedModulesOnly )
42
43
{
43
44
return CreateTypeContext (
44
45
appDomain ,
45
46
ad => ad . GetMetadataContext < CSharpMetadataContext > ( ) ,
46
47
metadataBlocks ,
47
- moduleVersionId ,
48
+ moduleId ,
48
49
typeToken ,
49
50
GetMakeAssemblyReferencesKind ( useReferencedModulesOnly ) ) ;
50
51
}
51
52
53
+ /// <exception cref="BadMetadataModuleException">Module wasn't included in the compilation due to bad metadata.</exception>
52
54
internal static EvaluationContext CreateTypeContext < TAppDomain > (
53
55
TAppDomain appDomain ,
54
56
GetMetadataContextDelegate < TAppDomain > getMetadataContext ,
55
57
ImmutableArray < MetadataBlock > metadataBlocks ,
56
- Guid moduleVersionId ,
58
+ ModuleId moduleId ,
57
59
int typeToken ,
58
60
MakeAssemblyReferencesKind kind )
59
61
{
@@ -63,14 +65,14 @@ internal static EvaluationContext CreateTypeContext<TAppDomain>(
63
65
{
64
66
// Avoid using the cache for referenced assemblies only
65
67
// since this should be the exceptional case.
66
- compilation = metadataBlocks . ToCompilationReferencedModulesOnly ( moduleVersionId ) ;
68
+ compilation = metadataBlocks . ToCompilationReferencedModulesOnly ( moduleId ) ;
67
69
return EvaluationContext . CreateTypeContext (
68
70
compilation ,
69
- moduleVersionId ,
71
+ moduleId ,
70
72
typeToken ) ;
71
73
}
72
74
73
- var contextId = MetadataContextId . GetContextId ( moduleVersionId , kind ) ;
75
+ var contextId = MetadataContextId . GetContextId ( moduleId , kind ) ;
74
76
var previous = getMetadataContext ( appDomain ) ;
75
77
CSharpMetadataContext previousMetadataContext = default ;
76
78
if ( previous . Matches ( metadataBlocks ) )
@@ -80,11 +82,11 @@ internal static EvaluationContext CreateTypeContext<TAppDomain>(
80
82
81
83
// Re-use the previous compilation if possible.
82
84
compilation = previousMetadataContext . Compilation ;
83
- compilation ??= metadataBlocks . ToCompilation ( moduleVersionId , kind ) ;
85
+ compilation ??= metadataBlocks . ToCompilation ( moduleId , kind ) ;
84
86
85
87
var context = EvaluationContext . CreateTypeContext (
86
88
compilation ,
87
- moduleVersionId ,
89
+ moduleId ,
88
90
typeToken ) ;
89
91
90
92
// New type context is not attached to the AppDomain since it is less
@@ -101,7 +103,7 @@ internal override EvaluationContextBase CreateMethodContext(
101
103
ImmutableArray < MetadataBlock > metadataBlocks ,
102
104
Lazy < ImmutableArray < AssemblyReaders > > unusedLazyAssemblyReaders ,
103
105
object ? symReader ,
104
- Guid moduleVersionId ,
106
+ ModuleId moduleId ,
105
107
int methodToken ,
106
108
int methodVersion ,
107
109
uint ilOffset ,
@@ -114,7 +116,7 @@ internal override EvaluationContextBase CreateMethodContext(
114
116
( ad , mc , report ) => ad . SetMetadataContext < CSharpMetadataContext > ( mc , report ) ,
115
117
metadataBlocks ,
116
118
symReader ,
117
- moduleVersionId ,
119
+ moduleId ,
118
120
methodToken ,
119
121
methodVersion ,
120
122
ilOffset ,
@@ -128,7 +130,7 @@ internal static EvaluationContext CreateMethodContext<TAppDomain>(
128
130
SetMetadataContextDelegate < TAppDomain > setMetadataContext ,
129
131
ImmutableArray < MetadataBlock > metadataBlocks ,
130
132
object ? symReader ,
131
- Guid moduleVersionId ,
133
+ ModuleId moduleId ,
132
134
int methodToken ,
133
135
int methodVersion ,
134
136
uint ilOffset ,
@@ -142,18 +144,18 @@ internal static EvaluationContext CreateMethodContext<TAppDomain>(
142
144
{
143
145
// Avoid using the cache for referenced assemblies only
144
146
// since this should be the exceptional case.
145
- compilation = metadataBlocks . ToCompilationReferencedModulesOnly ( moduleVersionId ) ;
147
+ compilation = metadataBlocks . ToCompilationReferencedModulesOnly ( moduleId ) ;
146
148
return EvaluationContext . CreateMethodContext (
147
149
compilation ,
148
150
symReader ,
149
- moduleVersionId ,
151
+ moduleId ,
150
152
methodToken ,
151
153
methodVersion ,
152
154
offset ,
153
155
localSignatureToken ) ;
154
156
}
155
157
156
- var contextId = MetadataContextId . GetContextId ( moduleVersionId , kind ) ;
158
+ var contextId = MetadataContextId . GetContextId ( moduleId , kind ) ;
157
159
var previous = getMetadataContext ( appDomain ) ;
158
160
var assemblyContexts = previous . Matches ( metadataBlocks ) ? previous . AssemblyContexts : ImmutableDictionary < MetadataContextId , CSharpMetadataContext > . Empty ;
159
161
CSharpMetadataContext previousMetadataContext ;
@@ -167,20 +169,20 @@ internal static EvaluationContext CreateMethodContext<TAppDomain>(
167
169
var previousContext = previousMetadataContext . EvaluationContext ;
168
170
if ( previousContext != null &&
169
171
previousContext . MethodContextReuseConstraints . HasValue &&
170
- previousContext . MethodContextReuseConstraints . GetValueOrDefault ( ) . AreSatisfied ( moduleVersionId , methodToken , methodVersion , offset ) )
172
+ previousContext . MethodContextReuseConstraints . GetValueOrDefault ( ) . AreSatisfied ( moduleId , methodToken , methodVersion , offset ) )
171
173
{
172
174
return previousContext ;
173
175
}
174
176
}
175
177
else
176
178
{
177
- compilation = metadataBlocks . ToCompilation ( moduleVersionId , kind ) ;
179
+ compilation = metadataBlocks . ToCompilation ( moduleId , kind ) ;
178
180
}
179
181
180
182
var context = EvaluationContext . CreateMethodContext (
181
183
compilation ,
182
184
symReader ,
183
- moduleVersionId ,
185
+ moduleId ,
184
186
methodToken ,
185
187
methodVersion ,
186
188
offset ,
0 commit comments