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