[lworld] RFR: 8361352: [lworld] Weird interaction between OSR and value class instances [v2]
Marc Chevalier
mchevalier at openjdk.org
Mon Aug 25 09:11:06 UTC 2025
On Mon, 25 Aug 2025 07:17:16 GMT, Tobias Hartmann <thartmann at openjdk.org> wrote:
>> Marc Chevalier has updated the pull request incrementally with two additional commits since the last revision:
>>
>> - Rephrase summary
>> - +copyright
>
> src/hotspot/share/ci/ciType.cpp line 151:
>
>> 149: assert(type->is_inlinetype()
>> 150: // An abstract value type is an instance_klass
>> 151: || (type->is_instance_klass() && type->as_instance_klass()->flags().is_abstract() && !type->as_instance_klass()->flags().is_identity())
>
> Just wondering, is the `type->as_instance_klass()->flags().is_abstract()` condition even needed? Same in `ciTypeFlow::get_start_state()`.
Probably not. An instance class without identity must be an abstract value class. At least, I don't see another way... But just to be sure, I'm running some tests.
> test/hotspot/jtreg/compiler/valhalla/inlinetypes/LarvalDetectionAboveOSR.java line 29:
>
>> 27: * @summary In OSR compilation, value objects coming from above the OSR start
>> 28: * must be correctly found to be early larval so we know they are
>> 29: * immutable, and they can be scalarized.
>
> I suggest to rephrase this: "to be early larval so we know they are immutable" is confusing because early larvals are **mutable**.
Wow, yeah, I see what I wanted to say, but it's terrible! I've tried something else, hopefully better.
-------------
PR Review Comment: https://git.openjdk.org/valhalla/pull/1531#discussion_r2297532414
PR Review Comment: https://git.openjdk.org/valhalla/pull/1531#discussion_r2297539481
More information about the valhalla-dev
mailing list