public void Visit(ASTNode_If node) { Label thenLabel = mILGenerator.DefineLabel(); Label endLabel = mILGenerator.DefineLabel(); mTaillCallFlags.Push(false); node.predNode.AcceptVisitor(this); mTaillCallFlags.Pop(); mILGenerator.Emit(OpCodes.Unbox_Any, typeof(bool)); mILGenerator.Emit(OpCodes.Brtrue, thenLabel); mTaillCallFlags.Push(true); node.elseNode.AcceptVisitor(this); mTaillCallFlags.Pop(); mILGenerator.Emit(OpCodes.Br, endLabel); mILGenerator.MarkLabel(thenLabel); mTaillCallFlags.Push(true); node.thenNode.AcceptVisitor(this); mTaillCallFlags.Pop(); mILGenerator.MarkLabel(endLabel); }
public void Visit(ASTNode_If node) { node.predNode.AcceptVisitor(this); if ((bool)Value) { node.thenNode.AcceptVisitor(this); } else { node.elseNode.AcceptVisitor(this); } }
public void Visit(ASTNode_If node) { node.predNode.AcceptVisitor(this); if ((bool)Value) node.thenNode.AcceptVisitor(this); else node.elseNode.AcceptVisitor(this); }
public void Visit(ASTNode_If node) { node.predNode.AcceptVisitor(this); node.thenNode.AcceptVisitor(this); node.elseNode.AcceptVisitor(this); }