1 cananian 1.1.2.2 package harpoon.Backend.CSAHack.RegAlloc; 2 cananian 1.1.2.1 3 cananian 1.1.2.2 import harpoon.Backend.CSAHack.Graph.Node; 4 cananian 1.1.2.2 import harpoon.Backend.CSAHack.Graph.NodeList; 5 cananian 1.1.2.1 6 cananian 1.1.2.1 import java.util.Hashtable; 7 cananian 1.1.2.1 import java.util.Stack; 8 cananian 1.1.2.1 9 cananian 1.1.2.1 class Set { 10 cananian 1.1.2.1 Hashtable lookup; 11 cananian 1.1.2.1 String name; 12 cananian 1.1.2.1 13 cananian 1.1.2.1 boolean debug = false; 14 cananian 1.1.2.1 15 cananian 1.1.2.1 public Set() { 16 cananian 1.1.2.1 lookup = new Hashtable(); 17 cananian 1.1.2.1 name = "unknown"; 18 cananian 1.1.2.1 } 19 cananian 1.1.2.1 public Set(String name) { 20 cananian 1.1.2.1 this(); 21 cananian 1.1.2.1 this.name = name; 22 cananian 1.1.2.1 } 23 cananian 1.1.2.1 private String nodename(Node n) { 24 cananian 1.1.2.1 return n.toString(); 25 cananian 1.1.2.1 } 26 cananian 1.1.2.1 public void add(Node n) { 27 cananian 1.1.2.1 if(debug) 28 cananian 1.1.2.1 System.out.println(name+": add("+nodename(n)+")"); 29 cananian 1.1.2.1 if (this.contains(n)) return; 30 cananian 1.1.2.3 lookup.put(n, n); 31 cananian 1.1.2.1 } 32 cananian 1.1.2.1 public boolean empty() { 33 cananian 1.1.2.1 return lookup.isEmpty(); 34 cananian 1.1.2.1 } 35 cananian 1.1.2.1 public void remove(Node n) { 36 cananian 1.1.2.1 if(debug) 37 cananian 1.1.2.1 System.out.println(name+": remove("+nodename(n)+")"); 38 cananian 1.1.2.1 lookup.remove(n); 39 cananian 1.1.2.1 } 40 cananian 1.1.2.1 public boolean contains(Node n) { 41 cananian 1.1.2.1 return (lookup.get(n) != null); 42 cananian 1.1.2.1 } 43 cananian 1.1.2.1 public Node head() { 44 cananian 1.1.2.1 return (Node) lookup.keys().nextElement(); 45 cananian 1.1.2.1 } 46 cananian 1.1.2.1 public NodeList nodes() { 47 cananian 1.1.2.1 NodeList nl = null; 48 cananian 1.1.2.1 java.util.Enumeration e=lookup.keys(); 49 cananian 1.1.2.1 while (e.hasMoreElements()) 50 cananian 1.1.2.1 nl = new NodeList((Node)e.nextElement(), nl); 51 cananian 1.1.2.1 return nl; 52 cananian 1.1.2.1 } 53 cananian 1.1.2.1 public int size() { 54 cananian 1.1.2.1 return lookup.size(); 55 cananian 1.1.2.1 } 56 cananian 1.1.2.3 public String toString() { return name+": "+lookup.toString(); } 57 cananian 1.1.2.1 } 58 cananian 1.2