annotate test/runtime/6925573/SortMethodsTest.java @ 1498:77261afdc5f2

6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout Summary: Add comparison functions for compressed oops to use bubblesort. Reviewed-by: never, coleenp Contributed-by: volker.simonis@gmail.com
author coleenp
date Tue, 04 May 2010 15:12:08 -0400
parents
children c18cbe5936b8
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1498
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
1 /*
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
2 * Copyright 2008-2010 Sun Microsystems, Inc. All Rights Reserved.
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
4 *
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
5 * This code is free software; you can redistribute it and/or modify it
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
6 * under the terms of the GNU General Public License version 2 only, as
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
7 * published by the Free Software Foundation.
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
8 *
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
9 * This code is distributed in the hope that it will be useful, but WITHOUT
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
12 * version 2 for more details (a copy is included in the LICENSE file that
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
13 * accompanied this code).
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
14 *
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
15 * You should have received a copy of the GNU General Public License version
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
16 * 2 along with this work; if not, write to the Free Software Foundation,
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
18 *
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
19 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
20 * CA 95054 USA or visit www.sun.com if you need additional information or
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
21 * have any questions.
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
22 *
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
23 */
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
24
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
25 import java.io.ByteArrayOutputStream;
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
26 import java.io.IOException;
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
27 import java.io.OutputStream;
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
28 import java.io.PrintWriter;
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
29 import java.io.StringWriter;
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
30
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
31 import java.lang.reflect.Method;
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
32 import java.net.URI;
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
33 import java.util.Arrays;
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
34 import java.util.Vector;
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
35
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
36 import javax.tools.Diagnostic;
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
37 import javax.tools.DiagnosticCollector;
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
38 import javax.tools.FileObject;
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
39 import javax.tools.ForwardingJavaFileManager;
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
40 import javax.tools.JavaCompiler;
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
41 import javax.tools.JavaCompiler.CompilationTask;
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
42 import javax.tools.JavaFileManager;
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
43 import javax.tools.JavaFileObject;
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
44 import javax.tools.JavaFileObject.Kind;
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
45 import javax.tools.SimpleJavaFileObject;
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
46 import javax.tools.StandardJavaFileManager;
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
47 import javax.tools.ToolProvider;
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
48
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
49 /*
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
50 * @test SortMethodsTest
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
51 * @bug 6925573
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
52 * @summary verify that class loading does not need quadratic time with regard to the number of class
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
53 methods.
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
54 * @run main SortMethodsTest
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
55 * @author volker.simonis@gmail.com
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
56 */
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
57
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
58 public class SortMethodsTest {
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
59
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
60 static String createClass(String name, int nrOfMethods) {
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
61 StringWriter sw = new StringWriter();
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
62 PrintWriter pw = new PrintWriter(sw);
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
63 pw.println("public class " + name + "{");
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
64 for (int i = 0; i < nrOfMethods; i++) {
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
65 pw.println(" public void m" + i + "() {}");
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
66 }
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
67 pw.println(" public static String sayHello() {");
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
68 pw.println(" return \"Hello from class \" + " + name +
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
69 ".class.getName() + \" with \" + " + name +
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
70 ".class.getDeclaredMethods().length + \" methods\";");
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
71 pw.println(" }");
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
72 pw.println("}");
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
73 pw.close();
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
74 return sw.toString();
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
75 }
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
76
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
77 public static void main(String args[]) {
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
78
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
79 JavaCompiler comp = ToolProvider.getSystemJavaCompiler();
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
80 DiagnosticCollector<JavaFileObject> diags = new DiagnosticCollector<JavaFileObject>();
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
81 final String cName = new String("ManyMethodsClass");
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
82 Vector<Long> results = new Vector<Long>();
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
83
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
84 for (int i = 6; i < 600000; i*=10) {
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
85 String klass = createClass(cName, i);
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
86 JavaMemoryFileObject file = new JavaMemoryFileObject(cName, klass);
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
87 MemoryFileManager mfm = new MemoryFileManager(comp.getStandardFileManager(diags, null, null), file);
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
88 CompilationTask task = comp.getTask(null, mfm, diags, null, null, Arrays.asList(file));
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
89
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
90 if (task.call()) {
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
91 try {
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
92 MemoryClassLoader mcl = new MemoryClassLoader(file);
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
93 long start = System.nanoTime();
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
94 Class<? extends Object> c = Class.forName(cName, true, mcl);
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
95 long end = System.nanoTime();
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
96 results.add(end - start);
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
97 Method m = c.getDeclaredMethod("sayHello", new Class[0]);
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
98 String ret = (String)m.invoke(null, new Object[0]);
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
99 System.out.println(ret + " (loaded and resloved in " + (end - start) + "ns)");
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
100 } catch (Exception e) {
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
101 System.err.println(e);
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
102 }
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
103 }
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
104 else {
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
105 System.out.println(klass);
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
106 System.out.println();
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
107 for (Diagnostic diag : diags.getDiagnostics()) {
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
108 System.out.println(diag.getCode() + "\n" + diag.getKind() + "\n" + diag.getPosition());
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
109 System.out.println(diag.getSource() + "\n" + diag.getMessage(null));
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
110 }
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
111 }
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
112 }
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
113
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
114 long lastRatio = 0;
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
115 for (int i = 2; i < results.size(); i++) {
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
116 long normalized1 = Math.max(results.get(i-1) - results.get(0), 1);
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
117 long normalized2 = Math.max(results.get(i) - results.get(0), 1);
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
118 long ratio = normalized2/normalized1;
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
119 lastRatio = ratio;
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
120 System.out.println("10 x more methods requires " + ratio + " x more time");
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
121 }
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
122 // The following is just vague estimation but seems to work on current x86_64 and sparcv9 machines
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
123 if (lastRatio > 80) {
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
124 throw new RuntimeException("ATTENTION: it seems that class loading needs quadratic time with regard to the number of class methods!!!");
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
125 }
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
126 }
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
127 }
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
128
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
129 class JavaMemoryFileObject extends SimpleJavaFileObject {
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
130
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
131 private final String code;
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
132 private ByteArrayOutputStream byteCode;
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
133
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
134 JavaMemoryFileObject(String name, String code) {
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
135 super(URI.create("string:///" + name.replace('.','/') + Kind.SOURCE.extension), Kind.SOURCE);
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
136 this.code = code;
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
137 }
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
138
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
139 @Override
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
140 public CharSequence getCharContent(boolean ignoreEncodingErrors) {
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
141 return code;
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
142 }
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
143
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
144 @Override
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
145 public OutputStream openOutputStream() {
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
146 byteCode = new ByteArrayOutputStream();
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
147 return byteCode;
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
148 }
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
149
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
150 byte[] getByteCode() {
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
151 return byteCode.toByteArray();
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
152 }
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
153 }
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
154
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
155 class MemoryClassLoader extends ClassLoader {
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
156
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
157 private final JavaMemoryFileObject jfo;
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
158
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
159 public MemoryClassLoader(JavaMemoryFileObject jfo) {
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
160 this.jfo = jfo;
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
161 }
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
162
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
163 public Class findClass(String name) {
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
164 byte[] b = jfo.getByteCode();
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
165 return defineClass(name, b, 0, b.length);
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
166 }
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
167 }
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
168
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
169 class MemoryFileManager extends ForwardingJavaFileManager<JavaFileManager> {
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
170
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
171 private final JavaFileObject jfo;
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
172
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
173 public MemoryFileManager(StandardJavaFileManager jfm, JavaFileObject jfo) {
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
174 super(jfm);
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
175 this.jfo = jfo;
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
176 }
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
177
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
178 @Override
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
179 public FileObject getFileForInput(Location location, String packageName,
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
180 String relativeName) throws IOException {
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
181 return jfo;
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
182 }
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
183
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
184 @Override
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
185 public JavaFileObject getJavaFileForOutput(Location location, String qualifiedName,
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
186 Kind kind, FileObject outputFile) throws IOException {
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
187 return jfo;
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
188 }
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
189
77261afdc5f2 6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
coleenp
parents:
diff changeset
190 }