--- a/jdk/src/java.base/share/classes/java/lang/invoke/InvokerBytecodeGenerator.java Mon Nov 16 22:36:45 2015 -0800
+++ b/jdk/src/java.base/share/classes/java/lang/invoke/InvokerBytecodeGenerator.java Tue Nov 17 11:51:45 2015 +0100
@@ -750,7 +750,7 @@
assert(!isLinkerMethodInvoke(name)); // should use the static path for these
if (true) {
// push receiver
- MethodHandle target = name.function.resolvedHandle;
+ MethodHandle target = name.function.resolvedHandle();
assert(target != null) : name.exprString();
mv.visitLdcInsn(constantPlaceholder(target));
emitReferenceCast(MethodHandle.class, target);
@@ -779,6 +779,15 @@
//MethodHandle.class already covered
};
+ static boolean isStaticallyInvocable(NamedFunction[] functions) {
+ for (NamedFunction nf : functions) {
+ if (!isStaticallyInvocable(nf.member)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
static boolean isStaticallyInvocable(Name name) {
return isStaticallyInvocable(name.function.member());
}
@@ -881,7 +890,7 @@
// The array will be a constant.
Object emptyArray;
try {
- emptyArray = name.function.resolvedHandle.invoke();
+ emptyArray = name.function.resolvedHandle().invoke();
} catch (Throwable ex) {
throw newInternalError(ex);
}
@@ -1085,8 +1094,8 @@
Label L_handler = new Label();
Label L_done = new Label();
- Class<?> returnType = result.function.resolvedHandle.type().returnType();
- MethodType type = args.function.resolvedHandle.type()
+ Class<?> returnType = result.function.resolvedHandle().type().returnType();
+ MethodType type = args.function.resolvedHandle().type()
.dropParameterTypes(0,1)
.changeReturnType(returnType);