change
[IRC.git] / Robust / src / IR / Flat / FlatCondBranch.java
1 package IR.Flat;
2 import java.util.Vector;
3
4 public class FlatCondBranch extends FlatNode {
5   TempDescriptor test_cond;
6   double trueprob=0.5;
7   boolean loop=false;
8
9   public FlatCondBranch(TempDescriptor td) {
10     test_cond=td;
11   }
12
13   public void setLoop() {
14     loop=true;
15   }
16
17   public boolean isLoopBranch() {
18     return loop;
19   }
20
21   public void setTrueProb(double p) {
22     trueprob=p;
23   }
24
25   public double getTrueProb() {
26     return trueprob;
27   }
28
29   public double getFalseProb() {
30     return 1-trueprob;
31   }
32
33   public void addTrueNext(FlatNode n) {
34     if (next.size()==0)
35       next.setSize(1);
36     next.setElementAt(n,0);
37     n.addPrev(this);
38   }
39
40   public void addFalseNext(FlatNode n) {
41     next.setSize(2);
42     next.setElementAt(n,1);
43     n.addPrev(this);
44   }
45
46   public TempDescriptor getTest() {
47     return test_cond;
48   }
49
50   public String toString() {
51     return "conditional branch";
52   }
53
54   public String toString(String negjump) {
55     return "FlatCondBranch_if (!"+test_cond.toString()+") goto "+negjump;
56   }
57
58   public void addNext(FlatNode n) {
59     throw new Error();
60   }
61
62   public int kind() {
63     return FKind.FlatCondBranch;
64   }
65
66   public TempDescriptor [] readsTemps() {
67     return new TempDescriptor[] {test_cond};
68   }
69 }