8154475: Clean up lookup visibility
Reviewed-by: vlivanov, mhaupt, ahgross
This commit is contained in:
parent
b8549d7f13
commit
a4ff82596a
@ -155,7 +155,7 @@ class DirectMethodHandle extends MethodHandle {
|
|||||||
private static LambdaForm preparedLambdaForm(MemberName m) {
|
private static LambdaForm preparedLambdaForm(MemberName m) {
|
||||||
assert(m.isInvocable()) : m; // call preparedFieldLambdaForm instead
|
assert(m.isInvocable()) : m; // call preparedFieldLambdaForm instead
|
||||||
MethodType mtype = m.getInvocationType().basicType();
|
MethodType mtype = m.getInvocationType().basicType();
|
||||||
assert(!m.isMethodHandleInvoke() || "invokeBasic".equals(m.getName())) : m;
|
assert(!m.isMethodHandleInvoke()) : m;
|
||||||
int which;
|
int which;
|
||||||
switch (m.getReferenceKind()) {
|
switch (m.getReferenceKind()) {
|
||||||
case REF_invokeVirtual: which = LF_INVVIRTUAL; break;
|
case REF_invokeVirtual: which = LF_INVVIRTUAL; break;
|
||||||
|
@ -1049,7 +1049,7 @@ class LambdaForm {
|
|||||||
this.member = member;
|
this.member = member;
|
||||||
this.resolvedHandle = resolvedHandle;
|
this.resolvedHandle = resolvedHandle;
|
||||||
// The following assert is almost always correct, but will fail for corner cases, such as PrivateInvokeTest.
|
// The following assert is almost always correct, but will fail for corner cases, such as PrivateInvokeTest.
|
||||||
//assert(!isInvokeBasic());
|
//assert(!isInvokeBasic(member));
|
||||||
}
|
}
|
||||||
NamedFunction(MethodType basicInvokerType) {
|
NamedFunction(MethodType basicInvokerType) {
|
||||||
assert(basicInvokerType == basicInvokerType.basicType()) : basicInvokerType;
|
assert(basicInvokerType == basicInvokerType.basicType()) : basicInvokerType;
|
||||||
@ -1060,13 +1060,13 @@ class LambdaForm {
|
|||||||
// necessary to pass BigArityTest
|
// necessary to pass BigArityTest
|
||||||
this.member = Invokers.invokeBasicMethod(basicInvokerType);
|
this.member = Invokers.invokeBasicMethod(basicInvokerType);
|
||||||
}
|
}
|
||||||
assert(isInvokeBasic());
|
assert(isInvokeBasic(member));
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isInvokeBasic() {
|
private static boolean isInvokeBasic(MemberName member) {
|
||||||
return member != null &&
|
return member != null &&
|
||||||
member.isMethodHandleInvoke() &&
|
member.getDeclaringClass() == MethodHandle.class &&
|
||||||
"invokeBasic".equals(member.getName());
|
"invokeBasic".equals(member.getName());
|
||||||
}
|
}
|
||||||
|
|
||||||
// The next 2 constructors are used to break circular dependencies on MH.invokeStatic, etc.
|
// The next 2 constructors are used to break circular dependencies on MH.invokeStatic, etc.
|
||||||
@ -1204,7 +1204,7 @@ class LambdaForm {
|
|||||||
assert(mh.type().basicType() == MethodType.genericMethodType(arity).changeReturnType(rtype))
|
assert(mh.type().basicType() == MethodType.genericMethodType(arity).changeReturnType(rtype))
|
||||||
: Arrays.asList(mh, rtype, arity);
|
: Arrays.asList(mh, rtype, arity);
|
||||||
MemberName member = mh.internalMemberName();
|
MemberName member = mh.internalMemberName();
|
||||||
if (member != null && member.getName().equals("invokeBasic") && member.isMethodHandleInvoke()) {
|
if (isInvokeBasic(member)) {
|
||||||
assert(arity > 0);
|
assert(arity > 0);
|
||||||
assert(a[0] instanceof MethodHandle);
|
assert(a[0] instanceof MethodHandle);
|
||||||
MethodHandle mh2 = (MethodHandle) a[0];
|
MethodHandle mh2 = (MethodHandle) a[0];
|
||||||
|
@ -346,7 +346,6 @@ import static java.lang.invoke.MethodHandleStatics.newInternalError;
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** Utility method to query if this member is a method handle invocation (invoke or invokeExact).
|
/** Utility method to query if this member is a method handle invocation (invoke or invokeExact).
|
||||||
* Also returns true for the non-public MH.invokeBasic.
|
|
||||||
*/
|
*/
|
||||||
public boolean isMethodHandleInvoke() {
|
public boolean isMethodHandleInvoke() {
|
||||||
final int bits = MH_INVOKE_MODS &~ Modifier.PUBLIC;
|
final int bits = MH_INVOKE_MODS &~ Modifier.PUBLIC;
|
||||||
@ -361,7 +360,6 @@ import static java.lang.invoke.MethodHandleStatics.newInternalError;
|
|||||||
switch (name) {
|
switch (name) {
|
||||||
case "invoke":
|
case "invoke":
|
||||||
case "invokeExact":
|
case "invokeExact":
|
||||||
case "invokeBasic": // internal sig-poly method
|
|
||||||
return true;
|
return true;
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
|
@ -951,8 +951,6 @@ assertEquals("", (String) MH_newString.invokeExact());
|
|||||||
return invoker(type);
|
return invoker(type);
|
||||||
if ("invokeExact".equals(name))
|
if ("invokeExact".equals(name))
|
||||||
return exactInvoker(type);
|
return exactInvoker(type);
|
||||||
if ("invokeBasic".equals(name))
|
|
||||||
return basicInvoker(type);
|
|
||||||
assert(!MemberName.isMethodHandleInvokeName(name));
|
assert(!MemberName.isMethodHandleInvokeName(name));
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user