On Wed, 18 Mar 2026 13:20:33 GMT, Damon Fenacci <[email protected]> wrote:

>> `CompiledEntrySignature::initialize_from_fingerprint()` was building 
>> `_sig_cc` and `_sig_cc_ro` the same way, but for virtual methods with an 
>> inline‑type receiver they must differ: `_sig_cc` should include the 
>> receiver’s scalarized fields, while `_sig_cc_ro` should represent the 
>> receiver as a single `T_OBJECT`.
>> This change fixes `_sig_cc_ro` construction so that when the receiver is an 
>> inline type, its fields are skipped and a single object entry is emitted 
>> instead.
>> It also adds asserts for `_sig_cc_ro` as a regression test proved to be hard 
>> to isolate and the asserts trigger immediately with any test if the RO 
>> signature is wrong.
>> 
>> Tests: 
>> * Tier 1-3+
>> * Assert makes even build crash without fix
>
> Damon Fenacci has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   JDK-8377670: add receiver_handled flag

It's interesting tests weren't failing with that. Maybe one can add asserts... 
But I don't see which wouldn't be quite expensive. We could check that after 
the first argument, if it's a receiver, both the `cc` and `cc_ro` are the same? 
But I fear I'm a bit overspecializing an assert for this exact mistake that 
will probably never happen again.

But thanks for fixing anyway. And happy to see I'm not crazy.

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

PR Comment: https://git.openjdk.org/valhalla/pull/2185#issuecomment-4082540683

Reply via email to