1.1 --- a/src/share/vm/prims/whitebox.cpp Tue Dec 15 09:46:51 2015 +0100 1.2 +++ b/src/share/vm/prims/whitebox.cpp Wed Dec 02 13:58:34 2015 +0530 1.3 @@ -45,6 +45,7 @@ 1.4 #if INCLUDE_ALL_GCS 1.5 #include "gc_implementation/parallelScavenge/parallelScavengeHeap.inline.hpp" 1.6 #include "gc_implementation/g1/concurrentMark.hpp" 1.7 +#include "gc_implementation/g1/concurrentMarkThread.hpp" 1.8 #include "gc_implementation/g1/g1CollectedHeap.inline.hpp" 1.9 #include "gc_implementation/g1/heapRegionRemSet.hpp" 1.10 #endif // INCLUDE_ALL_GCS 1.11 @@ -323,8 +324,16 @@ 1.12 1.13 WB_ENTRY(jboolean, WB_G1InConcurrentMark(JNIEnv* env, jobject o)) 1.14 G1CollectedHeap* g1 = G1CollectedHeap::heap(); 1.15 - ConcurrentMark* cm = g1->concurrent_mark(); 1.16 - return cm->concurrent_marking_in_progress(); 1.17 + return g1->concurrent_mark()->cmThread()->during_cycle(); 1.18 +WB_END 1.19 + 1.20 +WB_ENTRY(jboolean, WB_G1StartMarkCycle(JNIEnv* env, jobject o)) 1.21 + G1CollectedHeap* g1h = G1CollectedHeap::heap(); 1.22 + if (!g1h->concurrent_mark()->cmThread()->during_cycle()) { 1.23 + g1h->collect(GCCause::_wb_conc_mark); 1.24 + return true; 1.25 + } 1.26 + return false; 1.27 WB_END 1.28 1.29 WB_ENTRY(jint, WB_G1RegionSize(JNIEnv* env, jobject o)) 1.30 @@ -1031,6 +1040,7 @@ 1.31 {CC"g1NumMaxRegions", CC"()J", (void*)&WB_G1NumMaxRegions }, 1.32 {CC"g1NumFreeRegions", CC"()J", (void*)&WB_G1NumFreeRegions }, 1.33 {CC"g1RegionSize", CC"()I", (void*)&WB_G1RegionSize }, 1.34 + {CC"g1StartConcMarkCycle", CC"()Z", (void*)&WB_G1StartMarkCycle }, 1.35 {CC"g1AuxiliaryMemoryUsage", CC"()Ljava/lang/management/MemoryUsage;", 1.36 (void*)&WB_G1AuxiliaryMemoryUsage }, 1.37 #endif // INCLUDE_ALL_GCS