--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Gen.java Mon Sep 08 10:50:59 2014 +0200
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Gen.java Mon Sep 08 13:11:28 2014 +0200
@@ -519,6 +519,7 @@
ListBuffer<Attribute.TypeCompound> fieldTAs = new ListBuffer<>();
ListBuffer<Attribute.TypeCompound> nonfieldTAs = new ListBuffer<>();
for (TypeCompound ta : tas) {
+ Assert.check(ta.getPosition().type != TargetType.UNKNOWN);
if (ta.getPosition().type == TargetType.FIELD) {
fieldTAs.add(ta);
} else {
@@ -1818,7 +1819,10 @@
|| code.meth.getKind() == javax.lang.model.element.ElementKind.STATIC_INIT;
for (Attribute.TypeCompound ta : meth.getRawTypeAttributes()) {
- if (ta.position != null && ta.position.matchesPos(treePos))
+ if (ta.hasUnknownPosition())
+ ta.tryFixPosition();
+
+ if (ta.position.matchesPos(treePos))
ta.position.updatePosOffset(code.cp);
}
@@ -1826,7 +1830,10 @@
return;
for (Attribute.TypeCompound ta : meth.owner.getRawTypeAttributes()) {
- if (ta.position != null && ta.position.matchesPos(treePos))
+ if (ta.hasUnknownPosition())
+ ta.tryFixPosition();
+
+ if (ta.position.matchesPos(treePos))
ta.position.updatePosOffset(code.cp);
}
@@ -1836,7 +1843,10 @@
continue;
for (Attribute.TypeCompound ta : s.getRawTypeAttributes()) {
- if (ta.position != null && ta.position.matchesPos(treePos))
+ if (ta.hasUnknownPosition())
+ ta.tryFixPosition();
+
+ if (ta.position.matchesPos(treePos))
ta.position.updatePosOffset(code.cp);
}
}
@@ -2208,8 +2218,8 @@
}
public void visitTypeTest(JCInstanceOf tree) {
+ setTypeAnnotationPositions(tree.pos);
genExpr(tree.expr, tree.expr.type).load();
- setTypeAnnotationPositions(tree.pos);
code.emitop2(instanceof_, makeRef(tree.pos(), tree.clazz.type));
result = items.makeStackItem(syms.booleanType);
}