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