RFR(S): 8183571: PPC64 build broken after 8178499

Stefan Karlsson stefan.karlsson at oracle.com
Wed Jul 5 14:23:35 UTC 2017


On 2017-07-05 16:15, Stefan Karlsson wrote:
> Hi Marti,
> 
> On 2017-07-05 15:55, Doerr, Martin wrote:
>> Hi,
>>
>> I have fixed the PPC64 build:
>> http://cr.openjdk.java.net/~mdoerr/8183571_fix_PPC64_build/webrev.00/
>> (Contains minor PPC code improvements.)
>>
>> Please review.
> 
> Most looks good to me, but I'm not sure why this was needed because of 
> 8178499:
> -  if (has_mfdscr()) {
> +  if (PowerArchitecturePPC64 >= 8 && has_mfdscr()) {
> 
> I'm also not sure why you needed this change:
> -  (*test)(align_up(mid_of_test_area, 16), (uint64_t)0);
> +  (*test)((address)align_up((intptr_t)mid_of_test_area, 16), 0);

And now I read the bug report and understand why need to cast here.

Another way to write this could probably be:
(*test)(align_up((address)mid_of_test_area, 16), 0);

Or maybe even stop mixing address and char*, but that might be much 
larger task.

StefanK

> 
> Did you consider changing:
>    enum {
>      // stack alignment
>      alignment_in_bytes = 16,
>      // log_2(16*8 bits) = 7.
>      log_2_of_alignment_in_bits = 7
>    };
> 
> to the more type safe:
>      // stack alignment
>      static const int alignment_in_bytes = 16;
>      // log_2(16*8 bits) = 7.
>      static const int log_2_of_alignment_in_bits = 7
> 
> that way you wouldn't have to cast in code like this:
> -  const int frame_size_in_bytes  = align_up(register_save_size, 
> frame::alignment_in_bytes)
> +  const int frame_size_in_bytes  = align_up(register_save_size, 
> (int)frame::alignment_in_bytes)
> 
> StefanK
> 
>>
>> Best regards,
>> Martin
>>


More information about the hotspot-runtime-dev mailing list