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