8006179: JSR292 MethodHandles lookup with interface using findVirtual()
Reviewed-by: jrose, twisti
This commit is contained in:
parent
98e5a4b393
commit
f179e269b9
@ -51,6 +51,16 @@ class DirectMethodHandle extends MethodHandle {
|
||||
private DirectMethodHandle(MethodType mtype, LambdaForm form, MemberName member) {
|
||||
super(mtype, form);
|
||||
if (!member.isResolved()) throw new InternalError();
|
||||
|
||||
if (member.getDeclaringClass().isInterface() && !member.isAbstract()) {
|
||||
// Check for corner case: invokeinterface of Object method
|
||||
MemberName m = new MemberName(Object.class, member.getName(), member.getMethodType(), member.getReferenceKind());
|
||||
m = MemberName.getFactory().resolveOrNull(m.getReferenceKind(), m, null);
|
||||
if (m != null && m.isPublic()) {
|
||||
member = m;
|
||||
}
|
||||
}
|
||||
|
||||
this.member = member;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user