Mercurial > hg > truffle
annotate test/testlibrary/whitebox/sun/hotspot/WhiteBox.java @ 12233:40136aa2cdb1
8010722: assert: failed: heap size is too big for compressed oops
Summary: Use conservative assumptions of required alignment for the various garbage collector components into account when determining the maximum heap size that supports compressed oops. Using this conservative value avoids several circular dependencies in the calculation.
Reviewed-by: stefank, dholmes
author | tschatzl |
---|---|
date | Wed, 11 Sep 2013 16:25:02 +0200 |
parents | 5fd8e2fbafd4 |
children | 9d8b29a0548c |
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 | |
12233
40136aa2cdb1
8010722: assert: failed: heap size is too big for compressed oops
tschatzl
parents:
12118
diff
changeset
|
64 // Get the maximum heap size supporting COOPs |
40136aa2cdb1
8010722: assert: failed: heap size is too big for compressed oops
tschatzl
parents:
12118
diff
changeset
|
65 public native long getCompressedOopsMaxHeapSize(); |
10241
d17700c82d7d
8006088: Incompatible heap size flags accepted by VM
tschatzl
parents:
10157
diff
changeset
|
66 // Arguments |
d17700c82d7d
8006088: Incompatible heap size flags accepted by VM
tschatzl
parents:
10157
diff
changeset
|
67 public native void printHeapSizes(); |
d17700c82d7d
8006088: Incompatible heap size flags accepted by VM
tschatzl
parents:
10157
diff
changeset
|
68 |
5915 | 69 // Memory |
70 public native long getObjectAddress(Object o); | |
71 public native int getHeapOopSize(); | |
72 | |
6725
da91efe96a93
6964458: Reimplement class meta-data storage to use native memory
coleenp
parents:
5978
diff
changeset
|
73 // Runtime |
da91efe96a93
6964458: Reimplement class meta-data storage to use native memory
coleenp
parents:
5978
diff
changeset
|
74 // 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
|
75 public boolean isClassAlive(String name) { |
da91efe96a93
6964458: Reimplement class meta-data storage to use native memory
coleenp
parents:
5978
diff
changeset
|
76 return isClassAlive0(name.replace('.', '/')); |
da91efe96a93
6964458: Reimplement class meta-data storage to use native memory
coleenp
parents:
5978
diff
changeset
|
77 } |
da91efe96a93
6964458: Reimplement class meta-data storage to use native memory
coleenp
parents:
5978
diff
changeset
|
78 private native boolean isClassAlive0(String name); |
da91efe96a93
6964458: Reimplement class meta-data storage to use native memory
coleenp
parents:
5978
diff
changeset
|
79 |
5915 | 80 // G1 |
81 public native boolean g1InConcurrentMark(); | |
82 public native boolean g1IsHumongous(Object o); | |
83 public native long g1NumFreeRegions(); | |
84 public native int g1RegionSize(); | |
5978
51612f0c0a79
7148488: Whitebox tests for the Diagnostic Framework Parser
nloodin
parents:
5915
diff
changeset
|
85 public native Object[] parseCommandLine(String commandline, DiagnosticCommand[] args); |
7971
4102b59539ce
8005012: Add WB APIs to better support NMT testing
ctornqvi
parents:
6725
diff
changeset
|
86 |
4102b59539ce
8005012: Add WB APIs to better support NMT testing
ctornqvi
parents:
6725
diff
changeset
|
87 // NMT |
9056
3b890cd4da64
8009125: Add NMT tests for Virtual Memory operations
ctornqvi
parents:
8850
diff
changeset
|
88 public native long NMTMalloc(long size); |
3b890cd4da64
8009125: Add NMT tests for Virtual Memory operations
ctornqvi
parents:
8850
diff
changeset
|
89 public native void NMTFree(long mem); |
3b890cd4da64
8009125: Add NMT tests for Virtual Memory operations
ctornqvi
parents:
8850
diff
changeset
|
90 public native long NMTReserveMemory(long size); |
3b890cd4da64
8009125: Add NMT tests for Virtual Memory operations
ctornqvi
parents:
8850
diff
changeset
|
91 public native void NMTCommitMemory(long addr, long size); |
3b890cd4da64
8009125: Add NMT tests for Virtual Memory operations
ctornqvi
parents:
8850
diff
changeset
|
92 public native void NMTUncommitMemory(long addr, long size); |
3b890cd4da64
8009125: Add NMT tests for Virtual Memory operations
ctornqvi
parents:
8850
diff
changeset
|
93 public native void NMTReleaseMemory(long addr, long size); |
7971
4102b59539ce
8005012: Add WB APIs to better support NMT testing
ctornqvi
parents:
6725
diff
changeset
|
94 public native boolean NMTWaitForDataMerge(); |
12118
5fd8e2fbafd4
8020829: JT_HS: 2 runtime NMT tests fail on platforms if NMT detail is not supported
cjplummer
parents:
12073
diff
changeset
|
95 public native boolean NMTIsDetailSupported(); |
8051
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
7971
diff
changeset
|
96 |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
7971
diff
changeset
|
97 // Compiler |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
7971
diff
changeset
|
98 public native void deoptimizeAll(); |
12073 | 99 public boolean isMethodCompiled(Executable method) { |
100 return isMethodCompiled(method, false /*not osr*/); | |
9080
b84fd7d73702
8007288: Additional WB API for compiler's testing
iignatyev
parents:
8850
diff
changeset
|
101 } |
12073 | 102 public native boolean isMethodCompiled(Executable method, boolean isOsr); |
103 public boolean isMethodCompilable(Executable method) { | |
104 return isMethodCompilable(method, -1 /*any*/); | |
105 } | |
106 public boolean isMethodCompilable(Executable method, int compLevel) { | |
107 return isMethodCompilable(method, compLevel, false /*not osr*/); | |
108 } | |
109 public native boolean isMethodCompilable(Executable method, int compLevel, boolean isOsr); | |
10113
4b2eebe03f93
8011971: WB API doesn't accept j.l.reflect.Constructor
iignatyev
parents:
9085
diff
changeset
|
110 public native boolean isMethodQueuedForCompilation(Executable method); |
12073 | 111 public int deoptimizeMethod(Executable method) { |
112 return deoptimizeMethod(method, false /*not osr*/); | |
113 } | |
114 public native int deoptimizeMethod(Executable method, boolean isOsr); | |
115 public void makeMethodNotCompilable(Executable method) { | |
116 makeMethodNotCompilable(method, -1 /*any*/); | |
117 } | |
118 public void makeMethodNotCompilable(Executable method, int compLevel) { | |
119 makeMethodNotCompilable(method, compLevel, false /*not osr*/); | |
120 } | |
121 public native void makeMethodNotCompilable(Executable method, int compLevel, boolean isOsr); | |
122 public int getMethodCompilationLevel(Executable method) { | |
123 return getMethodCompilationLevel(method, false /*not ost*/); | |
10113
4b2eebe03f93
8011971: WB API doesn't accept j.l.reflect.Constructor
iignatyev
parents:
9085
diff
changeset
|
124 } |
12073 | 125 public native int getMethodCompilationLevel(Executable method, boolean isOsr); |
10113
4b2eebe03f93
8011971: WB API doesn't accept j.l.reflect.Constructor
iignatyev
parents:
9085
diff
changeset
|
126 public native boolean testSetDontInlineMethod(Executable method, boolean value); |
12073 | 127 public int getCompileQueuesSize() { |
128 return getCompileQueueSize(-1 /*any*/); | |
129 } | |
130 public native int getCompileQueueSize(int compLevel); | |
10113
4b2eebe03f93
8011971: WB API doesn't accept j.l.reflect.Constructor
iignatyev
parents:
9085
diff
changeset
|
131 public native boolean testSetForceInlineMethod(Executable method, boolean value); |
12073 | 132 public boolean enqueueMethodForCompilation(Executable method, int compLevel) { |
133 return enqueueMethodForCompilation(method, compLevel, -1 /*InvocationEntryBci*/); | |
134 } | |
135 public native boolean enqueueMethodForCompilation(Executable method, int compLevel, int entry_bci); | |
10113
4b2eebe03f93
8011971: WB API doesn't accept j.l.reflect.Constructor
iignatyev
parents:
9085
diff
changeset
|
136 public native void clearMethodState(Executable method); |
12073 | 137 public native int getMethodEntryBci(Executable method); |
8850 | 138 |
10113
4b2eebe03f93
8011971: WB API doesn't accept j.l.reflect.Constructor
iignatyev
parents:
9085
diff
changeset
|
139 // Intered strings |
8850 | 140 public native boolean isInStringTable(String str); |
141 | |
10157 | 142 // Memory |
10341
f54c85acc043
8013726: runtime/memory/ReserveMemory.java fails due to 'assert(bytes % os::vm_allocation_granularity() == 0) failed: reserve block size'
mikael
parents:
10241
diff
changeset
|
143 public native void readReservedMemory(); |
10157 | 144 |
8850 | 145 // force Full GC |
146 public native void fullGC(); | |
5915 | 147 } |