RFR JDK-8059510 Compact symbol table layout inside shared archive

Jiangli Zhou jiangli.zhou at oracle.com
Wed Dec 3 23:38:52 UTC 2014


Hi Ioi,
>
> I think these two blocks can be rewritten to avoid the use of the #ifdef
>  162 #ifdef _LP64
>  163   *p++ = juint(base_address >> 32);
>  164 #else
>  165   *p++ = 0;
>  166 #endif
>  167   *p++ = juint(base_address & 0xffffffff); // base address
>
>  205   juint upper = *p++;
>  206   juint lower = *p++;
>  207 #ifdef _LP64
>  208   _base_address = (uintx(upper) << 32 ) + uintx(lower);
>  209 #else
>  210   _base_address = uintx(lower);
>  211 #endif
>
> ->
>
> 163   *p++ = juint(base_address >> 32);
>  167   *p++ = juint(base_address & 0xffffffff);
>
>  205   juint upper = *p++;
>  206   juint lower = *p++;
>  208   _base_address = (uintx(upper) << 32 ) + uintx(lower);
>

Actually it would have problem on 32-bit platforms. The behaviour of 
shift by greater than or equal to the number of bits that exist in the 
operand is undefined. Gcc gives warning about the >>32 on linux-x86.

Thanks,
Jiangli




More information about the hotspot-runtime-dev mailing list