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
