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