IKVM.Internal.CodeEmitter.PatchCompare C# (CSharp) Method

PatchCompare() private method

private PatchCompare ( int index, OpCode ble, OpCode blt, OpCode bge, OpCode bgt ) : void
index int
ble OpCode
blt OpCode
bge OpCode
bgt OpCode
return void
        private void PatchCompare(int index, OpCode ble, OpCode blt, OpCode bge, OpCode bgt)
        {
            if (code[index + 11].opcode == OpCodes.Brtrue)
            {
                code[index] = new OpCodeWrapper(OpCodes.Bne_Un, code[index + 11].Label);
                code.RemoveRange(index + 1, 11);
            }
            else if (code[index + 11].opcode == OpCodes.Brfalse)
            {
                code[index] = new OpCodeWrapper(OpCodes.Beq, code[index + 11].Label);
                code.RemoveRange(index + 1, 11);
            }
            else if (code[index + 11].opcode == OpCodes.Ldc_I4_0)
            {
                if (code[index + 12].opcode == OpCodes.Ble)
                {
                    code[index] = new OpCodeWrapper(ble, code[index + 12].Label);
                    code.RemoveRange(index + 1, 12);
                }
                else if (code[index + 12].opcode == OpCodes.Blt)
                {
                    code[index] = new OpCodeWrapper(blt, code[index + 12].Label);
                    code.RemoveRange(index + 1, 12);
                }
                else if (code[index + 12].opcode == OpCodes.Bge)
                {
                    code[index] = new OpCodeWrapper(bge, code[index + 12].Label);
                    code.RemoveRange(index + 1, 12);
                }
                else if (code[index + 12].opcode == OpCodes.Bgt)
                {
                    code[index] = new OpCodeWrapper(bgt, code[index + 12].Label);
                    code.RemoveRange(index + 1, 12);
                }
            }
        }