8247502: PhaseStringOpts crashes while optimising effectively dead code

Reviewed-by: kvn, thartmann
This commit is contained in:
Vladimir Ivanov 2020-07-14 16:57:34 +03:00
parent be04c8c724
commit 7a6c1a66b2

@ -539,6 +539,15 @@ StringConcat* PhaseStringOpts::build_candidate(CallStaticJavaNode* call) {
cnode->method()->signature()->as_symbol() == int_sig)) {
sc->add_control(cnode);
Node* arg = cnode->in(TypeFunc::Parms + 1);
if (arg == NULL || arg->is_top()) {
#ifndef PRODUCT
if (PrintOptimizeStringConcat) {
tty->print("giving up because the call is effectively dead");
cnode->jvms()->dump_spec(tty); tty->cr();
}
#endif
break;
}
if (cnode->method()->signature()->as_symbol() == int_sig) {
sc->push_int(arg);
} else if (cnode->method()->signature()->as_symbol() == char_sig) {