Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/test/jdk/com/sun/jdi/AnyDebuggeeTest.java
41149 views
1
/*
2
* Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
3
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4
*
5
* This code is free software; you can redistribute it and/or modify it
6
* under the terms of the GNU General Public License version 2 only, as
7
* published by the Free Software Foundation.
8
*
9
* This code is distributed in the hope that it will be useful, but WITHOUT
10
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12
* version 2 for more details (a copy is included in the LICENSE file that
13
* accompanied this code).
14
*
15
* You should have received a copy of the GNU General Public License version
16
* 2 along with this work; if not, write to the Free Software Foundation,
17
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18
*
19
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20
* or visit www.oracle.com if you need additional information or have any
21
* questions.
22
*/
23
24
/**
25
*
26
* @bug 6224700
27
* @summary ReferenceType.nestedTypes() is too slow
28
* @author jjh
29
*
30
* @run build TestScaffold VMConnection TargetListener TargetAdapter
31
* @run compile -g AnyDebuggeeTest.java
32
* @run driver AnyDebuggeeeTest
33
*
34
* This test is intended to be run manually to investigate behaviors;
35
* it is not an actual test of any specific functionality, it just
36
* allows you to run the debugger part of this test on any debuggee.
37
* As set up, it prints the time to find all nested types and all
38
* subclasses in the debuggee, and so can be used to verify the
39
* fix for 6224700.
40
*
41
* For other investigations, edit this test to do whatever you want.
42
* To run this test do this:
43
* runregress -no AnyDebuggeeTest <cmd line options>
44
* where <cmd line options> are the options to be used to
45
* launch the debuggee, with the classname prefixed with @@.
46
* For example, this would run java2d demo as the debuggee:
47
* runregress -no AnyDebuggeeTest -classpath $jdkDir/demo/jfc/Java2D/Java2Demo.jar \
48
* -client @@java2d.Java2Demo'
49
* If <cmd line options> is not specified, then the AnyDebuggeeTarg class below
50
* is run as the debuggee.
51
*/
52
import com.sun.jdi.*;
53
import com.sun.jdi.event.*;
54
import com.sun.jdi.request.*;
55
import javax.swing.*;
56
57
import java.util.*;
58
59
class AnyDebuggeeTarg {
60
public static void main(String[] args){
61
System.out.println("Howdy!");
62
try {
63
javax.swing.UIManager.setLookAndFeel( javax.swing.UIManager.getSystemLookAndFeelClassName());
64
} catch( Throwable exc) {
65
}
66
JFrame f = new JFrame("JFrame");
67
try {
68
Thread.sleep(60000);
69
} catch (InterruptedException ee) {
70
}
71
72
System.out.println("Goodbye from NestedClassesTarg!");
73
}
74
}
75
76
/********** test program **********/
77
78
public class AnyDebuggeeTest extends TestScaffold {
79
static String targetName = "AnyDebuggeeTarg";
80
ReferenceType targetClass;
81
ThreadReference mainThread;
82
83
AnyDebuggeeTest(String args[]) {
84
super(args);
85
}
86
87
public static void main(String[] args) throws Exception {
88
/*
89
* If args contains @@xxxx, then that is the
90
* name of the class we are to run.
91
*/
92
for (int ii = 0; ii < args.length; ii ++) {
93
if (args[ii].startsWith("@@")) {
94
targetName = args[ii] = args[ii].substring(2);
95
}
96
}
97
new AnyDebuggeeTest(args).startTests();
98
}
99
100
101
protected void runTests() throws Exception {
102
/*
103
* Get to the top of main()
104
* to determine targetClass and mainThread
105
*/
106
BreakpointEvent bpe;
107
bpe = startToMain(targetName);
108
109
targetClass = bpe.location().declaringType();
110
mainThread = bpe.thread();
111
112
// Let debuggee run for awhile to get classes loaded
113
resumeForMsecs(20000);
114
115
List<ReferenceType> allClasses = vm().allClasses();
116
System.out.println( allClasses.size() + " classes");
117
118
119
int size = 0;
120
long start = System.currentTimeMillis();
121
for(ReferenceType rt: allClasses) {
122
if (rt instanceof ClassType) {
123
List<ReferenceType> nested = rt.nestedTypes();
124
int sz = nested.size();
125
size += sz;
126
}
127
}
128
long end = System.currentTimeMillis();
129
System.out.println(size + " nested types took " + (end - start) + " ms");
130
131
size = 0;
132
start = System.currentTimeMillis();
133
for(ReferenceType rt: allClasses) {
134
if (rt instanceof ClassType) {
135
List<ClassType> subs = ((ClassType)rt).subclasses();
136
int sz = subs.size();
137
size += sz;
138
}
139
}
140
end = System.currentTimeMillis();
141
System.out.println(size + " subclasses took " + (end - start) + " ms");
142
143
/*
144
* deal with results of test
145
* if anything has called failure("foo") testFailed will be true
146
*/
147
if (!testFailed) {
148
println("AnyDebuggeeTest: passed");
149
} else {
150
throw new Exception("AnyDebuggeeTest: failed");
151
}
152
}
153
}
154
155