use of com.googlecode.aviator.code.interpreter.ir.JumpIR in project aviatorscript by killme2008.
the class InterpretCodeGenerator method resolveLabels.
private void resolveLabels(final List<IR> instruments) {
Map<Label, Integer> /* pc */
label2pc = new IdentityHashMap<Label, Integer>();
ListIterator<IR> it = instruments.listIterator();
int i = 0;
while (it.hasNext()) {
IR ir = it.next();
// Find all visit_label IR, replace them with pc.
if (ir instanceof VisitLabelIR) {
it.remove();
label2pc.put(((VisitLabelIR) ir).getLabel(), i);
} else {
i = i + 1;
}
}
// resolve label to pc
for (IR ir : instruments) {
if (ir instanceof JumpIR) {
((JumpIR) ir).setPc(label2pc.get(((JumpIR) ir).getLabel()));
}
}
}
Aggregations