[jdk11u-dev] RFR: 8248238: Implementation: JEP 388: Windows AArch64 Support [v3]

Reka Kovacs github.com+25946952+rnkovacs at openjdk.java.net
Mon Oct 4 22:45:09 UTC 2021


On Wed, 8 Sep 2021 13:13:30 GMT, Andrew Haley <aph at openjdk.org> wrote:

>> please take a look at 
>> 
>> definition:
>> https://github.com/openjdk/jdk11u-dev/pull/301/files#diff-0f4150a9c607ccd590bf256daa800c0276144682a92bc6bdced5e8bc1bb81f3aR2547
>> 
>> and call site:
>> 
>> https://github.com/openjdk/jdk11u-dev/pull/301/files#diff-9112056f732229b18fec48fb0b20a3fe824de49d0abd41fbdb4202cfe70ad114R1290
>> 
>> call site doesn't expect rscratch2 to be removed from the list
>
> Looking at the actual change make to development head, this is a misapplied patch. To match head, this should be:
> 
> 
> RegSet MacroAssembler::call_clobbered_registers() {
>   RegSet regs = RegSet::range(r0, r17) - RegSet::of(rscratch1, rscratch2);
> #ifndef R18_RESERVED
>   regs += r18_tls;
> #endif
>   return regs;
> }
> void MacroAssembler::push_call_clobbered_registers() {
>   int step = 4 * wordSize;
>   push(call_clobbered_registers(), sp);
> 
> Strictly speaking it should also push rscratch1 and rscratch2 - they are call clobbered - but we don't care because any macro can trash rscratch1 and rscratch2, so there's no point saving and restoring them.

@theRealAph you're right about `push_call_clobbered_registers()`, but I think `call_clobbered_registers()` is actually fine the way it is. The register named `r18_tls` on tip has been renamed to `r18_reserved` in this backport.

-------------

PR: https://git.openjdk.java.net/jdk11u-dev/pull/301


More information about the jdk-updates-dev mailing list