public void Emit_And_Shortcut(parse_tree.boolean_parseable left, parse_tree.boolean2 right, bool left_negated) { if (left_negated) { Emit_Not(); } left.emit_code(this, 0); stream.Write(" && "); right.emit_code(this, 0); }
public void Emit_And_Shortcut(parse_tree.boolean_parseable left, parse_tree.boolean2 right, bool left_negated) { System.Reflection.Emit.Label l2 = gen.DefineLabel(); left.emit_code(this, 0); if (left_negated) { Emit_Not(); } gen.Emit(OpCodes.Dup); gen.Emit(System.Reflection.Emit.OpCodes.Brfalse, l2); right.emit_code(this, 0); Emit_And(); gen.MarkLabel(l2); }