< prev index next >

src/hotspot/share/opto/macro.cpp

Print this page
rev 54102 : 8261812: C2 compilation fails with assert(!had_error) failed: bad dominance
Reviewed-by: kvn, thartmann

*** 466,485 **** return NULL; // can't find a value on this path } if (val == mem) { values.at_put(j, mem); } else if (val->is_Store()) { - #if INCLUDE_SHENANDOAHGC Node* n = val->in(MemNode::ValueIn); if (UseShenandoahGC) { BarrierSetC2* bs = BarrierSet::barrier_set()->barrier_set_c2(); n = bs->step_over_gc_barrier(n); } - values.at_put(j, n); - #else - values.at_put(j, val->in(MemNode::ValueIn)); #endif } else if(val->is_Proj() && val->in(0) == alloc) { values.at_put(j, _igvn.zerocon(ft)); } else if (val->is_Phi()) { val = value_from_mem_phi(val, ft, phi_type, adr_t, alloc, value_phis, level-1); if (val == NULL) { --- 466,486 ---- return NULL; // can't find a value on this path } if (val == mem) { values.at_put(j, mem); } else if (val->is_Store()) { Node* n = val->in(MemNode::ValueIn); + #if INCLUDE_SHENANDOAHGC if (UseShenandoahGC) { BarrierSetC2* bs = BarrierSet::barrier_set()->barrier_set_c2(); n = bs->step_over_gc_barrier(n); } #endif + if (is_subword_type(ft)) { + n = Compile::narrow_value(ft, n, phi_type, &_igvn, true); + } + values.at_put(j, n); } else if(val->is_Proj() && val->in(0) == alloc) { values.at_put(j, _igvn.zerocon(ft)); } else if (val->is_Phi()) { val = value_from_mem_phi(val, ft, phi_type, adr_t, alloc, value_phis, level-1); if (val == NULL) {
< prev index next >