< prev index next >

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

Print this page
rev 53399 : Redo: Avoid stub when calling to write-barrier from C2, remove all related code

*** 2428,2438 **** MergeMemNode* mm = MergeMemNode::make(base); mm->set_memory_at(alias, wb_mem); mm->set_memory_at(Compile::AliasIdxRaw, raw_mem); phase->register_new_node(mm, ctrl); ! Node* call = new CallLeafNoFPNode(ShenandoahBarrierSetC2::shenandoah_write_barrier_Type(), ShenandoahBarrierSetAssembler::shenandoah_wb_C(), "shenandoah_write_barrier", TypeRawPtr::BOTTOM); call->init_req(TypeFunc::Control, ctrl); call->init_req(TypeFunc::I_O, phase->C->top()); call->init_req(TypeFunc::Memory, mm); call->init_req(TypeFunc::FramePtr, phase->C->top()); call->init_req(TypeFunc::ReturnAdr, phase->C->top()); --- 2428,2438 ---- MergeMemNode* mm = MergeMemNode::make(base); mm->set_memory_at(alias, wb_mem); mm->set_memory_at(Compile::AliasIdxRaw, raw_mem); phase->register_new_node(mm, ctrl); ! Node* call = new CallLeafNode(ShenandoahBarrierSetC2::shenandoah_write_barrier_Type(), CAST_FROM_FN_PTR(address, ShenandoahRuntime::write_barrier_JRT), "shenandoah_write_barrier", TypeRawPtr::BOTTOM); call->init_req(TypeFunc::Control, ctrl); call->init_req(TypeFunc::I_O, phase->C->top()); call->init_req(TypeFunc::Memory, mm); call->init_req(TypeFunc::FramePtr, phase->C->top()); call->init_req(TypeFunc::ReturnAdr, phase->C->top());
*** 3153,3164 **** Unique_Node_List memories; nodes.push(root); for (uint next = 0; next < nodes.size(); next++) { Node *n = nodes.at(next); ! if (n->Opcode() == Op_CallLeafNoFP && ! ShenandoahBarrierSetAssembler::is_shenandoah_wb_C_call(n->as_Call()->entry_point())) { controls.push(n); if (trace) { tty->print("XXXXXX verifying"); n->dump(); } for (uint next2 = 0; next2 < controls.size(); next2++) { Node *m = controls.at(next2); for (DUIterator_Fast imax, i = m->fast_outs(imax); i < imax; i++) { --- 3153,3163 ---- Unique_Node_List memories; nodes.push(root); for (uint next = 0; next < nodes.size(); next++) { Node *n = nodes.at(next); ! if (ShenandoahBarrierSetC2::is_shenandoah_wb_call(n)) { controls.push(n); if (trace) { tty->print("XXXXXX verifying"); n->dump(); } for (uint next2 = 0; next2 < controls.size(); next2++) { Node *m = controls.at(next2); for (DUIterator_Fast imax, i = m->fast_outs(imax); i < imax; i++) {
< prev index next >