Пример #1
0
        void EmitAnd(CodeGen g, OptionalLabel labelTrue, OptionalLabel labelFalse, Operand first, Operand second)
        {
            var trueOptional = new OptionalLabel(g.IL);

            labelFalse.EnsureExists();
            first.EmitBranch(g, trueOptional, labelFalse);
            if (trueOptional.IsLabelExist) // it can jump out of internal Or on first true but we still need to check second
            {
                g.IL.MarkLabel(trueOptional.Value);
            }
            second.EmitBranch(g, labelTrue, labelFalse);
        }
Пример #2
0
        void EmitOr(CodeGen g, OptionalLabel labelTrue, OptionalLabel labelFalse, Operand first, Operand second)
        {
            var falseOptional = new OptionalLabel(g.IL);

            labelTrue.EnsureExists();
            first.EmitBranch(g, labelTrue, falseOptional);
            if (falseOptional.IsLabelExist) // it can jump out of internal And on first false but we still may hope on second
            {
                g.IL.MarkLabel(falseOptional.Value);
            }
            second.EmitBranch(g, labelTrue, labelFalse);
        }
Пример #3
0
 void EmitAnd(CodeGen g, OptionalLabel labelTrue,OptionalLabel labelFalse, Operand first, Operand second)
 {
     var trueOptional = new OptionalLabel(g.IL);
     labelFalse.EnsureExists();
     first.EmitBranch(g, trueOptional, labelFalse);
     if (trueOptional.IsLabelExist) // it can jump out of internal Or on first true but we still need to check second
         g.IL.MarkLabel(trueOptional.Value);
     second.EmitBranch(g, labelTrue, labelFalse);
 }
Пример #4
0
 void EmitOr(CodeGen g, OptionalLabel labelTrue, OptionalLabel labelFalse, Operand first, Operand second)
 {
     var falseOptional = new OptionalLabel(g.IL);
     labelTrue.EnsureExists();
     first.EmitBranch(g, labelTrue, falseOptional);
     if (falseOptional.IsLabelExist) // it can jump out of internal And on first false but we still may hope on second
         g.IL.MarkLabel(falseOptional.Value);
     second.EmitBranch(g, labelTrue, labelFalse);
 }