-
Bug
-
Resolution: Fixed
-
P3
-
9
-
b106
-
generic
-
generic
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8156263 | 8u111 | Roland Westrelin | P3 | Resolved | Fixed | b01 |
JDK-8150211 | 8u102 | Shafi Ahmad | P3 | Resolved | Fixed | b01 |
JDK-8162060 | emb-8u111 | Roland Westrelin | P3 | Resolved | Fixed | b01 |
JDK-8150212 | 7u111 | Shafi Ahmad | P3 | Resolved | Fixed | b01 |
The problem is that somehow we start processing a dead control node (!n->in(0)). All control nodes should have in(0) not NULL unless it is dead and was cut from graph. So it is very rare case which we seems never hit before.
The loop in get_ctrl_no_update() which goes through dead CFG nodes (lines 701-703) is wrong:
698 Node *n = (Node*)(((intptr_t)_nodes[i->_idx]) & ~1);
699 if (!n->in(0)) {
700 // Skip dead CFG nodes
701 do {
702 n = (Node*)(((intptr_t)_nodes[n->_idx]) & ~1);
703 } while (!n->in(0));
704 n = find_non_split_ctrl(n);
705 }
_nodes[] points to IdealLoopTree* for control nodes and not to other control nodes so we can't use _nodes[] to scan previous control nodes.
First, we need to find why graph still points to dead control node. And second, we should assert/guarantee (or bailout compilation) when we hit such case.
The loop in get_ctrl_no_update() which goes through dead CFG nodes (lines 701-703) is wrong:
698 Node *n = (Node*)(((intptr_t)_nodes[i->_idx]) & ~1);
699 if (!n->in(0)) {
700 // Skip dead CFG nodes
701 do {
702 n = (Node*)(((intptr_t)_nodes[n->_idx]) & ~1);
703 } while (!n->in(0));
704 n = find_non_split_ctrl(n);
705 }
_nodes[] points to IdealLoopTree* for control nodes and not to other control nodes so we can't use _nodes[] to scan previous control nodes.
First, we need to find why graph still points to dead control node. And second, we should assert/guarantee (or bailout compilation) when we hit such case.
- backported by
-
JDK-8150211 get_ctrl_no_update() code is wrong
-
- Resolved
-
-
JDK-8150212 get_ctrl_no_update() code is wrong
-
- Resolved
-
-
JDK-8156263 get_ctrl_no_update() code is wrong
-
- Resolved
-
-
JDK-8162060 get_ctrl_no_update() code is wrong
-
- Resolved
-