RFR(XS): 8205172: 32 bit build broken

David Holmes david.holmes at oracle.com
Tue Jun 19 05:53:18 UTC 2018


On 19/06/2018 12:10 AM, Doerr, Martin wrote:
> Hi,
> 
> 32 bit build is currently broken due to:
> "trap_mask": jdk/src/hotspot/share/oops/methodData.hpp(142) : warning C4293: '<<' : shift count negative or too big, undefined behavior
> "PrngModMask": jdk/src/hotspot/share/runtime/threadHeapSampler.cpp(50) : warning C4293: '<<' : shift count negative or too big, undefined behavior

     const uint64_t PrngModPower = 48;
!   const uint64_t PrngModMask = right_n_bits(PrngModPower);

So right_n_bits(48) should expand to:

(nth_bit(48) - 1)

where nth_bit is:

(((n) >= BitsPerWord) ? 0 : (OneBit << (n)))

so the compiler is complaining that (OneBit << 48) is undefined, but the 
conditional operator will not execute that path (as BitsPerWord == 32). 
That seems like a compiler bug to me. :(

David
-----

> Please review this small fix:
> http://cr.openjdk.java.net/~mdoerr/8205172_32bit_build/webrev.00/
> 
> Best regards,
> Martin
> 


More information about the hotspot-dev mailing list