try 〜 finally でちょっと引っかかったところ
try 〜 finally を実装していたら、ベリファイアが Inconsistent stack height を出してきた。何が起きたのかと思ってよく見てみると……
TRY: // try 本体 TRY_END: JSR FINALLY GOTO END CATCH: JSR FINALLY ATHROW FINALLY: ASTORE $EX // finally 本体 RET $EX END:
さてどこが間違えているか。
TRY: // try 本体 TRY_END: ACONST_NULL // ダミー追加 JSR FINALLY POP // ダミー削除 GOTO END CATCH: JSR FINALLY ATHROW FINALLY: ASTORE $EX // finally 本体 RET $EX END:
こうするとベリファイア通過します。