src/share/classes/java/lang/invoke/InvokerBytecodeGenerator.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File
*** old/src/share/classes/java/lang/invoke/InvokerBytecodeGenerator.java	Mon Mar 24 22:06:03 2014
--- new/src/share/classes/java/lang/invoke/InvokerBytecodeGenerator.java	Mon Mar 24 22:06:03 2014

*** 33,42 **** --- 33,43 ---- import static java.lang.invoke.LambdaForm.*; import static java.lang.invoke.LambdaForm.BasicType.*; import static java.lang.invoke.MethodHandleStatics.*; import static java.lang.invoke.MethodHandleNatives.Constants.*; + import java.lang.invoke.MethodHandleImpl.ArrayAccessor; import sun.invoke.util.ValueConversions; import sun.invoke.util.VerifyType; import sun.invoke.util.VerifyAccess; import sun.invoke.util.Wrapper;
*** 784,794 **** --- 785,801 ---- for (int i = 0; i < name.arguments.length; i++) { emitPushArgument(name, i); } // invocation ! if (member.isMethod()) { ! if (defc == ArrayAccessor.class && + match(member, ArrayAccessor.OBJECT_ARRAY_GETTER)) { + mv.visitInsn(Opcodes.AALOAD); + } else if (defc == ArrayAccessor.class && + match(member, ArrayAccessor.OBJECT_ARRAY_SETTER)) { + mv.visitInsn(Opcodes.AASTORE); + } else if (member.isMethod()) { mtype = member.getMethodType().toMethodDescriptorString(); mv.visitMethodInsn(refKindOpcode(refKind), cname, mname, mtype, member.getDeclaringClass().isInterface()); } else { mtype = MethodType.toFieldDescriptorString(member.getFieldType());

src/share/classes/java/lang/invoke/InvokerBytecodeGenerator.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File