< 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 >