[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