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

Andrew Haley aph at openjdk.java.net
Wed Oct 6 08:31:07 UTC 2021


On Mon, 4 Oct 2021 22:42:33 GMT, Reka Kovacs <github.com+25946952+rnkovacs at openjdk.org> wrote:

>> 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.

Looks to me like the only real issue here is `warn()`. `stop()` doesn't restore the registers, so that's fine. We do want to see all the registers in a register dump. It would be better if `pusha()` were left as it is, but `popa()` did not clobber r18.

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

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


More information about the jdk-updates-dev mailing list