test/compiler/classUnloading/anonymousClass/TestAnonymousClassUnloading.java

Print this page

        

*** 21,32 **** * questions. */ import sun.hotspot.WhiteBox; import sun.misc.Unsafe; - import sun.misc.IOUtils; import java.lang.reflect.Method; import java.net.URL; import java.net.URLConnection; /* --- 21,32 ---- * questions. */ import sun.hotspot.WhiteBox; import sun.misc.Unsafe; + import java.io.IOException; import java.lang.reflect.Method; import java.net.URL; import java.net.URLConnection; /*
*** 107,117 **** */ static public void main(String[] args) throws Exception { // (1) Load an anonymous version of this class using the corresponding Unsafe method URL classUrl = TestAnonymousClassUnloading.class.getResource("TestAnonymousClassUnloading.class"); URLConnection connection = classUrl.openConnection(); ! byte[] classBytes = IOUtils.readFully(connection.getInputStream(), connection.getContentLength(), true); Class<?> anonymousClass = UNSAFE.defineAnonymousClass(TestAnonymousClassUnloading.class, classBytes, null); // (2) Make sure all paths of doWork are profiled and compiled for (int i = 0; i < 100000; ++i) { doWork(anonymousClass); --- 107,123 ---- */ static public void main(String[] args) throws Exception { // (1) Load an anonymous version of this class using the corresponding Unsafe method URL classUrl = TestAnonymousClassUnloading.class.getResource("TestAnonymousClassUnloading.class"); URLConnection connection = classUrl.openConnection(); ! ! int length = connection.getContentLength(); ! byte[] classBytes = connection.getInputStream().readAllBytes(); ! if (length != -1 && classBytes.length != length) { ! throw new IOException("Expected:" + length + ", actual: " + classBytes.length); ! } ! Class<?> anonymousClass = UNSAFE.defineAnonymousClass(TestAnonymousClassUnloading.class, classBytes, null); // (2) Make sure all paths of doWork are profiled and compiled for (int i = 0; i < 100000; ++i) { doWork(anonymousClass);