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:

こうするとベリファイア通過します。