< prev index next >
src/os/solaris/vm/threadCritical_solaris.cpp
Print this page
*** 46,57 ****
ThreadCritical::ThreadCritical() {
if (initialized) {
thread_t owner = thr_self();
if (global_mut_owner != owner) {
if (os::Solaris::mutex_lock(&global_mut))
! fatal(err_msg("ThreadCritical::ThreadCritical: mutex_lock failed (%s)",
! strerror(errno)));
assert(global_mut_count == 0, "must have clean count");
assert(global_mut_owner == -1, "must have clean owner");
}
global_mut_owner = owner;
++global_mut_count;
--- 46,57 ----
ThreadCritical::ThreadCritical() {
if (initialized) {
thread_t owner = thr_self();
if (global_mut_owner != owner) {
if (os::Solaris::mutex_lock(&global_mut))
! fatal("ThreadCritical::ThreadCritical: mutex_lock failed (%s)",
! strerror(errno));
assert(global_mut_count == 0, "must have clean count");
assert(global_mut_owner == -1, "must have clean owner");
}
global_mut_owner = owner;
++global_mut_count;
*** 66,77 ****
assert(global_mut_count > 0, "must have correct count");
--global_mut_count;
if (global_mut_count == 0) {
global_mut_owner = -1;
if (os::Solaris::mutex_unlock(&global_mut))
! fatal(err_msg("ThreadCritical::~ThreadCritical: mutex_unlock failed "
! "(%s)", strerror(errno)));
}
} else {
assert (Threads::number_of_threads() == 0, "valid only during initialization");
}
}
--- 66,76 ----
assert(global_mut_count > 0, "must have correct count");
--global_mut_count;
if (global_mut_count == 0) {
global_mut_owner = -1;
if (os::Solaris::mutex_unlock(&global_mut))
! fatal("ThreadCritical::~ThreadCritical: mutex_unlock failed (%s)", strerror(errno));
}
} else {
assert (Threads::number_of_threads() == 0, "valid only during initialization");
}
}
< prev index next >