[lworld] Integrated: 8262863: [lworld] C2 should keep track of the oop even if an inline type is returned as fields
Tobias Hartmann
thartmann at openjdk.java.net
Thu Mar 4 06:51:47 UTC 2021
On Tue, 2 Mar 2021 15:32:24 GMT, Tobias Hartmann <thartmann at openjdk.org> wrote:
> If an inline type is returned, its fields are passed in registers if possible. The first register (rax) either contains a pointer to the InlineKlass to allow buffering in interpreted or C1 compiled callers or an oop if the inline type has already been buffered. Currently, a C2 compiled caller completely ignores the first register and just uses the field values returned in the other registers.
>
> With this patch, C2 checks if an oop is returned and keeps track of it to avoid unnecessary re-buffering. This significantly boosts performance of cases were inlining fails and the callee is interpreted, C1 compiled or had to buffer the inline type for another reason (for example, due a store to a non-flattened field/array).
>
> Thanks,
> Tobias
This pull request has now been integrated.
Changeset: 7f07f60c
Author: Tobias Hartmann <thartmann at openjdk.org>
URL: https://git.openjdk.java.net/valhalla/commit/7f07f60c
Stats: 36 lines in 7 files changed: 28 ins; 2 del; 6 mod
8262863: [lworld] C2 should keep track of the oop even if an inline type is returned as fields
-------------
PR: https://git.openjdk.java.net/valhalla/pull/357
More information about the valhalla-dev
mailing list