< prev index next >
src/share/vm/opto/macro.cpp
Print this page
rev 12569 : 8173147: [ctw] fails during compilation of sun.security.krb5.internal.crypto.RsaMd5DesCksumType::calculateKeyedChecksum with " graph should be schedulable"
Summary: Loads generated at uncommon trap from eliminated arraycopy have incorrect memory state
Reviewed-by: thartmann
rev 12700 : 8176506: C2: loop unswitching and unsafe accesses cause crash
Reviewed-by:
*** 2660,2670 ****
break;
default:
assert(n->Opcode() == Op_LoopLimit ||
n->Opcode() == Op_Opaque1 ||
n->Opcode() == Op_Opaque2 ||
! n->Opcode() == Op_Opaque3, "unknown node type in macro list");
}
assert(success == (C->macro_count() < old_macro_count), "elimination reduces macro count");
progress = progress || success;
}
}
--- 2660,2671 ----
break;
default:
assert(n->Opcode() == Op_LoopLimit ||
n->Opcode() == Op_Opaque1 ||
n->Opcode() == Op_Opaque2 ||
! n->Opcode() == Op_Opaque3 ||
! n->Opcode() == Op_Opaque4, "unknown node type in macro list");
}
assert(success == (C->macro_count() < old_macro_count), "elimination reduces macro count");
progress = progress || success;
}
}
*** 2725,2734 ****
--- 2726,2738 ----
repl = (cmp->in(1) == n) ? cmp->in(2) : cmp->in(1);
}
_igvn.replace_node(n, repl);
success = true;
#endif
+ } else if (n->Opcode() == Op_Opaque4) {
+ _igvn.replace_node(n, n->in(2));
+ success = true;
}
assert(success == (C->macro_count() < old_macro_count), "elimination reduces macro count");
progress = progress || success;
}
}
< prev index next >