On Wed, 1 Jul 2026 11:29:38 GMT, Quan Anh Mai <[email protected]> wrote:

>> Christian Hagedorn has updated the pull request with a new target base due 
>> to a merge or a rebase. The incremental webrev excludes the unrelated 
>> changes brought in by the merge/rebase. The pull request contains 11 
>> additional commits since the last revision:
>> 
>>  - Add test for void.class as well
>>  - Improve comments
>>  - Merge branch 'lworld' into JDK-8382226
>>  - Update
>>  - Merge branch 'lworld' into JDK-8382226
>>  - Fix endless deopts with -XX:-UseArrayFlattening
>>  - Update
>>  - improve checks and further refactor exclude_flat to make it easier to read
>>  - fix tklass
>>  - Review Quan-Anh
>>  - ... and 1 more: 
>> https://git.openjdk.org/valhalla/compare/efdb0132...20cd9217
>
> src/hotspot/share/opto/library_call.cpp line 5188:
> 
>> 5186:       // passing in primitive class mirrors like int.class which do 
>> not have corresponding Klass* pointers.
>> 5187:       // In these cases, klass_node will be top. Emit a trap to throw 
>> in the interpreter in this case.
>> 5188:       bail_out_from_array_copyOf(bailout);
> 
> What if the `j.l.Class` is not a constant, but the runtime value is 
> `int.class`, it will return `null`, right? Which explains the null check 
> below. In that case, is it an inconsistency? Can it be an issue if a 
> `j.l.Class` is narrowed to the constant `int.class` during IGVN, then the 
> node will become `top` and the whole graph is incorrectly killed.

Yes, if it's not a constant, then we will have type `j.l.Object`. When later 
folding to `int.class`, the `LoadKlass` will be replaced by `null` and the null 
check makes sure the graph is folded correctly.

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

PR Review Comment: 
https://git.openjdk.org/valhalla/pull/2569#discussion_r3506033614

Reply via email to