--- a/jdk/src/share/classes/java/lang/invoke/InvokerBytecodeGenerator.java Wed Nov 06 11:22:15 2013 -0800
+++ b/jdk/src/share/classes/java/lang/invoke/InvokerBytecodeGenerator.java Wed Nov 06 11:31:49 2013 -0800
@@ -275,7 +275,7 @@
*/
private void classFilePrologue() {
cw = new ClassWriter(ClassWriter.COMPUTE_MAXS + ClassWriter.COMPUTE_FRAMES);
- cw.visit(Opcodes.V1_6, Opcodes.ACC_PUBLIC + Opcodes.ACC_FINAL + Opcodes.ACC_SUPER, className, null, superName, null);
+ cw.visit(Opcodes.V1_8, Opcodes.ACC_PUBLIC + Opcodes.ACC_FINAL + Opcodes.ACC_SUPER, className, null, superName, null);
cw.visitSource(sourceFile, null);
String invokerDesc = invokerType.toMethodDescriptorString();
@@ -646,7 +646,8 @@
// invocation
if (member.isMethod()) {
mtype = member.getMethodType().toMethodDescriptorString();
- mv.visitMethodInsn(refKindOpcode(refKind), cname, mname, mtype);
+ mv.visitMethodInsn(refKindOpcode(refKind), cname, mname, mtype,
+ member.getDeclaringClass().isInterface());
} else {
mtype = MethodType.toFieldDescriptorString(member.getFieldType());
mv.visitFieldInsn(refKindOpcode(refKind), cname, mname, mtype);