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

MatchCompare() private method

private MatchCompare ( int index, OpCode cmp1, OpCode cmp2, Type type ) : bool
index int
cmp1 OpCode
cmp2 OpCode
type IKVM.Reflection.Type
return bool
        private bool MatchCompare(int index, OpCode cmp1, OpCode cmp2, Type type)
        {
            return code[index].opcode == OpCodes.Stloc && code[index].Local.LocalType == type
                && code[index + 1].opcode == OpCodes.Stloc && code[index + 1].Local.LocalType == type
                && code[index + 2].opcode == OpCodes.Ldloc && code[index + 2].MatchLocal(code[index + 1])
                && code[index + 3].opcode == OpCodes.Ldloc && code[index + 3].MatchLocal(code[index])
                && code[index + 4].opcode == cmp1
                && code[index + 5].opcode == OpCodes.Ldloc && code[index + 5].MatchLocal(code[index + 1])
                && code[index + 6].opcode == OpCodes.Ldloc && code[index + 6].MatchLocal(code[index])
                && code[index + 7].opcode == cmp2
                && code[index + 8].opcode == OpCodes.Sub
                && code[index + 9].pseudo == CodeType.ReleaseTempLocal && code[index + 9].Local == code[index].Local
                && code[index + 10].pseudo == CodeType.ReleaseTempLocal && code[index + 10].Local == code[index + 1].Local
                && ((code[index + 11].opcode.FlowControl == FlowControl.Cond_Branch && code[index + 11].HasLabel) ||
                    (code[index + 11].opcode == OpCodes.Ldc_I4_0
                    && (code[index + 12].opcode.FlowControl == FlowControl.Cond_Branch && code[index + 12].HasLabel)));
        }