author | Jaroslav Tulach <jaroslav.tulach@apidesign.org> |
Sun, 09 Dec 2012 16:16:19 +0100 | |
branch | exceptions |
changeset 288 | 6d1e8eccdc98 |
child 289 | a2ca83ddc521 |
permissions | -rw-r--r-- |
jaroslav@288 | 1 |
/* |
jaroslav@288 | 2 |
* To change this template, choose Tools | Templates |
jaroslav@288 | 3 |
* and open the template in the editor. |
jaroslav@288 | 4 |
*/ |
jaroslav@288 | 5 |
package org.apidesign.javap; |
jaroslav@288 | 6 |
|
jaroslav@288 | 7 |
/** |
jaroslav@288 | 8 |
* |
jaroslav@288 | 9 |
* @author Jaroslav Tulach <jtulach@netbeans.org> |
jaroslav@288 | 10 |
*/ |
jaroslav@288 | 11 |
public final class TrapDataIterator { |
jaroslav@288 | 12 |
private final java.util.Map<Short, TrapData> exStart = new java.util.HashMap<Short, TrapData>(); |
jaroslav@288 | 13 |
private final java.util.Map<Short, TrapData> exStop = new java.util.HashMap<Short, TrapData>(); |
jaroslav@288 | 14 |
private final java.util.Deque<TrapData> current = new java.util.ArrayDeque<TrapData>(); |
jaroslav@288 | 15 |
|
jaroslav@288 | 16 |
TrapDataIterator(Vector exceptionTable) { |
jaroslav@288 | 17 |
for (int i=0 ; i < exceptionTable.size(); i++) { |
jaroslav@288 | 18 |
final TrapData td = (TrapData)exceptionTable.elementAt(i); |
jaroslav@288 | 19 |
exStart.put(td.start_pc, td); |
jaroslav@288 | 20 |
exStop.put(td.end_pc, td); |
jaroslav@288 | 21 |
} |
jaroslav@288 | 22 |
} |
jaroslav@288 | 23 |
|
jaroslav@288 | 24 |
public void advanceTo(int i) { |
jaroslav@288 | 25 |
TrapData e = exStart.get((short) i); |
jaroslav@288 | 26 |
if (e != null) { |
jaroslav@288 | 27 |
current.addFirst(e); |
jaroslav@288 | 28 |
} |
jaroslav@288 | 29 |
e = exStop.get((short) i); |
jaroslav@288 | 30 |
if (e != null) { |
jaroslav@288 | 31 |
current.remove(e); |
jaroslav@288 | 32 |
} |
jaroslav@288 | 33 |
} |
jaroslav@288 | 34 |
|
jaroslav@288 | 35 |
public boolean useTry() { |
jaroslav@288 | 36 |
return !current.isEmpty(); |
jaroslav@288 | 37 |
} |
jaroslav@288 | 38 |
|
jaroslav@288 | 39 |
public TrapData[] current() { |
jaroslav@288 | 40 |
return current.toArray(new TrapData[0]); |
jaroslav@288 | 41 |
} |
jaroslav@288 | 42 |
} |