--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Gen.java Fri May 26 01:00:44 2017 +0000
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Gen.java Wed May 31 14:51:02 2017 +0200
@@ -1894,7 +1894,7 @@
case NULLCHK:
result = od.load();
code.emitop0(dup);
- genNullCheck(tree.pos());
+ genNullCheck(tree);
break;
default:
Assert.error();
@@ -1903,12 +1903,13 @@
}
/** Generate a null check from the object value at stack top. */
- private void genNullCheck(DiagnosticPosition pos) {
+ private void genNullCheck(JCTree tree) {
+ code.statBegin(tree.pos);
if (allowBetterNullChecks) {
- callMethod(pos, syms.objectsType, names.requireNonNull,
+ callMethod(tree.pos(), syms.objectsType, names.requireNonNull,
List.of(syms.objectType), true);
} else {
- callMethod(pos, syms.objectType, names.getClass,
+ callMethod(tree.pos(), syms.objectType, names.getClass,
List.nil(), false);
}
code.emitop0(pop);
@@ -2087,7 +2088,7 @@
base.drop();
} else {
base.load();
- genNullCheck(tree.selected.pos());
+ genNullCheck(tree.selected);
}
result = items.
makeImmediateItem(sym.type, ((VarSymbol) sym).getConstValue());