mb.addTryCatchInfo(excetpionStart, excetpionEnd, excetpionStart, null);
}
@Override
public void executing() {
Executeable returnInsn = null;
lock.loadToStack(this);
for (Executeable e : getExecuteQueue()) {
if(e.equals(flag1)){
//e.execute();
insnHelper.monitorEnter();
insnHelper.mark(monitorenter);
continue;
}else if(e instanceof Return){
returnInsn = e;
break;
}
e.execute();
}
dupSynArgument.loadToStack(this);
insnHelper.monitorExit();
insnHelper.mark(monitorexit);
insnHelper.goTo(returnLbl);
//for exception
insnHelper.nop();
insnHelper.mark(excetpionStart);
dupSynArgument.loadToStack(this);
insnHelper.monitorExit();
insnHelper.getMv().getStack().push(AClass.THROWABLE_ACLASS.getType());
insnHelper.mark(excetpionEnd);
insnHelper.throwException();
insnHelper.mark(returnLbl);
if(returnInsn != null){
returnInsn.execute();
}
}