7021531: lock ordering problems after fix for 6354181

Reviewed-by: kvn, jrose
This commit is contained in:
Tom Rodriguez 2011-02-22 15:26:36 -08:00
parent 4b3ada699d
commit 8967db2c35
3 changed files with 30 additions and 0 deletions

View file

@ -699,6 +699,17 @@ void ttyLocker::release_tty(intx holder) {
defaultStream::instance->release(holder);
}
bool ttyLocker::release_tty_if_locked() {
intx thread_id = os::current_thread_id();
if (defaultStream::instance->writer() == thread_id) {
// release the lock and return true so callers know if was
// previously held.
release_tty(thread_id);
return true;
}
return false;
}
void ttyLocker::break_tty_lock_for_safepoint(intx holder) {
if (defaultStream::instance != NULL &&
defaultStream::instance->writer() == holder) {