[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