RFR: 8308583: SIGSEGV in GraphKit::gen_checkcast
Tom Rodriguez
never at openjdk.org
Thu May 25 15:17:57 UTC 2023
On Wed, 24 May 2023 12:31:37 GMT, Roland Westrelin <roland at openjdk.org> wrote:
> At an `instanceof`, a node of type `bottom[int:>=0]` is checked to be of type `cc$Word` and on the success a `CheckCastPP` is inserted to change the node type. That `CheckCastPP` constant folds to `top` but the type check doesn't fold. The reason is that the type check loads the klass from the node with a `LoadNKlass` and the type of that node is `java/lang/Object` when it should be `bottom[int:>=0]` but logic in `LoadNKlass::Value()` gets in the way.
Thanks for the fix. I did wonder why the type checks themselves weren't properly folding but didn't follow it through all the way.
I think it would be worth including an assert or guarantee in type_check_receiver that it never injects top into the graph.
-------------
PR Comment: https://git.openjdk.org/jdk/pull/14123#issuecomment-1563086526
More information about the hotspot-compiler-dev
mailing list