RFR: 8256025: AArch64: MachCallRuntimeNode::ret_addr_offset() is incorrect for stub calls [v2]
Nick Gasson
ngasson at openjdk.java.net
Wed Nov 11 02:27:09 UTC 2020
On Tue, 10 Nov 2020 11:03:41 GMT, Jorn Vernee <jvernee at openjdk.org> wrote:
>> So here's a weird thing: this code has been wrong forever, but apparently it never mattered. I wonder why it didn't break anything before now.
>
> @theRealAph The bug that this catches manifests when the reported return offset lines up _exactly_ with that of a later call. In that case two calls will use the same PC for their oop map, and one will be overwritten.
>
> Maybe we've been lucky that this is never actually the case for ARM, but I'd imaging the oop map annotation in PrintAssembly output might be in the wrong place, and the oop map offset it prints should be wrong. But, as long as the return PC it reports is unique, I don't think it will cause an immediate problem to functionality.
Fixed the comment: `trampoline_call` generates `bl` not `blr`.
-------------
PR: https://git.openjdk.java.net/jdk/pull/1138
More information about the hotspot-compiler-dev
mailing list