8044339: Update FilterSpuriousWakeups documentation. Review "Solaris only" vm options descriptions
Reviewed-by: kvn, dholmes, iignatyev
--- a/hotspot/src/os/aix/vm/os_aix.cpp Mon Jun 02 15:48:34 2014 -0700
+++ b/hotspot/src/os/aix/vm/os_aix.cpp Wed Jun 04 00:25:21 2014 +0400
@@ -4734,10 +4734,8 @@
//
// Thread.interrupt and object.notify{All} both call Event::set.
// That is, we treat thread.interrupt as a special case of notification.
- // The underlying Solaris implementation, cond_timedwait, admits
- // spurious/premature wakeups, but the JLS/JVM spec prevents the
- // JVM from making those visible to Java code. As such, we must
- // filter out spurious wakeups. We assume all ETIME returns are valid.
+ // We ignore spurious OS wakeups unless FilterSpuriousWakeups is false.
+ // We assume all ETIME returns are valid.
//
// TODO: properly differentiate simultaneous notify+interrupt.
// In that case, we should propagate the notify to another waiter.
--- a/hotspot/src/os/bsd/vm/os_bsd.cpp Mon Jun 02 15:48:34 2014 -0700
+++ b/hotspot/src/os/bsd/vm/os_bsd.cpp Wed Jun 04 00:25:21 2014 +0400
@@ -4299,10 +4299,8 @@
//
// Thread.interrupt and object.notify{All} both call Event::set.
// That is, we treat thread.interrupt as a special case of notification.
- // The underlying Solaris implementation, cond_timedwait, admits
- // spurious/premature wakeups, but the JLS/JVM spec prevents the
- // JVM from making those visible to Java code. As such, we must
- // filter out spurious wakeups. We assume all ETIME returns are valid.
+ // We ignore spurious OS wakeups unless FilterSpuriousWakeups is false.
+ // We assume all ETIME returns are valid.
//
// TODO: properly differentiate simultaneous notify+interrupt.
// In that case, we should propagate the notify to another waiter.
--- a/hotspot/src/os/linux/vm/os_linux.cpp Mon Jun 02 15:48:34 2014 -0700
+++ b/hotspot/src/os/linux/vm/os_linux.cpp Wed Jun 04 00:25:21 2014 +0400
@@ -5538,10 +5538,8 @@
//
// Thread.interrupt and object.notify{All} both call Event::set.
// That is, we treat thread.interrupt as a special case of notification.
- // The underlying Solaris implementation, cond_timedwait, admits
- // spurious/premature wakeups, but the JLS/JVM spec prevents the
- // JVM from making those visible to Java code. As such, we must
- // filter out spurious wakeups. We assume all ETIME returns are valid.
+ // We ignore spurious OS wakeups unless FilterSpuriousWakeups is false.
+ // We assume all ETIME returns are valid.
//
// TODO: properly differentiate simultaneous notify+interrupt.
// In that case, we should propagate the notify to another waiter.
--- a/hotspot/src/share/vm/runtime/globals.hpp Mon Jun 02 15:48:34 2014 -0700
+++ b/hotspot/src/share/vm/runtime/globals.hpp Wed Jun 04 00:25:21 2014 +0400
@@ -1097,7 +1097,7 @@
"Call loadClassInternal() rather than loadClass()") \
\
product_pd(bool, DontYieldALot, \
- "Throw away obvious excess yield calls (for Solaris only)") \
+ "Throw away obvious excess yield calls") \
\
product_pd(bool, ConvertSleepToYield, \
"Convert sleep(0) to thread yield " \
@@ -1105,7 +1105,7 @@
\
product(bool, ConvertYieldToSleep, false, \
"Convert yield to a sleep of MinSleepInterval to simulate Win32 " \
- "behavior (Solaris only)") \
+ "behavior") \
\
product(bool, UseBoundThreads, true, \
"Bind user level threads to kernel threads (for Solaris only)") \
@@ -1143,8 +1143,8 @@
"avoid NPTL-FUTEX hang pthread_cond_timedwait") \
\
product(bool, FilterSpuriousWakeups, true, \
- "Prevent spurious or premature wakeups from object.wait " \
- "(Solaris only)") \
+ "When true prevents OS-level spurious, or premature, wakeups " \
+ "from Object.wait (Ignored for Windows)") \
\
product(intx, NativeMonitorTimeout, -1, "(Unstable)") \
\