diff -r 71e344b8e2c2 -r 7220be8747f0 src/share/classes/com/sun/tools/javac/jvm/Gen.java --- a/src/share/classes/com/sun/tools/javac/jvm/Gen.java Fri May 05 06:07:27 2017 -0700 +++ b/src/share/classes/com/sun/tools/javac/jvm/Gen.java Wed Jun 07 00:04:12 2017 -0700 @@ -27,6 +27,7 @@ import java.util.*; +import com.sun.tools.javac.tree.TreeInfo.PosKind; import com.sun.tools.javac.util.*; import com.sun.tools.javac.util.JCDiagnostic.DiagnosticPosition; import com.sun.tools.javac.util.List; @@ -1531,12 +1532,16 @@ catchallpc, 0); startseg = env.info.gaps.next().intValue(); } - code.statBegin(TreeInfo.finalizerPos(env.tree)); + code.statBegin(TreeInfo.finalizerPos(env.tree, PosKind.FIRST_STAT_POS)); code.markStatBegin(); Item excVar = makeTemp(syms.throwableType); excVar.store(); genFinalizer(env); + code.resolvePending(); + code.statBegin(TreeInfo.finalizerPos(env.tree, PosKind.END_POS)); + code.markStatBegin(); + excVar.load(); registerCatch(body.pos(), startseg, env.info.gaps.next().intValue(), @@ -1550,7 +1555,7 @@ code.resolve(env.info.cont); // Mark statement line number - code.statBegin(TreeInfo.finalizerPos(env.tree)); + code.statBegin(TreeInfo.finalizerPos(env.tree, PosKind.FIRST_STAT_POS)); code.markStatBegin(); // Save return address.