Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/linker.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/linker/Linker.Steps/CodeRewriterStep.cs')
-rw-r--r--src/linker/Linker.Steps/CodeRewriterStep.cs13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/linker/Linker.Steps/CodeRewriterStep.cs b/src/linker/Linker.Steps/CodeRewriterStep.cs
index 6d70b1a09..566a7ab1a 100644
--- a/src/linker/Linker.Steps/CodeRewriterStep.cs
+++ b/src/linker/Linker.Steps/CodeRewriterStep.cs
@@ -64,12 +64,15 @@ namespace Mono.Linker.Steps
ret = Instruction.Create (OpCodes.Ret);
processor.Append (ret);
} else {
- ret = cctor.Body.Instructions.Last (l => l.OpCode.Code == Code.Ret);
var body = cctor.Body;
- processor = cctor.Body.GetLinkerILProcessor ();
+#pragma warning disable RS0030 // After MarkStep all methods should be processed and thus accessing Cecil directly is the right approach
+ var instructions = body.Instructions;
+#pragma warning restore RS0030
+ ret = instructions.Last (l => l.OpCode.Code == Code.Ret);
+ processor = body.GetLinkerILProcessor ();
- for (int i = 0; i < body.Instructions.Count; ++i) {
- var instr = body.Instructions[i];
+ for (int i = 0; i < instructions.Count; ++i) {
+ var instr = instructions[i];
if (instr.OpCode.Code != Code.Stsfld)
continue;
@@ -201,7 +204,9 @@ namespace Mono.Linker.Steps
case MetadataType.MVar:
case MetadataType.ValueType:
var vd = new VariableDefinition (method.ReturnType);
+#pragma warning disable RS0030 // Anything after MarkStep should not use ILProvider since all methods are guaranteed processed
body.Variables.Add (vd);
+#pragma warning restore RS0030
body.InitLocals = true;
il.Emit (OpCodes.Ldloca_S, vd);