> Hi, > > It turns out this issue has been fixed by @marc-chevalier. However, after > thinking about this issue, I find that the pattern we use > `cast_to_exactness(false)->as_instance_type()` to obtain the `Type` of an oop > that subtypes a klass pointer is flawed. This is because in the `Type` > lattice, `cast_to_exactness` works in the `ciType` dimension, while we also > need to handle the `_refined_type` dimension when trying to perform that > action. > > To be specific, in this issue, we have a klass pointer of unrefined arrays > that subtype `Object[]`, `cast_to_exactness` finds that this `TypeKlassPtr` > is already inexact, and return it as is. This is problematic, because there > is no instance for an unrefined array klass, and `as_instance_type` is > confused. @marc-chevalier solves the issue by walking around this issue, and > assume when the klass pointer is unrefined, we really mean obtaining the > instance that subtypes the pointer, not just those with the same type. > > This PR does not actually solve the issue, I just refactored it, so the use > sites work in a more rigourous manner, we can fix the implementation after > Valhalla being merged. > > Testing: > > - [x] tier1-4,valhalla-comp-stress > > Please take a look and leave your reviews, thanks a lot. > > --------- > - [x] I confirm that I make this contribution in accordance with the [OpenJDK > Interim AI Policy](https://openjdk.org/legal/ai).
Quan Anh Mai has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains two commits: - Merge branch 'lworld' into asinstancetype - Refactor cast_to_exactness(false)->as_instance_type() ------------- Changes: https://git.openjdk.org/valhalla/pull/2598/files Webrev: https://webrevs.openjdk.org/?repo=valhalla&pr=2598&range=01 Stats: 45 lines in 10 files changed: 13 ins; 1 del; 31 mod Patch: https://git.openjdk.org/valhalla/pull/2598.diff Fetch: git fetch https://git.openjdk.org/valhalla.git pull/2598/head:pull/2598 PR: https://git.openjdk.org/valhalla/pull/2598
