Mercurial > hg > truffle
annotate test/testlibrary/whitebox/sun/hotspot/WhiteBox.java @ 10241:d17700c82d7d
8006088: Incompatible heap size flags accepted by VM
Summary: Make processing of minimum, initial and maximum heap size more intiutive by removing previous limitations on allowed values, and make error reporting consistent. Further, fix errors in ergonomic heap sizing.
Reviewed-by: johnc, jwilhelm, tamao
author | tschatzl |
---|---|
date | Mon, 06 May 2013 17:19:42 +0200 |
parents | f32b6c267d2e |
children | f54c85acc043 |
rev | line source |
---|---|
5915 | 1 /* |
10092 | 2 * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved. |
5915 | 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 package sun.hotspot; | |
8051
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
7971
diff
changeset
|
26 |
10113
4b2eebe03f93
8011971: WB API doesn't accept j.l.reflect.Constructor
iignatyev
parents:
9085
diff
changeset
|
27 import java.lang.reflect.Executable; |
5915 | 28 import java.security.BasicPermission; |
5978
51612f0c0a79
7148488: Whitebox tests for the Diagnostic Framework Parser
nloodin
parents:
5915
diff
changeset
|
29 import sun.hotspot.parser.DiagnosticCommand; |
5915 | 30 |
31 public class WhiteBox { | |
32 | |
33 @SuppressWarnings("serial") | |
34 public static class WhiteBoxPermission extends BasicPermission { | |
35 public WhiteBoxPermission(String s) { | |
36 super(s); | |
37 } | |
38 } | |
39 | |
40 private WhiteBox() {} | |
41 private static final WhiteBox instance = new WhiteBox(); | |
42 private static native void registerNatives(); | |
43 | |
44 /** | |
45 * Returns the singleton WhiteBox instance. | |
46 * | |
47 * The returned WhiteBox object should be carefully guarded | |
48 * by the caller, since it can be used to read and write data | |
49 * at arbitrary memory addresses. It must never be passed to | |
50 * untrusted code. | |
51 */ | |
52 public synchronized static WhiteBox getWhiteBox() { | |
53 SecurityManager sm = System.getSecurityManager(); | |
54 if (sm != null) { | |
55 sm.checkPermission(new WhiteBoxPermission("getInstance")); | |
56 } | |
57 return instance; | |
58 } | |
59 | |
60 static { | |
61 registerNatives(); | |
62 } | |
63 | |
10241
d17700c82d7d
8006088: Incompatible heap size flags accepted by VM
tschatzl
parents:
10157
diff
changeset
|
64 // Arguments |
d17700c82d7d
8006088: Incompatible heap size flags accepted by VM
tschatzl
parents:
10157
diff
changeset
|
65 public native void printHeapSizes(); |
d17700c82d7d
8006088: Incompatible heap size flags accepted by VM
tschatzl
parents:
10157
diff
changeset
|
66 |
5915 | 67 // Memory |
68 public native long getObjectAddress(Object o); | |
69 public native int getHeapOopSize(); | |
70 | |
6725
da91efe96a93
6964458: Reimplement class meta-data storage to use native memory
coleenp
parents:
5978
diff
changeset
|
71 // Runtime |
da91efe96a93
6964458: Reimplement class meta-data storage to use native memory
coleenp
parents:
5978
diff
changeset
|
72 // Make sure class name is in the correct format |
da91efe96a93
6964458: Reimplement class meta-data storage to use native memory
coleenp
parents:
5978
diff
changeset
|
73 public boolean isClassAlive(String name) { |
da91efe96a93
6964458: Reimplement class meta-data storage to use native memory
coleenp
parents:
5978
diff
changeset
|
74 return isClassAlive0(name.replace('.', '/')); |
da91efe96a93
6964458: Reimplement class meta-data storage to use native memory
coleenp
parents:
5978
diff
changeset
|
75 } |
da91efe96a93
6964458: Reimplement class meta-data storage to use native memory
coleenp
parents:
5978
diff
changeset
|
76 private native boolean isClassAlive0(String name); |
da91efe96a93
6964458: Reimplement class meta-data storage to use native memory
coleenp
parents:
5978
diff
changeset
|
77 |
5915 | 78 // G1 |
79 public native boolean g1InConcurrentMark(); | |
80 public native boolean g1IsHumongous(Object o); | |
81 public native long g1NumFreeRegions(); | |
82 public native int g1RegionSize(); | |
5978
51612f0c0a79
7148488: Whitebox tests for the Diagnostic Framework Parser
nloodin
parents:
5915
diff
changeset
|
83 public native Object[] parseCommandLine(String commandline, DiagnosticCommand[] args); |
7971
4102b59539ce
8005012: Add WB APIs to better support NMT testing
ctornqvi
parents:
6725
diff
changeset
|
84 |
4102b59539ce
8005012: Add WB APIs to better support NMT testing
ctornqvi
parents:
6725
diff
changeset
|
85 // NMT |
9056
3b890cd4da64
8009125: Add NMT tests for Virtual Memory operations
ctornqvi
parents:
8850
diff
changeset
|
86 public native long NMTMalloc(long size); |
3b890cd4da64
8009125: Add NMT tests for Virtual Memory operations
ctornqvi
parents:
8850
diff
changeset
|
87 public native void NMTFree(long mem); |
3b890cd4da64
8009125: Add NMT tests for Virtual Memory operations
ctornqvi
parents:
8850
diff
changeset
|
88 public native long NMTReserveMemory(long size); |
3b890cd4da64
8009125: Add NMT tests for Virtual Memory operations
ctornqvi
parents:
8850
diff
changeset
|
89 public native void NMTCommitMemory(long addr, long size); |
3b890cd4da64
8009125: Add NMT tests for Virtual Memory operations
ctornqvi
parents:
8850
diff
changeset
|
90 public native void NMTUncommitMemory(long addr, long size); |
3b890cd4da64
8009125: Add NMT tests for Virtual Memory operations
ctornqvi
parents:
8850
diff
changeset
|
91 public native void NMTReleaseMemory(long addr, long size); |
7971
4102b59539ce
8005012: Add WB APIs to better support NMT testing
ctornqvi
parents:
6725
diff
changeset
|
92 public native boolean NMTWaitForDataMerge(); |
8051
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
7971
diff
changeset
|
93 |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
7971
diff
changeset
|
94 // Compiler |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
7971
diff
changeset
|
95 public native void deoptimizeAll(); |
10113
4b2eebe03f93
8011971: WB API doesn't accept j.l.reflect.Constructor
iignatyev
parents:
9085
diff
changeset
|
96 public native boolean isMethodCompiled(Executable method); |
4b2eebe03f93
8011971: WB API doesn't accept j.l.reflect.Constructor
iignatyev
parents:
9085
diff
changeset
|
97 public boolean isMethodCompilable(Executable method) { |
9080
b84fd7d73702
8007288: Additional WB API for compiler's testing
iignatyev
parents:
8850
diff
changeset
|
98 return isMethodCompilable(method, -1 /*any*/); |
b84fd7d73702
8007288: Additional WB API for compiler's testing
iignatyev
parents:
8850
diff
changeset
|
99 } |
10113
4b2eebe03f93
8011971: WB API doesn't accept j.l.reflect.Constructor
iignatyev
parents:
9085
diff
changeset
|
100 public native boolean isMethodCompilable(Executable method, int compLevel); |
4b2eebe03f93
8011971: WB API doesn't accept j.l.reflect.Constructor
iignatyev
parents:
9085
diff
changeset
|
101 public native boolean isMethodQueuedForCompilation(Executable method); |
4b2eebe03f93
8011971: WB API doesn't accept j.l.reflect.Constructor
iignatyev
parents:
9085
diff
changeset
|
102 public native int deoptimizeMethod(Executable method); |
4b2eebe03f93
8011971: WB API doesn't accept j.l.reflect.Constructor
iignatyev
parents:
9085
diff
changeset
|
103 public void makeMethodNotCompilable(Executable method) { |
4b2eebe03f93
8011971: WB API doesn't accept j.l.reflect.Constructor
iignatyev
parents:
9085
diff
changeset
|
104 makeMethodNotCompilable(method, -1 /*any*/); |
4b2eebe03f93
8011971: WB API doesn't accept j.l.reflect.Constructor
iignatyev
parents:
9085
diff
changeset
|
105 } |
4b2eebe03f93
8011971: WB API doesn't accept j.l.reflect.Constructor
iignatyev
parents:
9085
diff
changeset
|
106 public native void makeMethodNotCompilable(Executable method, int compLevel); |
4b2eebe03f93
8011971: WB API doesn't accept j.l.reflect.Constructor
iignatyev
parents:
9085
diff
changeset
|
107 public native int getMethodCompilationLevel(Executable method); |
4b2eebe03f93
8011971: WB API doesn't accept j.l.reflect.Constructor
iignatyev
parents:
9085
diff
changeset
|
108 public native boolean testSetDontInlineMethod(Executable method, boolean value); |
8051
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
7971
diff
changeset
|
109 public native int getCompileQueuesSize(); |
10113
4b2eebe03f93
8011971: WB API doesn't accept j.l.reflect.Constructor
iignatyev
parents:
9085
diff
changeset
|
110 public native boolean testSetForceInlineMethod(Executable method, boolean value); |
4b2eebe03f93
8011971: WB API doesn't accept j.l.reflect.Constructor
iignatyev
parents:
9085
diff
changeset
|
111 public native boolean enqueueMethodForCompilation(Executable method, int compLevel); |
4b2eebe03f93
8011971: WB API doesn't accept j.l.reflect.Constructor
iignatyev
parents:
9085
diff
changeset
|
112 public native void clearMethodState(Executable method); |
8850 | 113 |
10113
4b2eebe03f93
8011971: WB API doesn't accept j.l.reflect.Constructor
iignatyev
parents:
9085
diff
changeset
|
114 // Intered strings |
8850 | 115 public native boolean isInStringTable(String str); |
116 | |
10157 | 117 // Memory |
118 public native long reserveMemory(long size); | |
119 | |
8850 | 120 // force Full GC |
121 public native void fullGC(); | |
5915 | 122 } |