< prev index next >

src/hotspot/share/gc/shenandoah/c2/shenandoahSupport.cpp

Print this page
rev 56465 : [mq]: fix.patch
rev 56466 : [mq]: fix-addr.patch

*** 1528,1537 **** --- 1528,1550 ---- VectorSet visited(Thread::current()->resource_area()); addr = get_load_addr(phase, visited, lrb); } else { addr = phase->igvn().zerocon(T_OBJECT); } + if (addr->Opcode() == Op_AddP) { + Node* base = addr->in(AddPNode::Base); + base = new CheckCastPPNode(ctrl, base, base->bottom_type(), true); + phase->register_new_node(base, ctrl); + Node* address = addr->in(AddPNode::Address); + address = new CheckCastPPNode(ctrl, address, address->bottom_type(), true); + phase->register_new_node(address, ctrl); + + addr = addr->clone(); + addr->set_req(AddPNode::Base, base); + addr->set_req(AddPNode::Address, address); + phase->register_new_node(addr, ctrl); + } call_lrb_stub(ctrl, fwd, addr, result_mem, raw_mem, phase); region->init_req(_evac_path, ctrl); val_phi->init_req(_evac_path, fwd); raw_mem_phi->init_req(_evac_path, result_mem);
*** 1777,1786 **** --- 1790,1800 ---- case Op_CallDynamicJava: case Op_CallLeaf: case Op_CallStaticJava: case Op_ConN: case Op_ConP: + case Op_Parm: return phase->igvn().zerocon(T_OBJECT); default: #ifdef ASSERT in->dump(); ShouldNotReachHere();
< prev index next >