[16] RFR(S): 8251458: Parse::do_lookupswitch fails with "assert(_cnt >= 0) failed"
Vladimir Ivanov
vladimir.x.ivanov at oracle.com
Wed Aug 12 22:24:55 UTC 2020
> http://cr.openjdk.java.net/~thartmann/8251458/webrev.00/
Though the fix itself looks sufficient, the code around is still not
pretty... In particular, profile data goes through
uint->jint->int->float(!) conversion which doesn't make any sense.
It would be really nice to clean it up.
Best regards,
Vladimir Ivanov
> We hit an assert in Parse::do_lookupswitch() because the "taken" counter for a lookupswitch branch
> is negative. The problem is an overflow when converting an uint counter value > max_jint from
> profile information to a jint.
>
> The fix is to handle such overflows by simply limiting the counter value to max_jint.
>
> Best regards,
> Tobias
>
More information about the hotspot-compiler-dev
mailing list