(XS) RFR: 8056183: os::is_MP() always reports true when NMT is enabled

David Holmes david.holmes at oracle.com
Tue Sep 9 05:50:13 UTC 2014


webrev:

http://cr.openjdk.java.net/~dholmes/8056183/webrev/

This is a confidential bug so here is the background:

The NMT code uses atomics very early in the initialization process, 
before _processor_count has been initialized, and so it would hit the 
assertion in is_MP that _processor_count > 0. To workaround that it was 
assumed that if NMT were present then we could just assume a MP system 
and have is_MP return true. That change was made under 8046598.

However that is an invalid assumption on some platforms and will lead to 
incorrect code generation. The real fix for the original assertion 
failure is to just remove the assertion as weakening it to check >= 0 
would serve no point. Further we already assert that _processor_count is 
 > 0 when we actually initialize it. Having is_MP return false during 
the early stages of initialization is okay because the VM is 
single-threaded at that point. However, we must be vigilant to ensure 
that we don't make any long term decisions (such as code generation 
choices) based on is_MP during this pre-initialization phase.

So this change reverts the change from 8046598 and removes the assertion.

Testing: JPRT

Pushing to hs-rt/hotspot

Thanks,
David


More information about the hotspot-runtime-dev mailing list