8225509: clean_catch_blocks must add preds first

Reviewed-by: kvn
This commit is contained in:
Nils Eliasson 2019-06-11 09:27:51 +02:00
parent 6a7c8b3e01
commit d216c34a43

View File

@ -1356,6 +1356,14 @@ void ZBarrierSetC2::clean_catch_blocks(PhaseIdealLoop* phase) const {
while(nodeStack.length() > 0) {
Node *n = nodeStack.pop();
for (uint i = 0; i < n->len(); i++) {
if (n->in(i)) {
if (!visited.test_set(n->in(i)->_idx)) {
nodeStack.push(n->in(i));
}
}
}
bool is_old_node = (n->_idx < new_ids); // don't process nodes that were created during cleanup
if (n->is_Load() && is_old_node) {
LoadNode* load = n->isa_Load();
@ -1364,14 +1372,6 @@ void ZBarrierSetC2::clean_catch_blocks(PhaseIdealLoop* phase) const {
process_catch_cleanup_candidate(phase, load);
}
}
for (uint i = 0; i < n->len(); i++) {
if (n->in(i)) {
if (!visited.test_set(n->in(i)->_idx)) {
nodeStack.push(n->in(i));
}
}
}
}
C->print_method(PHASE_CALL_CATCH_CLEANUP, 2);