diff options
author | kevinw <none@none> | 2015-12-02 13:58:34 +0530 |
---|---|---|
committer | kevinw <none@none> | 2015-12-02 13:58:34 +0530 |
commit | 875427cc229b02e1392e46008a15ad49b7fbfa56 (patch) | |
tree | cc8cb90d8c2fa8fd2de6407ff792b30b6250442b /src/share/vm/prims/whitebox.cpp | |
parent | e04013f9c6dccf403b13c79a791030cc34e5e147 (diff) | |
download | jdk8u_hotspot-875427cc229b02e1392e46008a15ad49b7fbfa56.tar.gz |
8065579: WB method to start G1 concurrent mark cycle should be introduced
Summary: Add a WhiteBox callback to the VM to start a concurrent mark cycle in G1.
Reviewed-by: tschatzl, sjohanss
Contributed-by: Leonid Mesnik <leonid.mesnik@oracle.com>
Diffstat (limited to 'src/share/vm/prims/whitebox.cpp')
-rw-r--r-- | src/share/vm/prims/whitebox.cpp | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/share/vm/prims/whitebox.cpp b/src/share/vm/prims/whitebox.cpp index ddf702d20..ef1da19d2 100644 --- a/src/share/vm/prims/whitebox.cpp +++ b/src/share/vm/prims/whitebox.cpp @@ -45,6 +45,7 @@ #if INCLUDE_ALL_GCS #include "gc_implementation/parallelScavenge/parallelScavengeHeap.inline.hpp" #include "gc_implementation/g1/concurrentMark.hpp" +#include "gc_implementation/g1/concurrentMarkThread.hpp" #include "gc_implementation/g1/g1CollectedHeap.inline.hpp" #include "gc_implementation/g1/heapRegionRemSet.hpp" #endif // INCLUDE_ALL_GCS @@ -323,8 +324,16 @@ WB_END WB_ENTRY(jboolean, WB_G1InConcurrentMark(JNIEnv* env, jobject o)) G1CollectedHeap* g1 = G1CollectedHeap::heap(); - ConcurrentMark* cm = g1->concurrent_mark(); - return cm->concurrent_marking_in_progress(); + return g1->concurrent_mark()->cmThread()->during_cycle(); +WB_END + +WB_ENTRY(jboolean, WB_G1StartMarkCycle(JNIEnv* env, jobject o)) + G1CollectedHeap* g1h = G1CollectedHeap::heap(); + if (!g1h->concurrent_mark()->cmThread()->during_cycle()) { + g1h->collect(GCCause::_wb_conc_mark); + return true; + } + return false; WB_END WB_ENTRY(jint, WB_G1RegionSize(JNIEnv* env, jobject o)) @@ -1031,6 +1040,7 @@ static JNINativeMethod methods[] = { {CC"g1NumMaxRegions", CC"()J", (void*)&WB_G1NumMaxRegions }, {CC"g1NumFreeRegions", CC"()J", (void*)&WB_G1NumFreeRegions }, {CC"g1RegionSize", CC"()I", (void*)&WB_G1RegionSize }, + {CC"g1StartConcMarkCycle", CC"()Z", (void*)&WB_G1StartMarkCycle }, {CC"g1AuxiliaryMemoryUsage", CC"()Ljava/lang/management/MemoryUsage;", (void*)&WB_G1AuxiliaryMemoryUsage }, #endif // INCLUDE_ALL_GCS |