Mercurial > hg > truffle
annotate src/share/vm/prims/whitebox.cpp @ 8733:9def4075da6d
8008079: G1: Add nextObject routine to CMBitMapRO and replace nextWord
Summary: Update the task local finger to the start of the next object when marking aborts, in order to avoid the redundant scanning of all 0's when the marking task restarts, if otherwise updating to the next word. In addition, reuse the routine nextObject() in routine iterate().
Reviewed-by: johnc, ysr
Contributed-by: tamao <tao.mao@oracle.com>
author | tamao |
---|---|
date | Tue, 05 Mar 2013 15:36:56 -0800 |
parents | 12e01444ca2d |
children | ede380e13960 |
rev | line source |
---|---|
5915 | 1 /* |
2 * Copyright (c) 2012, 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 #include "precompiled.hpp" | |
26 | |
27 #include "memory/universe.hpp" | |
28 #include "oops/oop.inline.hpp" | |
5978
51612f0c0a79
7148488: Whitebox tests for the Diagnostic Framework Parser
nloodin
parents:
5915
diff
changeset
|
29 |
51612f0c0a79
7148488: Whitebox tests for the Diagnostic Framework Parser
nloodin
parents:
5915
diff
changeset
|
30 #include "classfile/symbolTable.hpp" |
6725
da91efe96a93
6964458: Reimplement class meta-data storage to use native memory
coleenp
parents:
6202
diff
changeset
|
31 #include "classfile/classLoaderData.hpp" |
5978
51612f0c0a79
7148488: Whitebox tests for the Diagnostic Framework Parser
nloodin
parents:
5915
diff
changeset
|
32 |
5915 | 33 #include "prims/whitebox.hpp" |
5978
51612f0c0a79
7148488: Whitebox tests for the Diagnostic Framework Parser
nloodin
parents:
5915
diff
changeset
|
34 #include "prims/wbtestmethods/parserTests.hpp" |
51612f0c0a79
7148488: Whitebox tests for the Diagnostic Framework Parser
nloodin
parents:
5915
diff
changeset
|
35 |
5915 | 36 #include "runtime/interfaceSupport.hpp" |
37 #include "runtime/os.hpp" | |
38 #include "utilities/debug.hpp" | |
8001
db9981fd3124
8005915: Unify SERIALGC and INCLUDE_ALTERNATE_GCS
jprovino
parents:
6725
diff
changeset
|
39 #include "utilities/macros.hpp" |
5915 | 40 |
8001
db9981fd3124
8005915: Unify SERIALGC and INCLUDE_ALTERNATE_GCS
jprovino
parents:
6725
diff
changeset
|
41 #if INCLUDE_ALL_GCS |
5915 | 42 #include "gc_implementation/g1/concurrentMark.hpp" |
43 #include "gc_implementation/g1/g1CollectedHeap.inline.hpp" | |
44 #include "gc_implementation/g1/heapRegionRemSet.hpp" | |
8001
db9981fd3124
8005915: Unify SERIALGC and INCLUDE_ALTERNATE_GCS
jprovino
parents:
6725
diff
changeset
|
45 #endif // INCLUDE_ALL_GCS |
5915 | 46 |
7971
4102b59539ce
8005012: Add WB APIs to better support NMT testing
ctornqvi
parents:
6725
diff
changeset
|
47 #ifdef INCLUDE_NMT |
4102b59539ce
8005012: Add WB APIs to better support NMT testing
ctornqvi
parents:
6725
diff
changeset
|
48 #include "services/memTracker.hpp" |
4102b59539ce
8005012: Add WB APIs to better support NMT testing
ctornqvi
parents:
6725
diff
changeset
|
49 #endif // INCLUDE_NMT |
4102b59539ce
8005012: Add WB APIs to better support NMT testing
ctornqvi
parents:
6725
diff
changeset
|
50 |
8051
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
51 #include "compiler/compileBroker.hpp" |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
52 |
5915 | 53 bool WhiteBox::_used = false; |
54 | |
55 WB_ENTRY(jlong, WB_GetObjectAddress(JNIEnv* env, jobject o, jobject obj)) | |
56 return (jlong)(void*)JNIHandles::resolve(obj); | |
57 WB_END | |
58 | |
59 WB_ENTRY(jint, WB_GetHeapOopSize(JNIEnv* env, jobject o)) | |
60 return heapOopSize; | |
61 WB_END | |
62 | |
6725
da91efe96a93
6964458: Reimplement class meta-data storage to use native memory
coleenp
parents:
6202
diff
changeset
|
63 |
da91efe96a93
6964458: Reimplement class meta-data storage to use native memory
coleenp
parents:
6202
diff
changeset
|
64 class WBIsKlassAliveClosure : public KlassClosure { |
da91efe96a93
6964458: Reimplement class meta-data storage to use native memory
coleenp
parents:
6202
diff
changeset
|
65 Symbol* _name; |
da91efe96a93
6964458: Reimplement class meta-data storage to use native memory
coleenp
parents:
6202
diff
changeset
|
66 bool _found; |
da91efe96a93
6964458: Reimplement class meta-data storage to use native memory
coleenp
parents:
6202
diff
changeset
|
67 public: |
da91efe96a93
6964458: Reimplement class meta-data storage to use native memory
coleenp
parents:
6202
diff
changeset
|
68 WBIsKlassAliveClosure(Symbol* name) : _name(name), _found(false) {} |
da91efe96a93
6964458: Reimplement class meta-data storage to use native memory
coleenp
parents:
6202
diff
changeset
|
69 |
da91efe96a93
6964458: Reimplement class meta-data storage to use native memory
coleenp
parents:
6202
diff
changeset
|
70 void do_klass(Klass* k) { |
da91efe96a93
6964458: Reimplement class meta-data storage to use native memory
coleenp
parents:
6202
diff
changeset
|
71 if (_found) return; |
da91efe96a93
6964458: Reimplement class meta-data storage to use native memory
coleenp
parents:
6202
diff
changeset
|
72 Symbol* ksym = k->name(); |
da91efe96a93
6964458: Reimplement class meta-data storage to use native memory
coleenp
parents:
6202
diff
changeset
|
73 if (ksym->fast_compare(_name) == 0) { |
da91efe96a93
6964458: Reimplement class meta-data storage to use native memory
coleenp
parents:
6202
diff
changeset
|
74 _found = true; |
da91efe96a93
6964458: Reimplement class meta-data storage to use native memory
coleenp
parents:
6202
diff
changeset
|
75 } |
da91efe96a93
6964458: Reimplement class meta-data storage to use native memory
coleenp
parents:
6202
diff
changeset
|
76 } |
da91efe96a93
6964458: Reimplement class meta-data storage to use native memory
coleenp
parents:
6202
diff
changeset
|
77 |
da91efe96a93
6964458: Reimplement class meta-data storage to use native memory
coleenp
parents:
6202
diff
changeset
|
78 bool found() const { |
da91efe96a93
6964458: Reimplement class meta-data storage to use native memory
coleenp
parents:
6202
diff
changeset
|
79 return _found; |
da91efe96a93
6964458: Reimplement class meta-data storage to use native memory
coleenp
parents:
6202
diff
changeset
|
80 } |
da91efe96a93
6964458: Reimplement class meta-data storage to use native memory
coleenp
parents:
6202
diff
changeset
|
81 }; |
da91efe96a93
6964458: Reimplement class meta-data storage to use native memory
coleenp
parents:
6202
diff
changeset
|
82 |
da91efe96a93
6964458: Reimplement class meta-data storage to use native memory
coleenp
parents:
6202
diff
changeset
|
83 WB_ENTRY(jboolean, WB_IsClassAlive(JNIEnv* env, jobject target, jstring name)) |
da91efe96a93
6964458: Reimplement class meta-data storage to use native memory
coleenp
parents:
6202
diff
changeset
|
84 Handle h_name = JNIHandles::resolve(name); |
da91efe96a93
6964458: Reimplement class meta-data storage to use native memory
coleenp
parents:
6202
diff
changeset
|
85 if (h_name.is_null()) return false; |
da91efe96a93
6964458: Reimplement class meta-data storage to use native memory
coleenp
parents:
6202
diff
changeset
|
86 Symbol* sym = java_lang_String::as_symbol(h_name, CHECK_false); |
da91efe96a93
6964458: Reimplement class meta-data storage to use native memory
coleenp
parents:
6202
diff
changeset
|
87 TempNewSymbol tsym(sym); // Make sure to decrement reference count on sym on return |
da91efe96a93
6964458: Reimplement class meta-data storage to use native memory
coleenp
parents:
6202
diff
changeset
|
88 |
da91efe96a93
6964458: Reimplement class meta-data storage to use native memory
coleenp
parents:
6202
diff
changeset
|
89 WBIsKlassAliveClosure closure(sym); |
da91efe96a93
6964458: Reimplement class meta-data storage to use native memory
coleenp
parents:
6202
diff
changeset
|
90 ClassLoaderDataGraph::classes_do(&closure); |
da91efe96a93
6964458: Reimplement class meta-data storage to use native memory
coleenp
parents:
6202
diff
changeset
|
91 |
da91efe96a93
6964458: Reimplement class meta-data storage to use native memory
coleenp
parents:
6202
diff
changeset
|
92 return closure.found(); |
da91efe96a93
6964458: Reimplement class meta-data storage to use native memory
coleenp
parents:
6202
diff
changeset
|
93 WB_END |
da91efe96a93
6964458: Reimplement class meta-data storage to use native memory
coleenp
parents:
6202
diff
changeset
|
94 |
8001
db9981fd3124
8005915: Unify SERIALGC and INCLUDE_ALTERNATE_GCS
jprovino
parents:
6725
diff
changeset
|
95 #if INCLUDE_ALL_GCS |
5915 | 96 WB_ENTRY(jboolean, WB_G1IsHumongous(JNIEnv* env, jobject o, jobject obj)) |
97 G1CollectedHeap* g1 = G1CollectedHeap::heap(); | |
98 oop result = JNIHandles::resolve(obj); | |
99 const HeapRegion* hr = g1->heap_region_containing(result); | |
100 return hr->isHumongous(); | |
101 WB_END | |
102 | |
103 WB_ENTRY(jlong, WB_G1NumFreeRegions(JNIEnv* env, jobject o)) | |
104 G1CollectedHeap* g1 = G1CollectedHeap::heap(); | |
105 size_t nr = g1->free_regions(); | |
106 return (jlong)nr; | |
107 WB_END | |
108 | |
109 WB_ENTRY(jboolean, WB_G1InConcurrentMark(JNIEnv* env, jobject o)) | |
110 G1CollectedHeap* g1 = G1CollectedHeap::heap(); | |
111 ConcurrentMark* cm = g1->concurrent_mark(); | |
112 return cm->concurrent_marking_in_progress(); | |
113 WB_END | |
114 | |
115 WB_ENTRY(jint, WB_G1RegionSize(JNIEnv* env, jobject o)) | |
116 return (jint)HeapRegion::GrainBytes; | |
117 WB_END | |
8001
db9981fd3124
8005915: Unify SERIALGC and INCLUDE_ALTERNATE_GCS
jprovino
parents:
6725
diff
changeset
|
118 #endif // INCLUDE_ALL_GCS |
5915 | 119 |
7971
4102b59539ce
8005012: Add WB APIs to better support NMT testing
ctornqvi
parents:
6725
diff
changeset
|
120 #ifdef INCLUDE_NMT |
4102b59539ce
8005012: Add WB APIs to better support NMT testing
ctornqvi
parents:
6725
diff
changeset
|
121 // Keep track of the 3 allocations in NMTAllocTest so we can free them later |
4102b59539ce
8005012: Add WB APIs to better support NMT testing
ctornqvi
parents:
6725
diff
changeset
|
122 // on and verify that they're not visible anymore |
4102b59539ce
8005012: Add WB APIs to better support NMT testing
ctornqvi
parents:
6725
diff
changeset
|
123 static void* nmtMtTest1 = NULL, *nmtMtTest2 = NULL, *nmtMtTest3 = NULL; |
4102b59539ce
8005012: Add WB APIs to better support NMT testing
ctornqvi
parents:
6725
diff
changeset
|
124 |
4102b59539ce
8005012: Add WB APIs to better support NMT testing
ctornqvi
parents:
6725
diff
changeset
|
125 // Alloc memory using the test memory type so that we can use that to see if |
4102b59539ce
8005012: Add WB APIs to better support NMT testing
ctornqvi
parents:
6725
diff
changeset
|
126 // NMT picks it up correctly |
4102b59539ce
8005012: Add WB APIs to better support NMT testing
ctornqvi
parents:
6725
diff
changeset
|
127 WB_ENTRY(jboolean, WB_NMTAllocTest(JNIEnv* env)) |
4102b59539ce
8005012: Add WB APIs to better support NMT testing
ctornqvi
parents:
6725
diff
changeset
|
128 void *mem; |
4102b59539ce
8005012: Add WB APIs to better support NMT testing
ctornqvi
parents:
6725
diff
changeset
|
129 |
4102b59539ce
8005012: Add WB APIs to better support NMT testing
ctornqvi
parents:
6725
diff
changeset
|
130 if (!MemTracker::is_on() || MemTracker::shutdown_in_progress()) { |
4102b59539ce
8005012: Add WB APIs to better support NMT testing
ctornqvi
parents:
6725
diff
changeset
|
131 return false; |
4102b59539ce
8005012: Add WB APIs to better support NMT testing
ctornqvi
parents:
6725
diff
changeset
|
132 } |
4102b59539ce
8005012: Add WB APIs to better support NMT testing
ctornqvi
parents:
6725
diff
changeset
|
133 |
4102b59539ce
8005012: Add WB APIs to better support NMT testing
ctornqvi
parents:
6725
diff
changeset
|
134 // Allocate 2 * 128k + 256k + 1024k and free the 1024k one to make sure we track |
4102b59539ce
8005012: Add WB APIs to better support NMT testing
ctornqvi
parents:
6725
diff
changeset
|
135 // everything correctly. Total should be 512k held alive. |
4102b59539ce
8005012: Add WB APIs to better support NMT testing
ctornqvi
parents:
6725
diff
changeset
|
136 nmtMtTest1 = os::malloc(128 * 1024, mtTest); |
4102b59539ce
8005012: Add WB APIs to better support NMT testing
ctornqvi
parents:
6725
diff
changeset
|
137 mem = os::malloc(1024 * 1024, mtTest); |
4102b59539ce
8005012: Add WB APIs to better support NMT testing
ctornqvi
parents:
6725
diff
changeset
|
138 nmtMtTest2 = os::malloc(256 * 1024, mtTest); |
4102b59539ce
8005012: Add WB APIs to better support NMT testing
ctornqvi
parents:
6725
diff
changeset
|
139 os::free(mem, mtTest); |
4102b59539ce
8005012: Add WB APIs to better support NMT testing
ctornqvi
parents:
6725
diff
changeset
|
140 nmtMtTest3 = os::malloc(128 * 1024, mtTest); |
4102b59539ce
8005012: Add WB APIs to better support NMT testing
ctornqvi
parents:
6725
diff
changeset
|
141 |
4102b59539ce
8005012: Add WB APIs to better support NMT testing
ctornqvi
parents:
6725
diff
changeset
|
142 return true; |
4102b59539ce
8005012: Add WB APIs to better support NMT testing
ctornqvi
parents:
6725
diff
changeset
|
143 WB_END |
4102b59539ce
8005012: Add WB APIs to better support NMT testing
ctornqvi
parents:
6725
diff
changeset
|
144 |
4102b59539ce
8005012: Add WB APIs to better support NMT testing
ctornqvi
parents:
6725
diff
changeset
|
145 // Free the memory allocated by NMTAllocTest |
4102b59539ce
8005012: Add WB APIs to better support NMT testing
ctornqvi
parents:
6725
diff
changeset
|
146 WB_ENTRY(jboolean, WB_NMTFreeTestMemory(JNIEnv* env)) |
4102b59539ce
8005012: Add WB APIs to better support NMT testing
ctornqvi
parents:
6725
diff
changeset
|
147 |
4102b59539ce
8005012: Add WB APIs to better support NMT testing
ctornqvi
parents:
6725
diff
changeset
|
148 if (nmtMtTest1 == NULL || nmtMtTest2 == NULL || nmtMtTest3 == NULL) { |
4102b59539ce
8005012: Add WB APIs to better support NMT testing
ctornqvi
parents:
6725
diff
changeset
|
149 return false; |
4102b59539ce
8005012: Add WB APIs to better support NMT testing
ctornqvi
parents:
6725
diff
changeset
|
150 } |
4102b59539ce
8005012: Add WB APIs to better support NMT testing
ctornqvi
parents:
6725
diff
changeset
|
151 |
4102b59539ce
8005012: Add WB APIs to better support NMT testing
ctornqvi
parents:
6725
diff
changeset
|
152 os::free(nmtMtTest1, mtTest); |
4102b59539ce
8005012: Add WB APIs to better support NMT testing
ctornqvi
parents:
6725
diff
changeset
|
153 nmtMtTest1 = NULL; |
4102b59539ce
8005012: Add WB APIs to better support NMT testing
ctornqvi
parents:
6725
diff
changeset
|
154 os::free(nmtMtTest2, mtTest); |
4102b59539ce
8005012: Add WB APIs to better support NMT testing
ctornqvi
parents:
6725
diff
changeset
|
155 nmtMtTest2 = NULL; |
4102b59539ce
8005012: Add WB APIs to better support NMT testing
ctornqvi
parents:
6725
diff
changeset
|
156 os::free(nmtMtTest3, mtTest); |
4102b59539ce
8005012: Add WB APIs to better support NMT testing
ctornqvi
parents:
6725
diff
changeset
|
157 nmtMtTest3 = NULL; |
4102b59539ce
8005012: Add WB APIs to better support NMT testing
ctornqvi
parents:
6725
diff
changeset
|
158 |
4102b59539ce
8005012: Add WB APIs to better support NMT testing
ctornqvi
parents:
6725
diff
changeset
|
159 return true; |
4102b59539ce
8005012: Add WB APIs to better support NMT testing
ctornqvi
parents:
6725
diff
changeset
|
160 WB_END |
4102b59539ce
8005012: Add WB APIs to better support NMT testing
ctornqvi
parents:
6725
diff
changeset
|
161 |
4102b59539ce
8005012: Add WB APIs to better support NMT testing
ctornqvi
parents:
6725
diff
changeset
|
162 // Block until the current generation of NMT data to be merged, used to reliably test the NMT feature |
4102b59539ce
8005012: Add WB APIs to better support NMT testing
ctornqvi
parents:
6725
diff
changeset
|
163 WB_ENTRY(jboolean, WB_NMTWaitForDataMerge(JNIEnv* env)) |
4102b59539ce
8005012: Add WB APIs to better support NMT testing
ctornqvi
parents:
6725
diff
changeset
|
164 |
4102b59539ce
8005012: Add WB APIs to better support NMT testing
ctornqvi
parents:
6725
diff
changeset
|
165 if (!MemTracker::is_on() || MemTracker::shutdown_in_progress()) { |
4102b59539ce
8005012: Add WB APIs to better support NMT testing
ctornqvi
parents:
6725
diff
changeset
|
166 return false; |
4102b59539ce
8005012: Add WB APIs to better support NMT testing
ctornqvi
parents:
6725
diff
changeset
|
167 } |
4102b59539ce
8005012: Add WB APIs to better support NMT testing
ctornqvi
parents:
6725
diff
changeset
|
168 |
4102b59539ce
8005012: Add WB APIs to better support NMT testing
ctornqvi
parents:
6725
diff
changeset
|
169 return MemTracker::wbtest_wait_for_data_merge(); |
4102b59539ce
8005012: Add WB APIs to better support NMT testing
ctornqvi
parents:
6725
diff
changeset
|
170 WB_END |
4102b59539ce
8005012: Add WB APIs to better support NMT testing
ctornqvi
parents:
6725
diff
changeset
|
171 |
4102b59539ce
8005012: Add WB APIs to better support NMT testing
ctornqvi
parents:
6725
diff
changeset
|
172 #endif // INCLUDE_NMT |
4102b59539ce
8005012: Add WB APIs to better support NMT testing
ctornqvi
parents:
6725
diff
changeset
|
173 |
8051
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
174 static jmethodID reflected_method_to_jmid(JavaThread* thread, JNIEnv* env, jobject method) { |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
175 assert(method != NULL, "method should not be null"); |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
176 ThreadToNativeFromVM ttn(thread); |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
177 return env->FromReflectedMethod(method); |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
178 } |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
179 |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
180 WB_ENTRY(void, WB_DeoptimizeAll(JNIEnv* env, jobject o)) |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
181 MutexLockerEx mu(Compile_lock); |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
182 CodeCache::mark_all_nmethods_for_deoptimization(); |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
183 VM_Deoptimize op; |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
184 VMThread::execute(&op); |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
185 WB_END |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
186 |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
187 WB_ENTRY(jint, WB_DeoptimizeMethod(JNIEnv* env, jobject o, jobject method)) |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
188 jmethodID jmid = reflected_method_to_jmid(thread, env, method); |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
189 MutexLockerEx mu(Compile_lock); |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
190 methodHandle mh(THREAD, Method::checked_resolve_jmethod_id(jmid)); |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
191 int result = 0; |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
192 nmethod* code = mh->code(); |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
193 if (code != NULL) { |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
194 code->mark_for_deoptimization(); |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
195 ++result; |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
196 } |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
197 result += CodeCache::mark_for_deoptimization(mh()); |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
198 if (result > 0) { |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
199 VM_Deoptimize op; |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
200 VMThread::execute(&op); |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
201 } |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
202 return result; |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
203 WB_END |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
204 |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
205 WB_ENTRY(jboolean, WB_IsMethodCompiled(JNIEnv* env, jobject o, jobject method)) |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
206 jmethodID jmid = reflected_method_to_jmid(thread, env, method); |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
207 MutexLockerEx mu(Compile_lock); |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
208 methodHandle mh(THREAD, Method::checked_resolve_jmethod_id(jmid)); |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
209 nmethod* code = mh->code(); |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
210 if (code == NULL) { |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
211 return JNI_FALSE; |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
212 } |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
213 return (code->is_alive() && !code->is_marked_for_deoptimization()); |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
214 WB_END |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
215 |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
216 WB_ENTRY(jboolean, WB_IsMethodCompilable(JNIEnv* env, jobject o, jobject method)) |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
217 jmethodID jmid = reflected_method_to_jmid(thread, env, method); |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
218 MutexLockerEx mu(Compile_lock); |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
219 methodHandle mh(THREAD, Method::checked_resolve_jmethod_id(jmid)); |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
220 return !mh->is_not_compilable(); |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
221 WB_END |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
222 |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
223 WB_ENTRY(jboolean, WB_IsMethodQueuedForCompilation(JNIEnv* env, jobject o, jobject method)) |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
224 jmethodID jmid = reflected_method_to_jmid(thread, env, method); |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
225 MutexLockerEx mu(Compile_lock); |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
226 methodHandle mh(THREAD, Method::checked_resolve_jmethod_id(jmid)); |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
227 return mh->queued_for_compilation(); |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
228 WB_END |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
229 |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
230 WB_ENTRY(jint, WB_GetMethodCompilationLevel(JNIEnv* env, jobject o, jobject method)) |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
231 jmethodID jmid = reflected_method_to_jmid(thread, env, method); |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
232 methodHandle mh(THREAD, Method::checked_resolve_jmethod_id(jmid)); |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
233 nmethod* code = mh->code(); |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
234 return (code != NULL ? code->comp_level() : CompLevel_none); |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
235 WB_END |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
236 |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
237 |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
238 WB_ENTRY(void, WB_MakeMethodNotCompilable(JNIEnv* env, jobject o, jobject method)) |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
239 jmethodID jmid = reflected_method_to_jmid(thread, env, method); |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
240 methodHandle mh(THREAD, Method::checked_resolve_jmethod_id(jmid)); |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
241 mh->set_not_compilable(); |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
242 WB_END |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
243 |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
244 WB_ENTRY(jboolean, WB_SetDontInlineMethod(JNIEnv* env, jobject o, jobject method, jboolean value)) |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
245 jmethodID jmid = reflected_method_to_jmid(thread, env, method); |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
246 methodHandle mh(THREAD, Method::checked_resolve_jmethod_id(jmid)); |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
247 bool result = mh->dont_inline(); |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
248 mh->set_dont_inline(value == JNI_TRUE); |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
249 return result; |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
250 WB_END |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
251 |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
252 WB_ENTRY(jint, WB_GetCompileQueuesSize(JNIEnv* env, jobject o)) |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
253 return CompileBroker::queue_size(CompLevel_full_optimization) /* C2 */ + |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
254 CompileBroker::queue_size(CompLevel_full_profile) /* C1 */; |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
255 WB_END |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
256 |
5978
51612f0c0a79
7148488: Whitebox tests for the Diagnostic Framework Parser
nloodin
parents:
5915
diff
changeset
|
257 //Some convenience methods to deal with objects from java |
51612f0c0a79
7148488: Whitebox tests for the Diagnostic Framework Parser
nloodin
parents:
5915
diff
changeset
|
258 int WhiteBox::offset_for_field(const char* field_name, oop object, |
51612f0c0a79
7148488: Whitebox tests for the Diagnostic Framework Parser
nloodin
parents:
5915
diff
changeset
|
259 Symbol* signature_symbol) { |
51612f0c0a79
7148488: Whitebox tests for the Diagnostic Framework Parser
nloodin
parents:
5915
diff
changeset
|
260 assert(field_name != NULL && strlen(field_name) > 0, "Field name not valid"); |
51612f0c0a79
7148488: Whitebox tests for the Diagnostic Framework Parser
nloodin
parents:
5915
diff
changeset
|
261 Thread* THREAD = Thread::current(); |
51612f0c0a79
7148488: Whitebox tests for the Diagnostic Framework Parser
nloodin
parents:
5915
diff
changeset
|
262 |
51612f0c0a79
7148488: Whitebox tests for the Diagnostic Framework Parser
nloodin
parents:
5915
diff
changeset
|
263 //Get the class of our object |
6725
da91efe96a93
6964458: Reimplement class meta-data storage to use native memory
coleenp
parents:
6202
diff
changeset
|
264 Klass* arg_klass = object->klass(); |
5978
51612f0c0a79
7148488: Whitebox tests for the Diagnostic Framework Parser
nloodin
parents:
5915
diff
changeset
|
265 //Turn it into an instance-klass |
6725
da91efe96a93
6964458: Reimplement class meta-data storage to use native memory
coleenp
parents:
6202
diff
changeset
|
266 InstanceKlass* ik = InstanceKlass::cast(arg_klass); |
5978
51612f0c0a79
7148488: Whitebox tests for the Diagnostic Framework Parser
nloodin
parents:
5915
diff
changeset
|
267 |
51612f0c0a79
7148488: Whitebox tests for the Diagnostic Framework Parser
nloodin
parents:
5915
diff
changeset
|
268 //Create symbols to look for in the class |
51612f0c0a79
7148488: Whitebox tests for the Diagnostic Framework Parser
nloodin
parents:
5915
diff
changeset
|
269 TempNewSymbol name_symbol = SymbolTable::lookup(field_name, (int) strlen(field_name), |
51612f0c0a79
7148488: Whitebox tests for the Diagnostic Framework Parser
nloodin
parents:
5915
diff
changeset
|
270 THREAD); |
51612f0c0a79
7148488: Whitebox tests for the Diagnostic Framework Parser
nloodin
parents:
5915
diff
changeset
|
271 |
51612f0c0a79
7148488: Whitebox tests for the Diagnostic Framework Parser
nloodin
parents:
5915
diff
changeset
|
272 //To be filled in with an offset of the field we're looking for |
51612f0c0a79
7148488: Whitebox tests for the Diagnostic Framework Parser
nloodin
parents:
5915
diff
changeset
|
273 fieldDescriptor fd; |
51612f0c0a79
7148488: Whitebox tests for the Diagnostic Framework Parser
nloodin
parents:
5915
diff
changeset
|
274 |
6725
da91efe96a93
6964458: Reimplement class meta-data storage to use native memory
coleenp
parents:
6202
diff
changeset
|
275 Klass* res = ik->find_field(name_symbol, signature_symbol, &fd); |
5978
51612f0c0a79
7148488: Whitebox tests for the Diagnostic Framework Parser
nloodin
parents:
5915
diff
changeset
|
276 if (res == NULL) { |
51612f0c0a79
7148488: Whitebox tests for the Diagnostic Framework Parser
nloodin
parents:
5915
diff
changeset
|
277 tty->print_cr("Invalid layout of %s at %s", ik->external_name(), |
51612f0c0a79
7148488: Whitebox tests for the Diagnostic Framework Parser
nloodin
parents:
5915
diff
changeset
|
278 name_symbol->as_C_string()); |
51612f0c0a79
7148488: Whitebox tests for the Diagnostic Framework Parser
nloodin
parents:
5915
diff
changeset
|
279 fatal("Invalid layout of preloaded class"); |
51612f0c0a79
7148488: Whitebox tests for the Diagnostic Framework Parser
nloodin
parents:
5915
diff
changeset
|
280 } |
51612f0c0a79
7148488: Whitebox tests for the Diagnostic Framework Parser
nloodin
parents:
5915
diff
changeset
|
281 |
51612f0c0a79
7148488: Whitebox tests for the Diagnostic Framework Parser
nloodin
parents:
5915
diff
changeset
|
282 //fetch the field at the offset we've found |
51612f0c0a79
7148488: Whitebox tests for the Diagnostic Framework Parser
nloodin
parents:
5915
diff
changeset
|
283 int dest_offset = fd.offset(); |
51612f0c0a79
7148488: Whitebox tests for the Diagnostic Framework Parser
nloodin
parents:
5915
diff
changeset
|
284 |
51612f0c0a79
7148488: Whitebox tests for the Diagnostic Framework Parser
nloodin
parents:
5915
diff
changeset
|
285 return dest_offset; |
51612f0c0a79
7148488: Whitebox tests for the Diagnostic Framework Parser
nloodin
parents:
5915
diff
changeset
|
286 } |
51612f0c0a79
7148488: Whitebox tests for the Diagnostic Framework Parser
nloodin
parents:
5915
diff
changeset
|
287 |
51612f0c0a79
7148488: Whitebox tests for the Diagnostic Framework Parser
nloodin
parents:
5915
diff
changeset
|
288 |
51612f0c0a79
7148488: Whitebox tests for the Diagnostic Framework Parser
nloodin
parents:
5915
diff
changeset
|
289 const char* WhiteBox::lookup_jstring(const char* field_name, oop object) { |
51612f0c0a79
7148488: Whitebox tests for the Diagnostic Framework Parser
nloodin
parents:
5915
diff
changeset
|
290 int offset = offset_for_field(field_name, object, |
51612f0c0a79
7148488: Whitebox tests for the Diagnostic Framework Parser
nloodin
parents:
5915
diff
changeset
|
291 vmSymbols::string_signature()); |
51612f0c0a79
7148488: Whitebox tests for the Diagnostic Framework Parser
nloodin
parents:
5915
diff
changeset
|
292 oop string = object->obj_field(offset); |
6202
5a1f452f8f90
7178703: Fix handling of quoted arguments and better error messages in dcmd
sla
parents:
5978
diff
changeset
|
293 if (string == NULL) { |
5a1f452f8f90
7178703: Fix handling of quoted arguments and better error messages in dcmd
sla
parents:
5978
diff
changeset
|
294 return NULL; |
5a1f452f8f90
7178703: Fix handling of quoted arguments and better error messages in dcmd
sla
parents:
5978
diff
changeset
|
295 } |
5978
51612f0c0a79
7148488: Whitebox tests for the Diagnostic Framework Parser
nloodin
parents:
5915
diff
changeset
|
296 const char* ret = java_lang_String::as_utf8_string(string); |
51612f0c0a79
7148488: Whitebox tests for the Diagnostic Framework Parser
nloodin
parents:
5915
diff
changeset
|
297 return ret; |
51612f0c0a79
7148488: Whitebox tests for the Diagnostic Framework Parser
nloodin
parents:
5915
diff
changeset
|
298 } |
51612f0c0a79
7148488: Whitebox tests for the Diagnostic Framework Parser
nloodin
parents:
5915
diff
changeset
|
299 |
51612f0c0a79
7148488: Whitebox tests for the Diagnostic Framework Parser
nloodin
parents:
5915
diff
changeset
|
300 bool WhiteBox::lookup_bool(const char* field_name, oop object) { |
51612f0c0a79
7148488: Whitebox tests for the Diagnostic Framework Parser
nloodin
parents:
5915
diff
changeset
|
301 int offset = |
51612f0c0a79
7148488: Whitebox tests for the Diagnostic Framework Parser
nloodin
parents:
5915
diff
changeset
|
302 offset_for_field(field_name, object, vmSymbols::bool_signature()); |
51612f0c0a79
7148488: Whitebox tests for the Diagnostic Framework Parser
nloodin
parents:
5915
diff
changeset
|
303 bool ret = (object->bool_field(offset) == JNI_TRUE); |
51612f0c0a79
7148488: Whitebox tests for the Diagnostic Framework Parser
nloodin
parents:
5915
diff
changeset
|
304 return ret; |
51612f0c0a79
7148488: Whitebox tests for the Diagnostic Framework Parser
nloodin
parents:
5915
diff
changeset
|
305 } |
51612f0c0a79
7148488: Whitebox tests for the Diagnostic Framework Parser
nloodin
parents:
5915
diff
changeset
|
306 |
51612f0c0a79
7148488: Whitebox tests for the Diagnostic Framework Parser
nloodin
parents:
5915
diff
changeset
|
307 |
5915 | 308 #define CC (char*) |
309 | |
310 static JNINativeMethod methods[] = { | |
311 {CC"getObjectAddress", CC"(Ljava/lang/Object;)J", (void*)&WB_GetObjectAddress }, | |
312 {CC"getHeapOopSize", CC"()I", (void*)&WB_GetHeapOopSize }, | |
8051
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
313 {CC"isClassAlive0", CC"(Ljava/lang/String;)Z", (void*)&WB_IsClassAlive }, |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
314 {CC"parseCommandLine", |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
315 CC"(Ljava/lang/String;[Lsun/hotspot/parser/DiagnosticCommand;)[Ljava/lang/Object;", |
5978
51612f0c0a79
7148488: Whitebox tests for the Diagnostic Framework Parser
nloodin
parents:
5915
diff
changeset
|
316 (void*) &WB_ParseCommandLine |
51612f0c0a79
7148488: Whitebox tests for the Diagnostic Framework Parser
nloodin
parents:
5915
diff
changeset
|
317 }, |
8001
db9981fd3124
8005915: Unify SERIALGC and INCLUDE_ALTERNATE_GCS
jprovino
parents:
6725
diff
changeset
|
318 #if INCLUDE_ALL_GCS |
5915 | 319 {CC"g1InConcurrentMark", CC"()Z", (void*)&WB_G1InConcurrentMark}, |
320 {CC"g1IsHumongous", CC"(Ljava/lang/Object;)Z", (void*)&WB_G1IsHumongous }, | |
321 {CC"g1NumFreeRegions", CC"()J", (void*)&WB_G1NumFreeRegions }, | |
322 {CC"g1RegionSize", CC"()I", (void*)&WB_G1RegionSize }, | |
8001
db9981fd3124
8005915: Unify SERIALGC and INCLUDE_ALTERNATE_GCS
jprovino
parents:
6725
diff
changeset
|
323 #endif // INCLUDE_ALL_GCS |
7971
4102b59539ce
8005012: Add WB APIs to better support NMT testing
ctornqvi
parents:
6725
diff
changeset
|
324 #ifdef INCLUDE_NMT |
4102b59539ce
8005012: Add WB APIs to better support NMT testing
ctornqvi
parents:
6725
diff
changeset
|
325 {CC"NMTAllocTest", CC"()Z", (void*)&WB_NMTAllocTest }, |
4102b59539ce
8005012: Add WB APIs to better support NMT testing
ctornqvi
parents:
6725
diff
changeset
|
326 {CC"NMTFreeTestMemory", CC"()Z", (void*)&WB_NMTFreeTestMemory }, |
4102b59539ce
8005012: Add WB APIs to better support NMT testing
ctornqvi
parents:
6725
diff
changeset
|
327 {CC"NMTWaitForDataMerge",CC"()Z", (void*)&WB_NMTWaitForDataMerge}, |
4102b59539ce
8005012: Add WB APIs to better support NMT testing
ctornqvi
parents:
6725
diff
changeset
|
328 #endif // INCLUDE_NMT |
8051
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
329 {CC"deoptimizeAll", CC"()V", (void*)&WB_DeoptimizeAll }, |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
330 {CC"deoptimizeMethod", CC"(Ljava/lang/reflect/Method;)I", |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
331 (void*)&WB_DeoptimizeMethod }, |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
332 {CC"isMethodCompiled", CC"(Ljava/lang/reflect/Method;)Z", |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
333 (void*)&WB_IsMethodCompiled }, |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
334 {CC"isMethodCompilable", CC"(Ljava/lang/reflect/Method;)Z", |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
335 (void*)&WB_IsMethodCompilable}, |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
336 {CC"isMethodQueuedForCompilation", |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
337 CC"(Ljava/lang/reflect/Method;)Z", (void*)&WB_IsMethodQueuedForCompilation}, |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
338 {CC"makeMethodNotCompilable", |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
339 CC"(Ljava/lang/reflect/Method;)V", (void*)&WB_MakeMethodNotCompilable}, |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
340 {CC"setDontInlineMethod", |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
341 CC"(Ljava/lang/reflect/Method;Z)Z", (void*)&WB_SetDontInlineMethod}, |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
342 {CC"getMethodCompilationLevel", |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
343 CC"(Ljava/lang/reflect/Method;)I", (void*)&WB_GetMethodCompilationLevel}, |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
344 {CC"getCompileQueuesSize", |
12e01444ca2d
8006683: Add WhiteBox API to testing of compiler
iignatyev
parents:
8003
diff
changeset
|
345 CC"()I", (void*)&WB_GetCompileQueuesSize}, |
5915 | 346 }; |
347 | |
348 #undef CC | |
349 | |
350 JVM_ENTRY(void, JVM_RegisterWhiteBoxMethods(JNIEnv* env, jclass wbclass)) | |
351 { | |
352 if (WhiteBoxAPI) { | |
353 // Make sure that wbclass is loaded by the null classloader | |
354 instanceKlassHandle ikh = instanceKlassHandle(JNIHandles::resolve(wbclass)->klass()); | |
355 Handle loader(ikh->class_loader()); | |
356 if (loader.is_null()) { | |
357 ThreadToNativeFromVM ttnfv(thread); // can't be in VM when we call JNI | |
358 jint result = env->RegisterNatives(wbclass, methods, sizeof(methods)/sizeof(methods[0])); | |
359 if (result == 0) { | |
360 WhiteBox::set_used(); | |
361 } | |
362 } | |
363 } | |
364 } | |
365 JVM_END |