Exemple #1
0
 static void tryfinally(SkinnyMethodAdapter mv, Runnable codeBlock, Runnable finallyBlock) {
   Label before = new Label(), after = new Label(), ensure = new Label(), done = new Label();
   mv.trycatch(before, after, ensure, null);
   mv.label(before);
   codeBlock.run();
   mv.label(after);
   if (finallyBlock != null) finallyBlock.run();
   mv.go_to(done);
   if (finallyBlock != null) {
     mv.label(ensure);
     finallyBlock.run();
     mv.athrow();
   }
   mv.label(done);
 }