[9] RFR (XS) 8044339: wrong comment for FilterSpuriousWakeups option

Lev Priima lev.priima at oracle.com
Fri May 30 15:57:16 UTC 2014


Thanks for comments, please look at update:
http://cr.openjdk.java.net/~iignatyev/lpriima/8044339/webrev.01/

Lev

On 05/30/2014 10:03 AM, David Holmes wrote:
> Hi Lev,
>
> On 30/05/2014 4:33 AM, Lev Priima wrote:
>> Please review and help me with integration:
>>
>> diff -r 102506d9d873 src/share/vm/runtime/globals.hpp
>> --- a/src/share/vm/runtime/globals.hpp    Wed May 28 14:42:00 2014 +0400
>> +++ b/src/share/vm/runtime/globals.hpp    Thu May 29 22:29:37 2014 +0400
>> @@ -1144,7 +1144,7 @@
>> \
>>     product(bool, FilterSpuriousWakeups,
>> true,                                \
>>             "Prevent spurious or premature wakeups from object.wait
>> "         \
>> -          "(Solaris
>> only)")                                                 \
>> +          "(Ignored for
>> Windows)")                                          \
>> \
>
> Sorry to make life complicated but as I put in the bug report:
>
> The "Solaris" part dates from the days when Solaris meant "not 
> Windows". :)
>
> A bigger problem here is that the main part of the description:
>
> "Prevent spurious or premature wakeups from object.wait "
>
> may not match what people expect - it depends on whether "filter" 
> means to remove the item being filtered, or to keep only the item 
> being filtered. It would clearer if it read "When true prevents ..." 
> but even then it is not accurate as this only excludes spurious 
> wakeups from the OS pthread_cond[timed]wait implementation - the JVM 
> can still induce its own "spurious wakeups". So the better description 
> would be:
>
> "When true prevents OS-level spurious, or premature, wakeups from 
> Object.wait"
>
> But it should also be noted that where this flag is checked there is 
> an even more inaccurate comment:
>
>   // 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.
>
> Ironically this comment appears in the linux and bsd versions but not 
> the Solaris one! Further it is incorrect - the JLS/JVMS does not 
> prevent spurious wakeups from being made visible to Java code. That 
> has always been the intent but it took until Java 5 before we got the 
> specification for Object.wait updated to make it clear.
>
> So really this is all legacy crud that should be removed along with 
> the other planned cleanups (ie removing the safe_cond_* functions and 
> WorkAroundNPTLTimedWaitHang) and the os_posix refactoring.
>
> ---
>
> Sorry to mess up your "starter" bug.
>
> David
>
>
>>     product(intx, NativeMonitorTimeout, -1,
>> "(Unstable)")                     \
>> \
>>
>> bug: https://bugs.openjdk.java.net/browse/JDK-8044339
>>



More information about the hotspot-runtime-dev mailing list