--- old/test/hotspot/jtreg/runtime/appcds/test-classes/Util.java 2019-07-24 08:28:30.849466856 -0400
+++ /dev/null 2019-07-22 09:37:15.068007775 -0400
@@ -1,156 +0,0 @@
-/*
- * Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-import java.io.*;
-import java.lang.reflect.*;
-import java.util.jar.*;
-
-public class Util {
- /**
- * Invoke the loader.defineClass() class method to define the class stored in clsFile,
- * with the following modification:
- *
- * - All ASCII strings in the class file bytes that matches fromString will be replaced with toString.
- * NOTE: the two strings must be the exact same length.
- *
- */
- public static Class defineModifiedClass(ClassLoader loader, File clsFile, String fromString, String toString)
- throws FileNotFoundException, IOException, NoSuchMethodException, IllegalAccessException,
- InvocationTargetException
- {
- try (DataInputStream dis = new DataInputStream(new FileInputStream(clsFile))) {
- byte[] buff = new byte[(int)clsFile.length()];
- dis.readFully(buff);
- replace(buff, fromString, toString);
-
- System.out.println("Loading from: " + clsFile + " (" + buff.length + " bytes)");
-
- Method defineClass = ClassLoader.class.getDeclaredMethod("defineClass",
- buff.getClass(), int.class, int.class);
- defineClass.setAccessible(true);
-
- // We directly call into ClassLoader.defineClass() to define the "Super" class. Also,
- // rewrite its classfile so that it returns ___yyy___ instead of ___xxx___. Changing the
- // classfile will guarantee that this class will NOT be loaded from the CDS archive.
- Class cls = (Class)defineClass.invoke(loader, buff, new Integer(0), new Integer(buff.length));
- System.out.println("Loaded : " + cls);
-
- return cls;
- }
- }
-
- /**
- * @return the number of occurrences of the from
string that
- * have been replaced.
- */
- public static int replace(byte buff[], String from, String to) {
- if (to.length() != from.length()) {
- throw new RuntimeException("bad strings");
- }
- byte f[] = asciibytes(from);
- byte t[] = asciibytes(to);
- byte f0 = f[0];
-
- int numReplaced = 0;
- int max = buff.length - f.length;
- for (int i=0; i
+ * All ASCII strings in the class file bytes that matches fromString will be replaced with toString.
+ * NOTE: the two strings must be the exact same length.
+ *
+ */
+ public static Class defineModifiedClass(ClassLoader loader, File clsFile, String fromString, String toString)
+ throws FileNotFoundException, IOException, NoSuchMethodException, IllegalAccessException,
+ InvocationTargetException
+ {
+ try (DataInputStream dis = new DataInputStream(new FileInputStream(clsFile))) {
+ byte[] buff = new byte[(int)clsFile.length()];
+ dis.readFully(buff);
+ replace(buff, fromString, toString);
+
+ System.out.println("Loading from: " + clsFile + " (" + buff.length + " bytes)");
+
+ Method defineClass = ClassLoader.class.getDeclaredMethod("defineClass",
+ buff.getClass(), int.class, int.class);
+ defineClass.setAccessible(true);
+
+ // We directly call into ClassLoader.defineClass() to define the "Super" class. Also,
+ // rewrite its classfile so that it returns ___yyy___ instead of ___xxx___. Changing the
+ // classfile will guarantee that this class will NOT be loaded from the CDS archive.
+ Class cls = (Class)defineClass.invoke(loader, buff, new Integer(0), new Integer(buff.length));
+ System.out.println("Loaded : " + cls);
+
+ return cls;
+ }
+ }
+
+ /**
+ * @return the number of occurrences of the from
string that
+ * have been replaced.
+ */
+ public static int replace(byte buff[], String from, String to) {
+ if (to.length() != from.length()) {
+ throw new RuntimeException("bad strings");
+ }
+ byte f[] = asciibytes(from);
+ byte t[] = asciibytes(to);
+ byte f0 = f[0];
+
+ int numReplaced = 0;
+ int max = buff.length - f.length;
+ for (int i=0; i