1 package Analysis.OoOJava;
3 import java.util.HashMap;
4 import java.util.Iterator;
5 import java.util.HashSet;
7 import IR.Flat.TempDescriptor;
9 public class SESEWaitingQueue {
10 public static final int NORMAL= 0; // enqueue all stuff.
11 public static final int EXCEPTION= 1; // dynamically decide whether a waiting element is enqueued or not.
13 private HashMap<TempDescriptor, Set<WaitingElement>>tmp2WaitingElement;
14 private HashMap<Integer, Set<WaitingElement>>mapWaitingElement;
15 private HashMap<Integer, Integer>mapType;
17 public SESEWaitingQueue() {
18 mapWaitingElement=new HashMap<Integer, Set<WaitingElement>>();
19 tmp2WaitingElement=new HashMap<TempDescriptor, Set<WaitingElement>>();
20 mapType=new HashMap<Integer, Integer>();
23 public void setType(int queueID, int type) {
24 mapType.put(new Integer(queueID), new Integer(type));
27 public int getType(int queueID) {
28 Integer type=mapType.get(new Integer(queueID));
30 return SESEWaitingQueue.NORMAL;
32 return type.intValue();
36 public void setWaitingElementSet(int queueID, Set<WaitingElement> set) {
37 mapWaitingElement.put(new Integer(queueID), set);
38 for(Iterator<WaitingElement> wit=set.iterator(); wit.hasNext(); ) {
39 WaitingElement we=wit.next();
40 TempDescriptor tmp=we.getTempDesc();
41 if (!tmp2WaitingElement.containsKey(tmp))
42 tmp2WaitingElement.put(tmp, new HashSet<WaitingElement>());
43 tmp2WaitingElement.get(tmp).add(we);
47 public Set<WaitingElement> getWaitingElementSet(TempDescriptor tmp) {
48 return tmp2WaitingElement.get(tmp);
51 public Set<WaitingElement> getWaitingElementSet(int queueID) {
52 return mapWaitingElement.get(new Integer(queueID));
55 public Set<Integer> getQueueIDSet() {
56 return mapWaitingElement.keySet();
59 public int getWaitingElementSize() {
61 Set<Integer> keySet=mapWaitingElement.keySet();
62 for (Iterator iterator = keySet.iterator(); iterator.hasNext(); ) {
63 Integer key = (Integer) iterator.next();
64 size+=mapWaitingElement.get(key).size();