11 bindings=new Vector();
12 binding=new Hashtable();
15 public void addBindings(Vector v) {
16 for (int i=0;i<v.size();i++) {
17 bindings.add((Binding)v.get(i));
21 public boolean checkconflicts() {
22 Set toremove=new HashSet();
23 for(int i=0;i<updates.size();i++) {
24 Updates u1=(Updates)updates.get(i);
25 for(int j=0;j<updates.size();j++) {
26 Updates u2=(Updates)updates.get(j);
27 if (u1.isAbstract()||u2.isAbstract())
28 continue; /* Abstract updates are already accounted for by graph */
29 if (u1.getDescriptor()!=u2.getDescriptor())
30 continue; /* No interference - different descriptors */
32 if ((u1.getOpcode()==Opcode.GT||u1.getOpcode()==Opcode.GE)&&
33 (u2.getOpcode()==Opcode.GT||u2.getOpcode()==Opcode.GE))
34 continue; /* Can be satisfied simultaneously */
36 if ((u1.getOpcode()==Opcode.LT||u1.getOpcode()==Opcode.LE)&&
37 (u2.getOpcode()==Opcode.LT||u2.getOpcode()==Opcode.LE))
41 return false; /* They interfere */
44 updates.remove(toremove);
48 public void addBinding(Binding b) {
50 binding.put(b.getVar(),b);
53 public Binding getBinding(VarDescriptor vd) {
54 if (binding.containsKey(vd))
55 return (Binding)binding.get(vd);
60 public void addUpdate(Updates u) {
64 public int numUpdates() {
65 return updates.size();
67 public Updates getUpdate(int i) {
68 return (Updates)updates.get(i);