< prev index next >

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

Print this page
rev 50904 : Move Shenandoah stubs generation into ShenandoahBarrierSetAssembler

*** 31,40 **** --- 31,41 ---- #include "opto/castnode.hpp" #include "opto/movenode.hpp" #include "opto/phaseX.hpp" #include "opto/rootnode.hpp" #include "opto/runtime.hpp" + #include "gc/shenandoah/shenandoahBarrierSetAssembler.hpp" #include "gc/shenandoah/c2/shenandoahSupport.hpp" #include "gc/shenandoah/c2/shenandoahBarrierSetC2.hpp" #include "opto/subnode.hpp" Node* ShenandoahBarrierNode::skip_through_barrier(Node* n) {
*** 2530,2545 **** break; } } else { if (n->is_Proj()) { if (n->in(0)->Opcode() == Op_CallLeafNoFP) { ! if (n->in(0)->as_Call()->entry_point() != StubRoutines::shenandoah_wb_C()) { const_oop = NULL; break; } } else if (n->in(0)->is_MachCallLeaf()) { ! if (n->in(0)->as_MachCall()->entry_point() != StubRoutines::shenandoah_wb_C()) { const_oop = NULL; break; } } } else { --- 2531,2546 ---- break; } } else { if (n->is_Proj()) { if (n->in(0)->Opcode() == Op_CallLeafNoFP) { ! if (n->in(0)->as_Call()->entry_point() != ShenandoahBarrierSetAssembler::shenandoah_wb_C()) { const_oop = NULL; break; } } else if (n->in(0)->is_MachCallLeaf()) { ! if (n->in(0)->as_MachCall()->entry_point() != ShenandoahBarrierSetAssembler::shenandoah_wb_C()) { const_oop = NULL; break; } } } else {
*** 3974,3984 **** 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, c); ! Node* call = new CallLeafNoFPNode(ShenandoahBarrierSetC2::shenandoah_write_barrier_Type(), StubRoutines::shenandoah_wb_C(), "shenandoah_write_barrier", TypeRawPtr::BOTTOM); call->init_req(TypeFunc::Control, c); 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()); --- 3975,3985 ---- 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, c); ! Node* call = new CallLeafNoFPNode(ShenandoahBarrierSetC2::shenandoah_write_barrier_Type(), ShenandoahBarrierSetAssembler::shenandoah_wb_C(), "shenandoah_write_barrier", TypeRawPtr::BOTTOM); call->init_req(TypeFunc::Control, c); 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());
*** 4388,4398 **** 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 && n->as_Call()->_entry_point == StubRoutines::shenandoah_wb_C()) { controls.push(n); if (trace) { tty->print("XXXXXX verifying"); n->dump(); } for (uint next2 = 0; next2 < controls.size(); next2++) { Node *m = controls.at(next2); if (!m->is_Loop() || controls.member(m->in(LoopNode::EntryControl)) || 1) { --- 4389,4399 ---- 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 && n->as_Call()->_entry_point == ShenandoahBarrierSetAssembler::shenandoah_wb_C()) { controls.push(n); if (trace) { tty->print("XXXXXX verifying"); n->dump(); } for (uint next2 = 0; next2 < controls.size(); next2++) { Node *m = controls.at(next2); if (!m->is_Loop() || controls.member(m->in(LoopNode::EntryControl)) || 1) {
< prev index next >