1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/test/runtime/7160757/Test7160757.java Wed Apr 27 01:25:04 2016 +0800 1.3 @@ -0,0 +1,82 @@ 1.4 +/* 1.5 + * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. 1.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 1.7 + * 1.8 + * This code is free software; you can redistribute it and/or modify it 1.9 + * under the terms of the GNU General Public License version 2 only, as 1.10 + * published by the Free Software Foundation. 1.11 + * 1.12 + * This code is distributed in the hope that it will be useful, but WITHOUT 1.13 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 1.14 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 1.15 + * version 2 for more details (a copy is included in the LICENSE file that 1.16 + * accompanied this code). 1.17 + * 1.18 + * You should have received a copy of the GNU General Public License version 1.19 + * 2 along with this work; if not, write to the Free Software Foundation, 1.20 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 1.21 + * 1.22 + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 1.23 + * or visit www.oracle.com if you need additional information or have any 1.24 + * questions. 1.25 + */ 1.26 + 1.27 +/* 1.28 + * @test Test7160757.java 1.29 + * @bug 7160757 1.30 + * @summary Tests that superclass initialization is not skipped 1.31 + */ 1.32 + 1.33 +public class Test7160757 { 1.34 + 1.35 + public static void main(String args[]) throws Exception { 1.36 + 1.37 + ClassLoader loader = new SLoader(); 1.38 + try { 1.39 + Class.forName("S", true, loader); 1.40 + System.out.println("FAILED"); 1.41 + throw new Exception("Should have thrown a VerifyError."); 1.42 + } catch (VerifyError e) { 1.43 + System.out.println(e); 1.44 + System.out.println("PASSED"); 1.45 + } 1.46 + } 1.47 + 1.48 + static class SLoader extends ClassLoader { 1.49 + 1.50 + /** 1.51 + * public class S extends Throwable { 1.52 + * public S() { 1.53 + * aload_0 1.54 + * invokespecial Object.<init>() 1.55 + * return 1.56 + * } 1.57 + * } 1.58 + */ 1.59 + static byte b(int i) { return (byte)i; } 1.60 + static byte S_class[] = { 1.61 + b(0xca), b(0xfe), b(0xba), b(0xbe), 0x00, 0x00, 0x00, 0x32, 1.62 + 0x00, 0x0c, 0x0a, 0x00, 0x0b, 0x00, 0x07, 0x07, 1.63 + 0x00, 0x08, 0x07, 0x00, 0x09, 0x01, 0x00, 0x06, 1.64 + 0x3c, 0x69, 0x6e, 0x69, 0x74, 0x3e, 0x01, 0x00, 1.65 + 0x03, 0x28, 0x29, 0x56, 0x01, 0x00, 0x04, 0x43, 1.66 + 0x6f, 0x64, 0x65, 0x0c, 0x00, 0x04, 0x00, 0x05, 1.67 + 0x01, 0x00, 0x01, 0x53, 0x01, 0x00, 0x13, 0x6a, 1.68 + 0x61, 0x76, 0x61, 0x2f, 0x6c, 0x61, 0x6e, 0x67, 1.69 + 0x2f, 0x54, 0x68, 0x72, 0x6f, 0x77, 0x61, 0x62, 1.70 + 0x6c, 0x65, 0x01, 0x00, 0x10, 0x6a, 0x61, 0x76, 1.71 + 0x61, 0x2f, 0x6c, 0x61, 0x6e, 0x67, 0x2f, 0x4f, 1.72 + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x07, 0x00, 0x0a, 1.73 + 0x00, 0x21, 0x00, 0x02, 0x00, 0x03, 0x00, 0x00, 1.74 + 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x04, 1.75 + 0x00, 0x05, 0x00, 0x01, 0x00, 0x06, 0x00, 0x00, 1.76 + 0x00, 0x11, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 1.77 + 0x00, 0x05, 0x2a, b(0xb7), 0x00, 0x01, b(0xb1), 0x00, 1.78 + 0x00, 0x00, 0x00, 0x00, 0x00 1.79 + }; 1.80 + 1.81 + public Class findClass(String name) throws ClassNotFoundException { 1.82 + return defineClass(name, S_class, 0, S_class.length); 1.83 + } 1.84 + } 1.85 +}