[master] RFR: Fix loading Klass* in C1 on AArch64

Aleksey Shipilev shade at openjdk.java.net
Fri Jan 21 11:15:22 UTC 2022


On Tue, 18 Jan 2022 08:44:25 GMT, Roman Kennke <rkennke at openjdk.org> wrote:

> PR #20 was not quite correct on AArch64:
> - We cannot push/pop r0 in the code stub, because we must not mess with SP there, otherwise the argument passing does not work.
> - We should use far_call() and not far_jump(), so that the return comes back into the stub, and not to the continuation (or whereever LR points to).
> 
> Testing:
>  - [x] tier1
>  - [x] tier2
>  - [x] tier3

Why this new stub is different, i.e. why can it return not in `r0`? I am looking at e.g. `NewObjectArrayStub::emit_code`, and it has `assert(_result->as_register() == r0, "result must in r0");`. In fact, I cannot see any stub call with `far_call` that saves the registers itself...

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

PR: https://git.openjdk.java.net/lilliput/pull/34


More information about the lilliput-dev mailing list