aboutsummaryrefslogtreecommitdiff
path: root/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp
diff options
context:
space:
mode:
authorjmasa <none@none>2009-02-08 13:18:01 -0800
committerjmasa <none@none>2009-02-08 13:18:01 -0800
commitfdeb5e6a6d5aa02f88759dff40b3512334e51e86 (patch)
treefd9d8827471b858608dbff21013ef61461110454 /src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp
parentfb0380030e41433ce11ffa2ebd470a474c83637e (diff)
downloadjdk8u_hotspot-fdeb5e6a6d5aa02f88759dff40b3512334e51e86.tar.gz
6690928: Use spinning in combination with yields for workstealing termination.
Summary: Substitute a spin loop for most calls to yield() to reduce the stress on the system. Reviewed-by: tonyp
Diffstat (limited to 'src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp')
-rw-r--r--src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp b/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp
index 506174b9d..1c6766b99 100644
--- a/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp
+++ b/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp
@@ -949,6 +949,10 @@ void G1CollectedHeap::do_collection(bool full, bool clear_all_soft_refs,
GCOverheadReporter::recordSTWEnd(end);
g1_policy()->record_full_collection_end();
+#ifdef TRACESPINNING
+ ParallelTaskTerminator::print_termination_counts();
+#endif
+
gc_epilogue(true);
// Abandon concurrent refinement. This must happen last: in the
@@ -2647,8 +2651,13 @@ G1CollectedHeap::do_collection_pause_at_safepoint(HeapRegion* popular_region) {
}
}
- if (mark_in_progress())
+ if (mark_in_progress()) {
concurrent_mark()->update_g1_committed();
+ }
+
+#ifdef TRACESPINNING
+ ParallelTaskTerminator::print_termination_counts();
+#endif
gc_epilogue(false);
}