start of new file
[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 }