On Mon, 15 Nov 2021 11:30:35 GMT, Andrew Haley <a...@openjdk.org> wrote:
>> In the original code: >> *save r0 to the lr location on the stack >> *restore_live_registers >> *Standard return: remove stack frame, load lr and fp off the stack, jump to >> lr. >> >> With PAC it would now be: >> *Sign r0 then save it to the lr location on the stack >> *restore_live_registers >> *Standard return: remove stack frame, load lr and fp off the stack, auth lr, >> jump to lr. >> >> After reading the code in restore_live_registers, it doesn't touch lr and so >> seemed odd to have the save to the stack, only to restore it directly >> afterwards. > > That's an optimization, though. You shouldn't need to read the code in > `restore_live_registers()` to see if it's safe to keep the return address in > LR: at best it's pathological coupling, in the sense that the correctness of > this code depends on the internal details of `restore_live_registers()`. > Let's keep LR live ranges as short as possible. Ok, that's fine, I'll update it (It'll simplify the total code diff too). ------------- PR: https://git.openjdk.java.net/jdk/pull/6334