Skip to content

Commit fa053a0

Browse files
ds5678SamboyCoding
authored andcommitted
Add public method for creating a list dummy assemblies
1 parent a8888b4 commit fa053a0

File tree

1 file changed

+34
-27
lines changed

1 file changed

+34
-27
lines changed

Cpp2IL.Core/CorePlugin/AsmResolverDummyDllOutputFormat.cs

Lines changed: 34 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,38 @@ public class AsmResolverDummyDllOutputFormat : Cpp2IlOutputFormat
2727
private AssemblyDefinition? MostRecentCorLib { get; set; }
2828

2929
public override void DoOutput(ApplicationAnalysisContext context, string outputRoot)
30+
{
31+
var ret = BuildAssemblies(context);
32+
33+
var start = DateTime.Now;
34+
Logger.Verbose("Generating PE images...", "DummyDllOutput");
35+
36+
if (!Directory.Exists(outputRoot))
37+
Directory.CreateDirectory(outputRoot);
38+
39+
//Convert assembly definitions to PE files
40+
var peImagesToWrite = ret
41+
.AsParallel()
42+
.Select(a => (image: a.ManifestModule!.ToPEImage(new ManagedPEImageBuilder()), name: a.ManifestModule.Name!))
43+
.ToList();
44+
45+
Logger.VerboseNewline($"{(DateTime.Now - start).TotalMilliseconds:F1}ms", "DummyDllOutput");
46+
47+
start = DateTime.Now;
48+
Logger.Verbose("Building and writing managed PE files to disk...", "DummyDllOutput");
49+
50+
//Save them
51+
var fileBuilder = new ManagedPEFileBuilder();
52+
foreach (var (image, name) in peImagesToWrite)
53+
{
54+
var dllPath = Path.Combine(outputRoot, name);
55+
fileBuilder.CreateFile(image).Write(dllPath);
56+
}
57+
58+
Logger.VerboseNewline($"{(DateTime.Now - start).TotalMilliseconds:F1}ms", "DummyDllOutput");
59+
}
60+
61+
public List<AssemblyDefinition> BuildAssemblies(ApplicationAnalysisContext context)
3062
{
3163
#if VERBOSE_LOGGING
3264
var asmCount = context.Assemblies.Count;
@@ -44,7 +76,7 @@ public override void DoOutput(ApplicationAnalysisContext context, string outputR
4476
#else
4577
Logger.Verbose($"Building stub assemblies...", "DummyDllOutput");
4678
#endif
47-
var ret = BuildStubAssemblies(context);
79+
List<AssemblyDefinition> ret = BuildStubAssemblies(context);
4880
Logger.VerboseNewline($"{(DateTime.Now - start).TotalMilliseconds:F1}ms", "DummyDllOutput");
4981

5082
TypeDefinitionsAsmResolver.CacheNeededTypeDefinitions();
@@ -78,32 +110,7 @@ public override void DoOutput(ApplicationAnalysisContext context, string outputR
78110

79111
TypeDefinitionsAsmResolver.Reset();
80112

81-
start = DateTime.Now;
82-
Logger.Verbose("Generating PE images...", "DummyDllOutput");
83-
84-
if (!Directory.Exists(outputRoot))
85-
Directory.CreateDirectory(outputRoot);
86-
87-
//Convert assembly definitions to PE files
88-
var peImagesToWrite = ret
89-
.AsParallel()
90-
.Select(a => (image: a.ManifestModule!.ToPEImage(new ManagedPEImageBuilder()), name: a.ManifestModule.Name!))
91-
.ToList();
92-
93-
Logger.VerboseNewline($"{(DateTime.Now - start).TotalMilliseconds:F1}ms", "DummyDllOutput");
94-
95-
start = DateTime.Now;
96-
Logger.Verbose("Building and writing managed PE files to disk...", "DummyDllOutput");
97-
98-
//Save them
99-
var fileBuilder = new ManagedPEFileBuilder();
100-
foreach (var (image, name) in peImagesToWrite)
101-
{
102-
var dllPath = Path.Combine(outputRoot, name);
103-
fileBuilder.CreateFile(image).Write(dllPath);
104-
}
105-
106-
Logger.VerboseNewline($"{(DateTime.Now - start).TotalMilliseconds:F1}ms", "DummyDllOutput");
113+
return ret;
107114
}
108115

109116
private List<AssemblyDefinition> BuildStubAssemblies(ApplicationAnalysisContext context)

0 commit comments

Comments
 (0)