< prev index next >

src/hotspot/share/gc/shared/owstTaskTerminator.cpp

Print this page
rev 57895 : [mq]: 8215297-remove-ptt
rev 57896 : imported patch 8215297-some-cleanup

@@ -24,10 +24,11 @@
  */
 
 #include "precompiled.hpp"
 
 #include "gc/shared/owstTaskTerminator.hpp"
+#include "gc/shared/taskqueue.hpp"
 #include "logging/log.hpp"
 
 #ifdef TRACESPINNING
 uint OWSTTaskTerminator::_total_yields = 0;
 uint OWSTTaskTerminator::_total_spins = 0;

@@ -42,16 +43,16 @@
 
     _blocker = new Monitor(Mutex::leaf, "OWSTTaskTerminator", false, Monitor::_safepoint_check_never);
 }
 
 OWSTTaskTerminator::~OWSTTaskTerminator() {
+  assert(_offered_termination == 0 || !peek_in_queue_set(), "Precondition");
+  assert(_offered_termination == 0 || _offered_termination == _n_threads, "Terminated or aborted" );
+
   assert(_spin_master == NULL, "Should have been reset");
   assert(_blocker != NULL, "Can not be NULL");
   delete _blocker;
-
-  assert(_offered_termination == 0 || !peek_in_queue_set(), "Precondition");
-  assert(_offered_termination == 0 || _offered_termination == _n_threads, "Terminated or aborted" );
 }
 
 #ifdef ASSERT
 bool OWSTTaskTerminator::peek_in_queue_set() {
   return _queue_set->peek();

@@ -63,15 +64,12 @@
   os::naked_yield();
 }
 
 #ifdef TRACESPINNING
 void OWSTTaskTerminator::print_termination_counts() {
-  log_trace(gc, task)("ParallelTaskTerminator Total yields: %u"
-    " Total spins: %u Total peeks: %u",
-    total_yields(),
-    total_spins(),
-    total_peeks());
+  log_trace(gc, task)("TaskTerminator Yields: %u Spins: %u Peeks: %u",
+                      total_yields(), total_spins(), total_peeks());
 }
 #endif
 
 void OWSTTaskTerminator::reset_for_reuse() {
   if (_offered_termination != 0) {

@@ -88,10 +86,14 @@
 
 bool OWSTTaskTerminator::exit_termination(size_t tasks, TerminatorTerminator* terminator) {
   return tasks > 0 || (terminator != NULL && terminator->should_exit_termination());
 }
 
+size_t OWSTTaskTerminator::tasks_in_queue_set() const {
+  return _queue_set->tasks();
+}
+
 bool OWSTTaskTerminator::offer_termination(TerminatorTerminator* terminator) {
   assert(_n_threads > 0, "Initialization is incorrect");
   assert(_offered_termination < _n_threads, "Invariant");
   assert(_blocker != NULL, "Invariant");
 
< prev index next >