diff src/share/vm/utilities/ostream.cpp @ 2263:5841dc1964f0

7021531: lock ordering problems after fix for 6354181 Reviewed-by: kvn, jrose
author never
date Tue, 22 Feb 2011 15:26:36 -0800
parents d8a72fbc4be7
children 29524004ce17
line wrap: on
line diff
--- a/src/share/vm/utilities/ostream.cpp	Wed Feb 09 15:02:23 2011 -0800
+++ b/src/share/vm/utilities/ostream.cpp	Tue Feb 22 15:26:36 2011 -0800
@@ -699,6 +699,17 @@
   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) {