RFR(S): 8183571: PPC64 build broken after 8178499
Doerr, Martin
martin.doerr at sap.com
Wed Jul 5 15:02:30 UTC 2017
Hi Stefan,
thank you very much for your feedback.
New webrev:
http://cr.openjdk.java.net/~mdoerr/8183571_fix_PPC64_build/webrev.01/
Using static const int makes it easier to maintain, so I'm using this, now. The other enum isn't needed any more, so I've removed it.
I also changed the cast in vm_version as you proposed. It's better to cast only once.
The 2 functional changes are what I had called "(Contains minor PPC code improvements.)":
The "case 0" in c1_Runtime1 just fixes a case which is currently unused in openJDK.
The additional check in vm_version_ppc prevents code for Power8 from incorrently running on Power5. Nothing critical.
I'll try to find another reviewer for this.
Best regards,
Martin
-----Original Message-----
From: Stefan Karlsson [mailto:stefan.karlsson at oracle.com]
Sent: Mittwoch, 5. Juli 2017 16:28
To: Doerr, Martin <martin.doerr at sap.com>; hotspot-runtime-dev at openjdk.java.net
Subject: Re: RFR(S): 8183571: PPC64 build broken after 8178499
Sorry for multiple mails, but I now also see that you added other
unrelated changes:
@@ -286,10 +286,11 @@
__ ld(R6_ARG4, frame_size_in_bytes + padding + 16, R1_SP);
case 2:
__ ld(R5_ARG3, frame_size_in_bytes + padding + 8, R1_SP);
case 1:
__ ld(R4_ARG2, frame_size_in_bytes + padding + 0, R1_SP);
+ case 0:
call_offset = __ call_RT(noreg, noreg, target);
break;
default: Unimplemented(); break;
}
OopMapSet* oop_maps = new OopMapSet();
You can count me as a Reviewer for the align issues caused by 8178499,
but you need to leave the rest out of this patch if you want to use me
as a Reviewer.
StefanK
On 2017-07-05 16:23, Stefan Karlsson wrote:
> 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