34 #include "prims/wbtestmethods/parserTests.hpp" |
34 #include "prims/wbtestmethods/parserTests.hpp" |
35 |
35 |
36 #include "runtime/interfaceSupport.hpp" |
36 #include "runtime/interfaceSupport.hpp" |
37 #include "runtime/os.hpp" |
37 #include "runtime/os.hpp" |
38 #include "utilities/debug.hpp" |
38 #include "utilities/debug.hpp" |
39 |
39 #include "utilities/macros.hpp" |
40 #ifndef SERIALGC |
40 |
|
41 #if INCLUDE_ALL_GCS |
41 #include "gc_implementation/g1/concurrentMark.hpp" |
42 #include "gc_implementation/g1/concurrentMark.hpp" |
42 #include "gc_implementation/g1/g1CollectedHeap.inline.hpp" |
43 #include "gc_implementation/g1/g1CollectedHeap.inline.hpp" |
43 #include "gc_implementation/g1/heapRegionRemSet.hpp" |
44 #include "gc_implementation/g1/heapRegionRemSet.hpp" |
44 #endif // !SERIALGC |
45 #endif // INCLUDE_ALL_GCS |
45 |
46 |
46 bool WhiteBox::_used = false; |
47 bool WhiteBox::_used = false; |
47 |
48 |
48 WB_ENTRY(jlong, WB_GetObjectAddress(JNIEnv* env, jobject o, jobject obj)) |
49 WB_ENTRY(jlong, WB_GetObjectAddress(JNIEnv* env, jobject o, jobject obj)) |
49 return (jlong)(void*)JNIHandles::resolve(obj); |
50 return (jlong)(void*)JNIHandles::resolve(obj); |
83 ClassLoaderDataGraph::classes_do(&closure); |
84 ClassLoaderDataGraph::classes_do(&closure); |
84 |
85 |
85 return closure.found(); |
86 return closure.found(); |
86 WB_END |
87 WB_END |
87 |
88 |
88 #ifndef SERIALGC |
89 #if INCLUDE_ALL_GCS |
89 WB_ENTRY(jboolean, WB_G1IsHumongous(JNIEnv* env, jobject o, jobject obj)) |
90 WB_ENTRY(jboolean, WB_G1IsHumongous(JNIEnv* env, jobject o, jobject obj)) |
90 G1CollectedHeap* g1 = G1CollectedHeap::heap(); |
91 G1CollectedHeap* g1 = G1CollectedHeap::heap(); |
91 oop result = JNIHandles::resolve(obj); |
92 oop result = JNIHandles::resolve(obj); |
92 const HeapRegion* hr = g1->heap_region_containing(result); |
93 const HeapRegion* hr = g1->heap_region_containing(result); |
93 return hr->isHumongous(); |
94 return hr->isHumongous(); |
106 WB_END |
107 WB_END |
107 |
108 |
108 WB_ENTRY(jint, WB_G1RegionSize(JNIEnv* env, jobject o)) |
109 WB_ENTRY(jint, WB_G1RegionSize(JNIEnv* env, jobject o)) |
109 return (jint)HeapRegion::GrainBytes; |
110 return (jint)HeapRegion::GrainBytes; |
110 WB_END |
111 WB_END |
111 #endif // !SERIALGC |
112 #endif // INCLUDE_ALL_GCS |
112 |
113 |
113 //Some convenience methods to deal with objects from java |
114 //Some convenience methods to deal with objects from java |
114 int WhiteBox::offset_for_field(const char* field_name, oop object, |
115 int WhiteBox::offset_for_field(const char* field_name, oop object, |
115 Symbol* signature_symbol) { |
116 Symbol* signature_symbol) { |
116 assert(field_name != NULL && strlen(field_name) > 0, "Field name not valid"); |
117 assert(field_name != NULL && strlen(field_name) > 0, "Field name not valid"); |
169 {CC"isClassAlive0", CC"(Ljava/lang/String;)Z", (void*)&WB_IsClassAlive }, |
170 {CC"isClassAlive0", CC"(Ljava/lang/String;)Z", (void*)&WB_IsClassAlive }, |
170 {CC "parseCommandLine", |
171 {CC "parseCommandLine", |
171 CC "(Ljava/lang/String;[Lsun/hotspot/parser/DiagnosticCommand;)[Ljava/lang/Object;", |
172 CC "(Ljava/lang/String;[Lsun/hotspot/parser/DiagnosticCommand;)[Ljava/lang/Object;", |
172 (void*) &WB_ParseCommandLine |
173 (void*) &WB_ParseCommandLine |
173 }, |
174 }, |
174 #ifndef SERIALGC |
175 #if INCLUDE_ALL_GCS |
175 {CC"g1InConcurrentMark", CC"()Z", (void*)&WB_G1InConcurrentMark}, |
176 {CC"g1InConcurrentMark", CC"()Z", (void*)&WB_G1InConcurrentMark}, |
176 {CC"g1IsHumongous", CC"(Ljava/lang/Object;)Z", (void*)&WB_G1IsHumongous }, |
177 {CC"g1IsHumongous", CC"(Ljava/lang/Object;)Z", (void*)&WB_G1IsHumongous }, |
177 {CC"g1NumFreeRegions", CC"()J", (void*)&WB_G1NumFreeRegions }, |
178 {CC"g1NumFreeRegions", CC"()J", (void*)&WB_G1NumFreeRegions }, |
178 {CC"g1RegionSize", CC"()I", (void*)&WB_G1RegionSize }, |
179 {CC"g1RegionSize", CC"()I", (void*)&WB_G1RegionSize }, |
179 #endif // !SERIALGC |
180 #endif // INCLUDE_ALL_GCS |
180 }; |
181 }; |
181 |
182 |
182 #undef CC |
183 #undef CC |
183 |
184 |
184 JVM_ENTRY(void, JVM_RegisterWhiteBoxMethods(JNIEnv* env, jclass wbclass)) |
185 JVM_ENTRY(void, JVM_RegisterWhiteBoxMethods(JNIEnv* env, jclass wbclass)) |