@@ -43,7 +43,7 @@ class TruffleClassLoader extends ClassLoader {
43
43
44
44
private Collection <ClassLoader > loaders ;
45
45
46
- TruffleClassLoader (ClassLoader parent , Unsafe unsafe ) throws ClassNotFoundException , NoSuchMethodException , IllegalAccessException , IllegalArgumentException , InvocationTargetException {
46
+ TruffleClassLoader (ClassLoader parent , Unsafe unsafe ) throws NoSuchMethodException , IllegalAccessException , IllegalArgumentException , InvocationTargetException {
47
47
super (parent );
48
48
loaders = getTruffleLocatorLoaders (parent );
49
49
if (loaders == null ) {
@@ -54,6 +54,9 @@ class TruffleClassLoader extends ClassLoader {
54
54
55
55
@ Override
56
56
public Class <?> findClass (String name ) throws ClassNotFoundException {
57
+ if (loaders == null ) {
58
+ return super .findClass (name );
59
+ }
57
60
for (ClassLoader loader : loaders ) {
58
61
if (loader == null ) {
59
62
continue ;
@@ -75,9 +78,9 @@ private static Class getClass(ClassLoader cl, String className) throws ClassNotF
75
78
}
76
79
}
77
80
78
- private static Collection <ClassLoader > getTruffleLocatorLoaders (ClassLoader cl ) throws ClassNotFoundException {
79
- Class LocatorClass = getClass (cl , TRUFFLE_LOCATOR_CLASS_NAME );
81
+ private static Collection <ClassLoader > getTruffleLocatorLoaders (ClassLoader cl ) {
80
82
try {
83
+ Class LocatorClass = getClass (cl , TRUFFLE_LOCATOR_CLASS_NAME );
81
84
return (Collection <ClassLoader >) LocatorClass .getMethod ("loaders" , (Class [])null ).invoke (null , (Object [])null );
82
85
} catch (Exception ex ) {
83
86
if (TruffleJMX .DEBUG ) {
@@ -87,9 +90,9 @@ private static Collection<ClassLoader> getTruffleLocatorLoaders(ClassLoader cl)
87
90
return null ;
88
91
}
89
92
90
- private static Collection <ClassLoader > getGraalVMLocatorLoaders (ClassLoader cl , Unsafe unsafe ) throws ClassNotFoundException {
91
- Class LocatorClass = getClass (cl , GRAALVM_LOCATOR_CLASS_NAME );
93
+ private static Collection <ClassLoader > getGraalVMLocatorLoaders (ClassLoader cl , Unsafe unsafe ) {
92
94
try {
95
+ Class LocatorClass = getClass (cl , GRAALVM_LOCATOR_CLASS_NAME );
93
96
Field f = LocatorClass .getDeclaredField ("loader" );
94
97
Object base = unsafe .staticFieldBase (f );
95
98
ClassLoader loader = (ClassLoader ) unsafe .getObject (base , unsafe .staticFieldOffset (f ));
0 commit comments