Mono.Cecil.Rocks.MethodBodyRocks.SimplifyMacros C# (CSharp) Method

SimplifyMacros() public static method

public static SimplifyMacros ( this self ) : void
self this
return void
        public static void SimplifyMacros(this MethodBody self)
        {
            if (self == null)
                throw new ArgumentNullException ("self");

            foreach (var instruction in self.Instructions) {
                if (instruction.OpCode.OpCodeType != OpCodeType.Macro)
                    continue;

                switch (instruction.OpCode.Code) {
                case Code.Ldarg_0:
                    ExpandMacro (instruction, OpCodes.Ldarg, self.GetParameter (0));
                    break;
                case Code.Ldarg_1:
                    ExpandMacro (instruction, OpCodes.Ldarg, self.GetParameter (1));
                    break;
                case Code.Ldarg_2:
                    ExpandMacro (instruction, OpCodes.Ldarg, self.GetParameter (2));
                    break;
                case Code.Ldarg_3:
                    ExpandMacro (instruction, OpCodes.Ldarg, self.GetParameter (3));
                    break;
                case Code.Ldloc_0:
                    ExpandMacro (instruction, OpCodes.Ldloc, self.Variables [0]);
                    break;
                case Code.Ldloc_1:
                    ExpandMacro (instruction, OpCodes.Ldloc, self.Variables [1]);
                    break;
                case Code.Ldloc_2:
                    ExpandMacro (instruction, OpCodes.Ldloc, self.Variables [2]);
                    break;
                case Code.Ldloc_3:
                    ExpandMacro (instruction, OpCodes.Ldloc, self.Variables [3]);
                    break;
                case Code.Stloc_0:
                    ExpandMacro (instruction, OpCodes.Stloc, self.Variables [0]);
                    break;
                case Code.Stloc_1:
                    ExpandMacro (instruction, OpCodes.Stloc, self.Variables [1]);
                    break;
                case Code.Stloc_2:
                    ExpandMacro (instruction, OpCodes.Stloc, self.Variables [2]);
                    break;
                case Code.Stloc_3:
                    ExpandMacro (instruction, OpCodes.Stloc, self.Variables [3]);
                    break;
                case Code.Ldarg_S:
                    instruction.OpCode = OpCodes.Ldarg;
                    break;
                case Code.Ldarga_S:
                    instruction.OpCode = OpCodes.Ldarga;
                    break;
                case Code.Starg_S:
                    instruction.OpCode = OpCodes.Starg;
                    break;
                case Code.Ldloc_S:
                    instruction.OpCode = OpCodes.Ldloc;
                    break;
                case Code.Ldloca_S:
                    instruction.OpCode = OpCodes.Ldloca;
                    break;
                case Code.Stloc_S:
                    instruction.OpCode = OpCodes.Stloc;
                    break;
                case Code.Ldc_I4_M1:
                    ExpandMacro (instruction, OpCodes.Ldc_I4, -1);
                    break;
                case Code.Ldc_I4_0:
                    ExpandMacro (instruction, OpCodes.Ldc_I4, 0);
                    break;
                case Code.Ldc_I4_1:
                    ExpandMacro (instruction, OpCodes.Ldc_I4, 1);
                    break;
                case Code.Ldc_I4_2:
                    ExpandMacro (instruction, OpCodes.Ldc_I4, 2);
                    break;
                case Code.Ldc_I4_3:
                    ExpandMacro (instruction, OpCodes.Ldc_I4, 3);
                    break;
                case Code.Ldc_I4_4:
                    ExpandMacro (instruction, OpCodes.Ldc_I4, 4);
                    break;
                case Code.Ldc_I4_5:
                    ExpandMacro (instruction, OpCodes.Ldc_I4, 5);
                    break;
                case Code.Ldc_I4_6:
                    ExpandMacro (instruction, OpCodes.Ldc_I4, 6);
                    break;
                case Code.Ldc_I4_7:
                    ExpandMacro (instruction, OpCodes.Ldc_I4, 7);
                    break;
                case Code.Ldc_I4_8:
                    ExpandMacro (instruction, OpCodes.Ldc_I4, 8);
                    break;
                case Code.Ldc_I4_S:
                    ExpandMacro (instruction, OpCodes.Ldc_I4, (int) (sbyte) instruction.Operand);
                    break;
                case Code.Br_S:
                    instruction.OpCode = OpCodes.Br;
                    break;
                case Code.Brfalse_S:
                    instruction.OpCode = OpCodes.Brfalse;
                    break;
                case Code.Brtrue_S:
                    instruction.OpCode = OpCodes.Brtrue;
                    break;
                case Code.Beq_S:
                    instruction.OpCode = OpCodes.Beq;
                    break;
                case Code.Bge_S:
                    instruction.OpCode = OpCodes.Bge;
                    break;
                case Code.Bgt_S:
                    instruction.OpCode = OpCodes.Bgt;
                    break;
                case Code.Ble_S:
                    instruction.OpCode = OpCodes.Ble;
                    break;
                case Code.Blt_S:
                    instruction.OpCode = OpCodes.Blt;
                    break;
                case Code.Bne_Un_S:
                    instruction.OpCode = OpCodes.Bne_Un;
                    break;
                case Code.Bge_Un_S:
                    instruction.OpCode = OpCodes.Bge_Un;
                    break;
                case Code.Bgt_Un_S:
                    instruction.OpCode = OpCodes.Bgt_Un;
                    break;
                case Code.Ble_Un_S:
                    instruction.OpCode = OpCodes.Ble_Un;
                    break;
                case Code.Blt_Un_S:
                    instruction.OpCode = OpCodes.Blt_Un;
                    break;
                case Code.Leave_S:
                    instruction.OpCode = OpCodes.Leave;
                    break;
                }
            }
        }