Skip to content

Commit eebb4f2

Browse files
vitek-karasMichalStrehovsky
authored andcommitted
Use body encoder instead of just blob builder for IL stream. (#23)
This removes the need for manually aligning the instructions in the IL stream, the encoder takes care of this when necessary.
1 parent 1b39fec commit eebb4f2

3 files changed

Lines changed: 3 additions & 6 deletions

File tree

src/coreclr/tools/ILTrim/ILTrim/DependencyAnalysis/MethodBodyNode.cs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -96,8 +96,6 @@ public int Write(ModuleWritingContext writeContext)
9696
if (rva == 0)
9797
return -1;
9898

99-
writeContext.ILStream.Align(4);
100-
10199
MethodBodyBlock bodyBlock = _module.PEReader.GetMethodBody(rva);
102100

103101
// TODO: need to rewrite token references in the exception regions
@@ -174,8 +172,7 @@ public int Write(ModuleWritingContext writeContext)
174172
}
175173
}
176174

177-
MethodBodyStreamEncoder bodyStreamEncoder = new MethodBodyStreamEncoder(writeContext.ILStream);
178-
MethodBodyStreamEncoder.MethodBody bodyEncoder = bodyStreamEncoder.AddMethodBody(
175+
MethodBodyStreamEncoder.MethodBody bodyEncoder = writeContext.MethodBodyEncoder.AddMethodBody(
179176
outputBodyBuilder.Count,
180177
bodyBlock.MaxStack,
181178
exceptionRegionCount: 0,

src/coreclr/tools/ILTrim/ILTrim/ModuleWriter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ public void Save(Stream outputStream)
6464
var peBuilder = new ManagedPEBuilder(
6565
headerBuilder,
6666
mdRootBuilder,
67-
context.ILStream,
67+
context.MethodBodyEncoder.Builder,
6868
entryPoint: (MethodDefinitionHandle)tokenMap.MapToken(sourceEntryPoint));
6969

7070
var o = new BlobBuilder();

src/coreclr/tools/ILTrim/ILTrim/ModuleWritingContext.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ public sealed class ModuleWritingContext
1717

1818
public MetadataBuilder MetadataBuilder { get; } = new MetadataBuilder();
1919

20-
public BlobBuilder ILStream { get; } = new BlobBuilder();
20+
public MethodBodyStreamEncoder MethodBodyEncoder { get; } = new MethodBodyStreamEncoder(new BlobBuilder());
2121

2222
public TokenMap TokenMap { get; }
2323

0 commit comments

Comments
 (0)