Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/openjdk-multiarch-jdk8u
Path: blob/aarch64-shenandoah-jdk8u272-b10/hotspot/test/runtime/6626217/Loader2.java
32284 views
1
import java.io.ByteArrayInputStream;
2
import java.io.FileInputStream;
3
public class Loader2 extends ClassLoader {
4
int _recur;
5
public void print( String msg ) {
6
for( int i=0; i<_recur; i++ )
7
System.out.print(" ");
8
System.out.println(">>Loader2>> "+msg);
9
}
10
11
protected Class findClass2(String name) throws ClassNotFoundException {
12
print("Fetching the implementation of "+name);
13
int old = _recur;
14
try {
15
FileInputStream fi = new FileInputStream(name+".impl2");
16
byte result[] = new byte[fi.available()];
17
fi.read(result);
18
19
print("DefineClass1 on "+name);
20
_recur++;
21
Class clazz = defineClass(name, result, 0, result.length);
22
_recur = old;
23
print("Returning newly loaded class.");
24
return clazz;
25
} catch (Exception e) {
26
_recur = old;
27
print("Not found on disk.");
28
// If we caught an exception, either the class was not found or
29
// it was unreadable by our process.
30
return null;
31
//throw new ClassNotFoundException(e.toString());
32
}
33
}
34
35
protected synchronized Class loadClass(String name, boolean resolve) throws ClassNotFoundException {
36
// Attempt a disk load first
37
Class c = findClass2(name);
38
if( c == null ) {
39
// check if the class has already been loaded
40
print("Checking for prior loaded class "+name);
41
c = findLoadedClass(name);
42
print("Letting super-loader load "+name);
43
int old = _recur;
44
_recur++;
45
c = super.loadClass(name, false);
46
_recur=old;
47
}
48
if (resolve) { print("Resolving class "+name); resolveClass(c); }
49
print("Returning clazz "+c.getClassLoader()+":"+name);
50
return c;
51
}
52
}
53
54