Skip to content

Commit d734e8a

Browse files
committed
Review
1 parent 59aca0d commit d734e8a

6 files changed

Lines changed: 18 additions & 6 deletions

File tree

make/jdk/src/classes/build/tools/methodhandle/VarHandleGuardMethodGenerator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ final class VarHandleGuards {
142142
} else if (direct && handle.vform.getMethodType_V(ad.type) == ad.symbolicMethodTypeErased) {
143143
MethodHandle.linkToStatic(<LINK_TO_STATIC_ARGS>);
144144
} else {
145-
<RETURN>ad.adaptedMethodHandle(handle).invokeBasic(<LINK_TO_INVOKER_ARGS>);
145+
ad.adaptedMethodHandle(handle).invokeBasic(<LINK_TO_INVOKER_ARGS>);
146146
}
147147
}""";
148148

src/java.base/share/classes/java/lang/invoke/MethodHandle.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -980,7 +980,7 @@ private static boolean isAncestorLoaderOf(ClassLoader ancestor, ClassLoader desc
980980
return false; // no direct relation between loaders is found
981981
}
982982

983-
static boolean isBuiltinLoader(ClassLoader loader) {
983+
private static boolean isBuiltinLoader(ClassLoader loader) {
984984
return loader == null ||
985985
loader == ClassLoaders.platformClassLoader() ||
986986
loader == ClassLoaders.appClassLoader();

src/java.base/share/classes/java/lang/invoke/SegmentVarHandle.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,11 @@ final MethodType accessModeTypeUncached(VarHandle.AccessType accessType) {
6464
: accessType.accessModeType(MemorySegment.class, getType.returnType(), long.class, long.class);
6565
}
6666

67+
@Override
68+
boolean isReachableFrom(ClassLoader cl) {
69+
return true;
70+
}
71+
6772
@Override
6873
public SegmentVarHandle withInvokeExactBehavior() {
6974
return hasInvokeExactBehavior() ?

src/java.base/share/classes/java/lang/invoke/VarHandle.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2012,10 +2012,7 @@ static AccessMode valueFromOrdinal(int mode) {
20122012
// Exists for the adaption mechanism of AccessDescriptor
20132013
// Each VH should report its explicitly (receiver, coordinates) and
20142014
// implicitly (static declaring class) used class to MethodHandle.isReachableFrom
2015-
boolean isReachableFrom(ClassLoader cl) {
2016-
// Call MethodHandle.isReachableFrom for the used classes
2017-
return true;
2018-
}
2015+
abstract boolean isReachableFrom(ClassLoader cl);
20192016

20202017
static final class AccessDescriptor {
20212018
final MethodType symbolicMethodTypeExact;

src/java.base/share/classes/java/lang/invoke/X-VarHandle.java.template

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -789,6 +789,11 @@ final class VarHandle$Type$s {
789789
return at.accessModeType({#if[Object]?arrayType:$type$[].class}, {#if[Object]?arrayType.getComponentType():$type$.class}, int.class);
790790
}
791791

792+
@Override
793+
boolean isReachableFrom(ClassLoader cl) {
794+
return {#if[Object]?MethodHandle.isReachableFrom(arrayType, cl):true};
795+
}
796+
792797
#if[Object]
793798
@ForceInline
794799
static Object runtimeTypeCheck(Array handle, Object[] oarray, Object value) {

src/java.base/share/classes/java/lang/invoke/X-VarHandleByteArrayView.java.template

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,11 @@ final class VarHandleByteArrayAs$Type$s extends VarHandleByteArrayBase {
7979
super(form, exact);
8080
this.be = be;
8181
}
82+
83+
@Override
84+
boolean isReachableFrom(ClassLoader cl) {
85+
return true;
86+
}
8287
}
8388

8489
static final class ArrayHandle extends ByteArrayViewVarHandle {

0 commit comments

Comments
 (0)