src/hotspot/share/gc/shenandoah/c2/shenandoahSupport.cpp
changeset 55015 738285c4d1e1
parent 55006 377bba651f4e
child 55046 7f03c3e42628
equal deleted inserted replaced
55014:8b43726c1a47 55015:738285c4d1e1
  1091   Node* base = find_bottom_mem(ctrl, phase);
  1091   Node* base = find_bottom_mem(ctrl, phase);
  1092   MergeMemNode* mm = MergeMemNode::make(base);
  1092   MergeMemNode* mm = MergeMemNode::make(base);
  1093   mm->set_memory_at(Compile::AliasIdxRaw, raw_mem);
  1093   mm->set_memory_at(Compile::AliasIdxRaw, raw_mem);
  1094   phase->register_new_node(mm, ctrl);
  1094   phase->register_new_node(mm, ctrl);
  1095 
  1095 
  1096   Node* call = new CallLeafNode(ShenandoahBarrierSetC2::shenandoah_write_barrier_Type(), CAST_FROM_FN_PTR(address, ShenandoahRuntime::load_reference_barrier_JRT), "shenandoah_write_barrier", TypeRawPtr::BOTTOM);
  1096   Node* call = new CallLeafNode(ShenandoahBarrierSetC2::shenandoah_load_reference_barrier_Type(), CAST_FROM_FN_PTR(address, ShenandoahRuntime::load_reference_barrier_JRT), "shenandoah_load_reference_barrier", TypeRawPtr::BOTTOM);
  1097   call->init_req(TypeFunc::Control, ctrl);
  1097   call->init_req(TypeFunc::Control, ctrl);
  1098   call->init_req(TypeFunc::I_O, phase->C->top());
  1098   call->init_req(TypeFunc::I_O, phase->C->top());
  1099   call->init_req(TypeFunc::Memory, mm);
  1099   call->init_req(TypeFunc::Memory, mm);
  1100   call->init_req(TypeFunc::FramePtr, phase->C->top());
  1100   call->init_req(TypeFunc::FramePtr, phase->C->top());
  1101   call->init_req(TypeFunc::ReturnAdr, phase->C->top());
  1101   call->init_req(TypeFunc::ReturnAdr, phase->C->top());
  1530     // Wire up not-equal-path in slots 3.
  1530     // Wire up not-equal-path in slots 3.
  1531     region->init_req(_not_equal, if_not_eq);
  1531     region->init_req(_not_equal, if_not_eq);
  1532     val_phi->init_req(_not_equal, fwd);
  1532     val_phi->init_req(_not_equal, fwd);
  1533     raw_mem_phi->init_req(_not_equal, raw_mem);
  1533     raw_mem_phi->init_req(_not_equal, raw_mem);
  1534 
  1534 
  1535     // Call wb-stub and wire up that path in slots 4
  1535     // Call lrb-stub and wire up that path in slots 4
  1536     Node* result_mem = NULL;
  1536     Node* result_mem = NULL;
  1537     ctrl = if_eq;
  1537     ctrl = if_eq;
  1538     call_lrb_stub(ctrl, fwd, result_mem, raw_mem, phase);
  1538     call_lrb_stub(ctrl, fwd, result_mem, raw_mem, phase);
  1539     region->init_req(_evac_path, ctrl);
  1539     region->init_req(_evac_path, ctrl);
  1540     val_phi->init_req(_evac_path, fwd);
  1540     val_phi->init_req(_evac_path, fwd);
  1977   Unique_Node_List memories;
  1977   Unique_Node_List memories;
  1978 
  1978 
  1979   nodes.push(root);
  1979   nodes.push(root);
  1980   for (uint next = 0; next < nodes.size(); next++) {
  1980   for (uint next = 0; next < nodes.size(); next++) {
  1981     Node *n  = nodes.at(next);
  1981     Node *n  = nodes.at(next);
  1982     if (ShenandoahBarrierSetC2::is_shenandoah_wb_call(n)) {
  1982     if (ShenandoahBarrierSetC2::is_shenandoah_lrb_call(n)) {
  1983       controls.push(n);
  1983       controls.push(n);
  1984       if (trace) { tty->print("XXXXXX verifying"); n->dump(); }
  1984       if (trace) { tty->print("XXXXXX verifying"); n->dump(); }
  1985       for (uint next2 = 0; next2 < controls.size(); next2++) {
  1985       for (uint next2 = 0; next2 < controls.size(); next2++) {
  1986         Node *m = controls.at(next2);
  1986         Node *m = controls.at(next2);
  1987         for (DUIterator_Fast imax, i = m->fast_outs(imax); i < imax; i++) {
  1987         for (DUIterator_Fast imax, i = m->fast_outs(imax); i < imax; i++) {