On Fri, 27 Feb 2026 10:14:01 GMT, Tobias Hartmann <[email protected]> wrote:
>> When handling a scalarized return from an inlined method handle call in C2, >> we assert that we always make use of the buffer that we pre-allocated before >> the call. The assert is too strong because we could stop parsing in the >> callee due to an uncommon trap. I added a corresponding test that triggers >> this because we trap in the callee due to always throwing an exception. >> >> Thanks, >> Tobias > > Tobias Hartmann has updated the pull request incrementally with one > additional commit since the last revision: > > V2 Thanks for your review @merykitty! You are right, the test does not really belong to value construction. I moved it to the calling convention test. A normal method and `AlwaysIncrementalInline` is not enough. In this case we wouldn't need a buffer because the caller knows that the callee returns scalarized. The special logic with the buffer pre-allocation is only needed for method handle inlines, where we "double-inline" through the `linkTo*` methods. In this case, the caller just sees a call with a non-scalarized return (`!call->tf()->returns_inline_type_as_fields()`) during parsing and adds no handling for a scalarized return. But later, with method handle incremental inlining, the actual return type of the method is a value type that might be scalarized. I added a corresponding assert to the code. ------------- PR Comment: https://git.openjdk.org/valhalla/pull/2177#issuecomment-3972010768
