annotate test/testlibrary/whitebox/sun/hotspot/WhiteBox.java @ 20543:e7d0505c8a30

8059758: Footprint regressions with JDK-8038423 Summary: Changes in JDK-8038423 always initialize (zero out) virtual memory used for auxiliary data structures. This causes a footprint regression for G1 in startup benchmarks. This is because they do not touch that memory at all, so the operating system does not actually commit these pages. The fix is to, if the initialization value of the data structures matches the default value of just committed memory (=0), do not do anything. Reviewed-by: jwilhelm, brutisso
author tschatzl
date Fri, 10 Oct 2014 15:51:58 +0200
parents b509b7ff561c
children 417e3b8d04c5
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5915
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
1 /*
17817
4abb719c5620 8038240: new WB API to get nmethod
iignatyev
parents: 17778
diff changeset
2 * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
5915
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
4 *
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
5 * This code is free software; you can redistribute it and/or modify it
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
6 * under the terms of the GNU General Public License version 2 only, as
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
7 * published by the Free Software Foundation.
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
8 *
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
9 * This code is distributed in the hope that it will be useful, but WITHOUT
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
12 * version 2 for more details (a copy is included in the LICENSE file that
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
13 * accompanied this code).
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
14 *
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
15 * You should have received a copy of the GNU General Public License version
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
16 * 2 along with this work; if not, write to the Free Software Foundation,
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
18 *
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
20 * or visit www.oracle.com if you need additional information or have any
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
21 * questions.
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
22 *
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
23 */
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
24
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
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;
20362
f433f37645e5 8054938: [TESTBUG] Wrong WhiteBox.java was pushed by JDK-8044140
zgu
parents: 20361
diff changeset
28 import java.util.Arrays;
f433f37645e5 8054938: [TESTBUG] Wrong WhiteBox.java was pushed by JDK-8044140
zgu
parents: 20361
diff changeset
29 import java.util.List;
f433f37645e5 8054938: [TESTBUG] Wrong WhiteBox.java was pushed by JDK-8044140
zgu
parents: 20361
diff changeset
30 import java.util.function.Function;
f433f37645e5 8054938: [TESTBUG] Wrong WhiteBox.java was pushed by JDK-8044140
zgu
parents: 20361
diff changeset
31 import java.util.stream.Stream;
5915
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
32 import java.security.BasicPermission;
20451
e2452c3ff7fb 8057752: WhiteBox extension support for testing
sjohanss
parents: 20362
diff changeset
33
5978
51612f0c0a79 7148488: Whitebox tests for the Diagnostic Framework Parser
nloodin
parents: 5915
diff changeset
34 import sun.hotspot.parser.DiagnosticCommand;
5915
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
35
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
36 public class WhiteBox {
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
37
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
38 @SuppressWarnings("serial")
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
39 public static class WhiteBoxPermission extends BasicPermission {
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
40 public WhiteBoxPermission(String s) {
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
41 super(s);
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
42 }
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
43 }
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
44
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
45 private WhiteBox() {}
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
46 private static final WhiteBox instance = new WhiteBox();
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
47 private static native void registerNatives();
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
48
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
49 /**
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
50 * Returns the singleton WhiteBox instance.
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
51 *
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
52 * The returned WhiteBox object should be carefully guarded
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
53 * by the caller, since it can be used to read and write data
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
54 * at arbitrary memory addresses. It must never be passed to
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
55 * untrusted code.
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
56 */
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
57 public synchronized static WhiteBox getWhiteBox() {
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
58 SecurityManager sm = System.getSecurityManager();
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
59 if (sm != null) {
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
60 sm.checkPermission(new WhiteBoxPermission("getInstance"));
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
61 }
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
62 return instance;
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
63 }
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
64
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
65 static {
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
66 registerNatives();
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
67 }
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
68
12233
40136aa2cdb1 8010722: assert: failed: heap size is too big for compressed oops
tschatzl
parents: 12118
diff changeset
69 // Get the maximum heap size supporting COOPs
40136aa2cdb1 8010722: assert: failed: heap size is too big for compressed oops
tschatzl
parents: 12118
diff changeset
70 public native long getCompressedOopsMaxHeapSize();
10241
d17700c82d7d 8006088: Incompatible heap size flags accepted by VM
tschatzl
parents: 10157
diff changeset
71 // Arguments
d17700c82d7d 8006088: Incompatible heap size flags accepted by VM
tschatzl
parents: 10157
diff changeset
72 public native void printHeapSizes();
d17700c82d7d 8006088: Incompatible heap size flags accepted by VM
tschatzl
parents: 10157
diff changeset
73
5915
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
74 // Memory
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
75 public native long getObjectAddress(Object o);
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
76 public native int getHeapOopSize();
20357
4bfc44ba0d19 8055098: WB API should be extended to provide information about size and age of object.
tschatzl
parents: 20278
diff changeset
77 public native boolean isObjectInOldGen(Object o);
4bfc44ba0d19 8055098: WB API should be extended to provide information about size and age of object.
tschatzl
parents: 20278
diff changeset
78 public native long getObjectSize(Object o);
5915
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
79
6725
da91efe96a93 6964458: Reimplement class meta-data storage to use native memory
coleenp
parents: 5978
diff changeset
80 // Runtime
da91efe96a93 6964458: Reimplement class meta-data storage to use native memory
coleenp
parents: 5978
diff changeset
81 // 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
82 public boolean isClassAlive(String name) {
da91efe96a93 6964458: Reimplement class meta-data storage to use native memory
coleenp
parents: 5978
diff changeset
83 return isClassAlive0(name.replace('.', '/'));
da91efe96a93 6964458: Reimplement class meta-data storage to use native memory
coleenp
parents: 5978
diff changeset
84 }
da91efe96a93 6964458: Reimplement class meta-data storage to use native memory
coleenp
parents: 5978
diff changeset
85 private native boolean isClassAlive0(String name);
da91efe96a93 6964458: Reimplement class meta-data storage to use native memory
coleenp
parents: 5978
diff changeset
86
5915
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
87 // G1
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
88 public native boolean g1InConcurrentMark();
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
89 public native boolean g1IsHumongous(Object o);
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
90 public native long g1NumFreeRegions();
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
91 public native int g1RegionSize();
5978
51612f0c0a79 7148488: Whitebox tests for the Diagnostic Framework Parser
nloodin
parents: 5915
diff changeset
92 public native Object[] parseCommandLine(String commandline, DiagnosticCommand[] args);
7971
4102b59539ce 8005012: Add WB APIs to better support NMT testing
ctornqvi
parents: 6725
diff changeset
93
4102b59539ce 8005012: Add WB APIs to better support NMT testing
ctornqvi
parents: 6725
diff changeset
94 // NMT
9056
3b890cd4da64 8009125: Add NMT tests for Virtual Memory operations
ctornqvi
parents: 8850
diff changeset
95 public native long NMTMalloc(long size);
3b890cd4da64 8009125: Add NMT tests for Virtual Memory operations
ctornqvi
parents: 8850
diff changeset
96 public native void NMTFree(long mem);
3b890cd4da64 8009125: Add NMT tests for Virtual Memory operations
ctornqvi
parents: 8850
diff changeset
97 public native long NMTReserveMemory(long size);
3b890cd4da64 8009125: Add NMT tests for Virtual Memory operations
ctornqvi
parents: 8850
diff changeset
98 public native void NMTCommitMemory(long addr, long size);
3b890cd4da64 8009125: Add NMT tests for Virtual Memory operations
ctornqvi
parents: 8850
diff changeset
99 public native void NMTUncommitMemory(long addr, long size);
3b890cd4da64 8009125: Add NMT tests for Virtual Memory operations
ctornqvi
parents: 8850
diff changeset
100 public native void NMTReleaseMemory(long addr, long size);
20360
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 20357
diff changeset
101 public native void NMTOverflowHashBucket(long num);
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 20357
diff changeset
102 public native long NMTMallocWithPseudoStack(long size, int index);
12118
5fd8e2fbafd4 8020829: JT_HS: 2 runtime NMT tests fail on platforms if NMT detail is not supported
cjplummer
parents: 12073
diff changeset
103 public native boolean NMTIsDetailSupported();
8051
12e01444ca2d 8006683: Add WhiteBox API to testing of compiler
iignatyev
parents: 7971
diff changeset
104
12e01444ca2d 8006683: Add WhiteBox API to testing of compiler
iignatyev
parents: 7971
diff changeset
105 // Compiler
12e01444ca2d 8006683: Add WhiteBox API to testing of compiler
iignatyev
parents: 7971
diff changeset
106 public native void deoptimizeAll();
12073
f99558245e5c 8022832: Add WB APIs for OSR compilation
iignatyev
parents: 10341
diff changeset
107 public boolean isMethodCompiled(Executable method) {
f99558245e5c 8022832: Add WB APIs for OSR compilation
iignatyev
parents: 10341
diff changeset
108 return isMethodCompiled(method, false /*not osr*/);
9080
b84fd7d73702 8007288: Additional WB API for compiler's testing
iignatyev
parents: 8850
diff changeset
109 }
12073
f99558245e5c 8022832: Add WB APIs for OSR compilation
iignatyev
parents: 10341
diff changeset
110 public native boolean isMethodCompiled(Executable method, boolean isOsr);
f99558245e5c 8022832: Add WB APIs for OSR compilation
iignatyev
parents: 10341
diff changeset
111 public boolean isMethodCompilable(Executable method) {
f99558245e5c 8022832: Add WB APIs for OSR compilation
iignatyev
parents: 10341
diff changeset
112 return isMethodCompilable(method, -1 /*any*/);
f99558245e5c 8022832: Add WB APIs for OSR compilation
iignatyev
parents: 10341
diff changeset
113 }
f99558245e5c 8022832: Add WB APIs for OSR compilation
iignatyev
parents: 10341
diff changeset
114 public boolean isMethodCompilable(Executable method, int compLevel) {
f99558245e5c 8022832: Add WB APIs for OSR compilation
iignatyev
parents: 10341
diff changeset
115 return isMethodCompilable(method, compLevel, false /*not osr*/);
f99558245e5c 8022832: Add WB APIs for OSR compilation
iignatyev
parents: 10341
diff changeset
116 }
f99558245e5c 8022832: Add WB APIs for OSR compilation
iignatyev
parents: 10341
diff changeset
117 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
118 public native boolean isMethodQueuedForCompilation(Executable method);
12073
f99558245e5c 8022832: Add WB APIs for OSR compilation
iignatyev
parents: 10341
diff changeset
119 public int deoptimizeMethod(Executable method) {
f99558245e5c 8022832: Add WB APIs for OSR compilation
iignatyev
parents: 10341
diff changeset
120 return deoptimizeMethod(method, false /*not osr*/);
f99558245e5c 8022832: Add WB APIs for OSR compilation
iignatyev
parents: 10341
diff changeset
121 }
f99558245e5c 8022832: Add WB APIs for OSR compilation
iignatyev
parents: 10341
diff changeset
122 public native int deoptimizeMethod(Executable method, boolean isOsr);
f99558245e5c 8022832: Add WB APIs for OSR compilation
iignatyev
parents: 10341
diff changeset
123 public void makeMethodNotCompilable(Executable method) {
f99558245e5c 8022832: Add WB APIs for OSR compilation
iignatyev
parents: 10341
diff changeset
124 makeMethodNotCompilable(method, -1 /*any*/);
f99558245e5c 8022832: Add WB APIs for OSR compilation
iignatyev
parents: 10341
diff changeset
125 }
f99558245e5c 8022832: Add WB APIs for OSR compilation
iignatyev
parents: 10341
diff changeset
126 public void makeMethodNotCompilable(Executable method, int compLevel) {
f99558245e5c 8022832: Add WB APIs for OSR compilation
iignatyev
parents: 10341
diff changeset
127 makeMethodNotCompilable(method, compLevel, false /*not osr*/);
f99558245e5c 8022832: Add WB APIs for OSR compilation
iignatyev
parents: 10341
diff changeset
128 }
f99558245e5c 8022832: Add WB APIs for OSR compilation
iignatyev
parents: 10341
diff changeset
129 public native void makeMethodNotCompilable(Executable method, int compLevel, boolean isOsr);
f99558245e5c 8022832: Add WB APIs for OSR compilation
iignatyev
parents: 10341
diff changeset
130 public int getMethodCompilationLevel(Executable method) {
f99558245e5c 8022832: Add WB APIs for OSR compilation
iignatyev
parents: 10341
diff changeset
131 return getMethodCompilationLevel(method, false /*not ost*/);
10113
4b2eebe03f93 8011971: WB API doesn't accept j.l.reflect.Constructor
iignatyev
parents: 9085
diff changeset
132 }
12073
f99558245e5c 8022832: Add WB APIs for OSR compilation
iignatyev
parents: 10341
diff changeset
133 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
134 public native boolean testSetDontInlineMethod(Executable method, boolean value);
12073
f99558245e5c 8022832: Add WB APIs for OSR compilation
iignatyev
parents: 10341
diff changeset
135 public int getCompileQueuesSize() {
f99558245e5c 8022832: Add WB APIs for OSR compilation
iignatyev
parents: 10341
diff changeset
136 return getCompileQueueSize(-1 /*any*/);
f99558245e5c 8022832: Add WB APIs for OSR compilation
iignatyev
parents: 10341
diff changeset
137 }
f99558245e5c 8022832: Add WB APIs for OSR compilation
iignatyev
parents: 10341
diff changeset
138 public native int getCompileQueueSize(int compLevel);
10113
4b2eebe03f93 8011971: WB API doesn't accept j.l.reflect.Constructor
iignatyev
parents: 9085
diff changeset
139 public native boolean testSetForceInlineMethod(Executable method, boolean value);
20362
f433f37645e5 8054938: [TESTBUG] Wrong WhiteBox.java was pushed by JDK-8044140
zgu
parents: 20361
diff changeset
140 public boolean enqueueMethodForCompilation(Executable method, int compLevel) {
12073
f99558245e5c 8022832: Add WB APIs for OSR compilation
iignatyev
parents: 10341
diff changeset
141 return enqueueMethodForCompilation(method, compLevel, -1 /*InvocationEntryBci*/);
f99558245e5c 8022832: Add WB APIs for OSR compilation
iignatyev
parents: 10341
diff changeset
142 }
f99558245e5c 8022832: Add WB APIs for OSR compilation
iignatyev
parents: 10341
diff changeset
143 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
144 public native void clearMethodState(Executable method);
12073
f99558245e5c 8022832: Add WB APIs for OSR compilation
iignatyev
parents: 10341
diff changeset
145 public native int getMethodEntryBci(Executable method);
17817
4abb719c5620 8038240: new WB API to get nmethod
iignatyev
parents: 17778
diff changeset
146 public native Object[] getNMethod(Executable method, boolean isOsr);
8850
ede380e13960 8009763: Add WB test for String.intern()
mgerdin
parents: 8098
diff changeset
147
10113
4b2eebe03f93 8011971: WB API doesn't accept j.l.reflect.Constructor
iignatyev
parents: 9085
diff changeset
148 // Intered strings
8850
ede380e13960 8009763: Add WB test for String.intern()
mgerdin
parents: 8098
diff changeset
149 public native boolean isInStringTable(String str);
ede380e13960 8009763: Add WB test for String.intern()
mgerdin
parents: 8098
diff changeset
150
10157
f32b6c267d2e 8012015: Use PROT_NONE when reserving memory
mikael
parents: 10117
diff changeset
151 // 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
152 public native void readReservedMemory();
20362
f433f37645e5 8054938: [TESTBUG] Wrong WhiteBox.java was pushed by JDK-8044140
zgu
parents: 20361
diff changeset
153 public native long allocateMetaspace(ClassLoader classLoader, long size);
f433f37645e5 8054938: [TESTBUG] Wrong WhiteBox.java was pushed by JDK-8044140
zgu
parents: 20361
diff changeset
154 public native void freeMetaspace(ClassLoader classLoader, long addr, long size);
20540
b509b7ff561c 8049599: MetaspaceGC::_capacity_until_GC can overflow
ehelin
parents: 20451
diff changeset
155 public native long incMetaspaceCapacityUntilGC(long increment);
b509b7ff561c 8049599: MetaspaceGC::_capacity_until_GC can overflow
ehelin
parents: 20451
diff changeset
156 public native long metaspaceCapacityUntilGC();
10157
f32b6c267d2e 8012015: Use PROT_NONE when reserving memory
mikael
parents: 10117
diff changeset
157
20357
4bfc44ba0d19 8055098: WB API should be extended to provide information about size and age of object.
tschatzl
parents: 20278
diff changeset
158 // force Young GC
4bfc44ba0d19 8055098: WB API should be extended to provide information about size and age of object.
tschatzl
parents: 20278
diff changeset
159 public native void youngGC();
4bfc44ba0d19 8055098: WB API should be extended to provide information about size and age of object.
tschatzl
parents: 20278
diff changeset
160
8850
ede380e13960 8009763: Add WB test for String.intern()
mgerdin
parents: 8098
diff changeset
161 // force Full GC
ede380e13960 8009763: Add WB test for String.intern()
mgerdin
parents: 8098
diff changeset
162 public native void fullGC();
13053
9d8b29a0548c 8027237: New tests on ReservedSpace/VirtualSpace classes
mgerdin
parents: 12233
diff changeset
163
9d8b29a0548c 8027237: New tests on ReservedSpace/VirtualSpace classes
mgerdin
parents: 12233
diff changeset
164 // Tests on ReservedSpace/VirtualSpace classes
9d8b29a0548c 8027237: New tests on ReservedSpace/VirtualSpace classes
mgerdin
parents: 12233
diff changeset
165 public native int stressVirtualSpaceResize(long reservedSpaceSize, long magnitude, long iterations);
9d8b29a0548c 8027237: New tests on ReservedSpace/VirtualSpace classes
mgerdin
parents: 12233
diff changeset
166 public native void runMemoryUnitTests();
9d8b29a0548c 8027237: New tests on ReservedSpace/VirtualSpace classes
mgerdin
parents: 12233
diff changeset
167 public native void readFromNoaccessArea();
20362
f433f37645e5 8054938: [TESTBUG] Wrong WhiteBox.java was pushed by JDK-8044140
zgu
parents: 20361
diff changeset
168 public native long getThreadStackSize();
f433f37645e5 8054938: [TESTBUG] Wrong WhiteBox.java was pushed by JDK-8044140
zgu
parents: 20361
diff changeset
169 public native long getThreadRemainingStackSize();
13053
9d8b29a0548c 8027237: New tests on ReservedSpace/VirtualSpace classes
mgerdin
parents: 12233
diff changeset
170
17778
a48e16541e6b 8035857: Add tests to verify correctness of operations with BMI1 and LZCNT instructions
iignatyev
parents: 13053
diff changeset
171 // CPU features
a48e16541e6b 8035857: Add tests to verify correctness of operations with BMI1 and LZCNT instructions
iignatyev
parents: 13053
diff changeset
172 public native String getCPUFeatures();
a48e16541e6b 8035857: Add tests to verify correctness of operations with BMI1 and LZCNT instructions
iignatyev
parents: 13053
diff changeset
173
20451
e2452c3ff7fb 8057752: WhiteBox extension support for testing
sjohanss
parents: 20362
diff changeset
174 // Native extensions
e2452c3ff7fb 8057752: WhiteBox extension support for testing
sjohanss
parents: 20362
diff changeset
175 public native long getHeapUsageForContext(int context);
e2452c3ff7fb 8057752: WhiteBox extension support for testing
sjohanss
parents: 20362
diff changeset
176 public native long getHeapRegionCountForContext(int context);
e2452c3ff7fb 8057752: WhiteBox extension support for testing
sjohanss
parents: 20362
diff changeset
177 public native int getContextForObject(Object obj);
e2452c3ff7fb 8057752: WhiteBox extension support for testing
sjohanss
parents: 20362
diff changeset
178 public native void printRegionInfo(int context);
e2452c3ff7fb 8057752: WhiteBox extension support for testing
sjohanss
parents: 20362
diff changeset
179
20362
f433f37645e5 8054938: [TESTBUG] Wrong WhiteBox.java was pushed by JDK-8044140
zgu
parents: 20361
diff changeset
180 // VM flags
f433f37645e5 8054938: [TESTBUG] Wrong WhiteBox.java was pushed by JDK-8044140
zgu
parents: 20361
diff changeset
181 public native void setBooleanVMFlag(String name, boolean value);
f433f37645e5 8054938: [TESTBUG] Wrong WhiteBox.java was pushed by JDK-8044140
zgu
parents: 20361
diff changeset
182 public native void setIntxVMFlag(String name, long value);
f433f37645e5 8054938: [TESTBUG] Wrong WhiteBox.java was pushed by JDK-8044140
zgu
parents: 20361
diff changeset
183 public native void setUintxVMFlag(String name, long value);
f433f37645e5 8054938: [TESTBUG] Wrong WhiteBox.java was pushed by JDK-8044140
zgu
parents: 20361
diff changeset
184 public native void setUint64VMFlag(String name, long value);
f433f37645e5 8054938: [TESTBUG] Wrong WhiteBox.java was pushed by JDK-8044140
zgu
parents: 20361
diff changeset
185 public native void setStringVMFlag(String name, String value);
f433f37645e5 8054938: [TESTBUG] Wrong WhiteBox.java was pushed by JDK-8044140
zgu
parents: 20361
diff changeset
186 public native void setDoubleVMFlag(String name, double value);
f433f37645e5 8054938: [TESTBUG] Wrong WhiteBox.java was pushed by JDK-8044140
zgu
parents: 20361
diff changeset
187 public native Boolean getBooleanVMFlag(String name);
f433f37645e5 8054938: [TESTBUG] Wrong WhiteBox.java was pushed by JDK-8044140
zgu
parents: 20361
diff changeset
188 public native Long getIntxVMFlag(String name);
f433f37645e5 8054938: [TESTBUG] Wrong WhiteBox.java was pushed by JDK-8044140
zgu
parents: 20361
diff changeset
189 public native Long getUintxVMFlag(String name);
f433f37645e5 8054938: [TESTBUG] Wrong WhiteBox.java was pushed by JDK-8044140
zgu
parents: 20361
diff changeset
190 public native Long getUint64VMFlag(String name);
f433f37645e5 8054938: [TESTBUG] Wrong WhiteBox.java was pushed by JDK-8044140
zgu
parents: 20361
diff changeset
191 public native String getStringVMFlag(String name);
f433f37645e5 8054938: [TESTBUG] Wrong WhiteBox.java was pushed by JDK-8044140
zgu
parents: 20361
diff changeset
192 public native Double getDoubleVMFlag(String name);
f433f37645e5 8054938: [TESTBUG] Wrong WhiteBox.java was pushed by JDK-8044140
zgu
parents: 20361
diff changeset
193 private final List<Function<String,Object>> flagsGetters = Arrays.asList(
f433f37645e5 8054938: [TESTBUG] Wrong WhiteBox.java was pushed by JDK-8044140
zgu
parents: 20361
diff changeset
194 this::getBooleanVMFlag, this::getIntxVMFlag, this::getUintxVMFlag,
f433f37645e5 8054938: [TESTBUG] Wrong WhiteBox.java was pushed by JDK-8044140
zgu
parents: 20361
diff changeset
195 this::getUint64VMFlag, this::getStringVMFlag, this::getDoubleVMFlag);
f433f37645e5 8054938: [TESTBUG] Wrong WhiteBox.java was pushed by JDK-8044140
zgu
parents: 20361
diff changeset
196
f433f37645e5 8054938: [TESTBUG] Wrong WhiteBox.java was pushed by JDK-8044140
zgu
parents: 20361
diff changeset
197 public Object getVMFlag(String name) {
f433f37645e5 8054938: [TESTBUG] Wrong WhiteBox.java was pushed by JDK-8044140
zgu
parents: 20361
diff changeset
198 return flagsGetters.stream()
f433f37645e5 8054938: [TESTBUG] Wrong WhiteBox.java was pushed by JDK-8044140
zgu
parents: 20361
diff changeset
199 .map(f -> f.apply(name))
f433f37645e5 8054938: [TESTBUG] Wrong WhiteBox.java was pushed by JDK-8044140
zgu
parents: 20361
diff changeset
200 .filter(x -> x != null)
f433f37645e5 8054938: [TESTBUG] Wrong WhiteBox.java was pushed by JDK-8044140
zgu
parents: 20361
diff changeset
201 .findAny()
f433f37645e5 8054938: [TESTBUG] Wrong WhiteBox.java was pushed by JDK-8044140
zgu
parents: 20361
diff changeset
202 .orElse(null);
f433f37645e5 8054938: [TESTBUG] Wrong WhiteBox.java was pushed by JDK-8044140
zgu
parents: 20361
diff changeset
203 }
5915
2d503de963b3 7148152: Add whitebox testing API to HotSpot
mgerdin
parents:
diff changeset
204 }