< prev index next >

src/share/vm/opto/loopnode.cpp

Print this page

        

*** 3087,3097 **** while (i < cnt) { Node *in = n->in(i); ++i; if (in == NULL) continue; if (in->pinned() && !in->is_CFG()) ! set_ctrl(in, in->in(0)); int is_visited = visited.test_set( in->_idx ); if (!has_node(in)) { // No controlling input yet? assert( !in->is_CFG(), "CFG Node with no controlling input?" ); assert( !is_visited, "visit only once" ); nstack.push(n, i); // Save parent node and next input's index. --- 3087,3097 ---- while (i < cnt) { Node *in = n->in(i); ++i; if (in == NULL) continue; if (in->pinned() && !in->is_CFG()) ! set_ctrl(in, in->Opcode() == Op_ShenandoahWBMemProj ? in->in(0)->in(0) : in->in(0)); int is_visited = visited.test_set( in->_idx ); if (!has_node(in)) { // No controlling input yet? assert( !in->is_CFG(), "CFG Node with no controlling input?" ); assert( !is_visited, "visit only once" ); nstack.push(n, i); // Save parent node and next input's index.
*** 3272,3282 **** Node* s1 = s->fast_out(i); worklist.push(s1); } } else { Node *sctrl = has_ctrl(s) ? get_ctrl(s) : s->in(0); ! assert(sctrl != NULL || s->outcnt() == 0, "must have control"); if (sctrl != NULL && !sctrl->is_top() && is_dominator(early, sctrl)) { LCA = dom_lca_for_get_late_ctrl(LCA, sctrl, n); } } } --- 3272,3282 ---- Node* s1 = s->fast_out(i); worklist.push(s1); } } else { Node *sctrl = has_ctrl(s) ? get_ctrl(s) : s->in(0); ! assert(sctrl != NULL || s->outcnt() == 0 || s->is_ShenandoahBarrier(), "must have control"); if (sctrl != NULL && !sctrl->is_top() && is_dominator(early, sctrl)) { LCA = dom_lca_for_get_late_ctrl(LCA, sctrl, n); } } }
*** 3493,3502 **** --- 3493,3504 ---- case Op_LoadL_unaligned: case Op_StrComp: // Does a bunch of load-like effects case Op_StrEquals: case Op_StrIndexOf: case Op_AryEq: + case Op_ShenandoahReadBarrier: + case Op_ShenandoahWriteBarrier: pinned = false; } if( pinned ) { IdealLoopTree *chosen_loop = get_loop(n->is_CFG() ? n : get_ctrl(n)); if( !chosen_loop->_child ) // Inner loop?
< prev index next >