< prev index next >

src/hotspot/share/gc/shared/c2/barrierSetC2.cpp

Print this page
*** 41,10 ***
--- 41,14 ---
    return _kit->barrier_set_state();
  }
  
  PhaseGVN& C2ParseAccess::gvn() const { return _kit->gvn(); }
  
+ Node* C2ParseAccess::control() const {
+   return _ctl == NULL ? _kit->control() : _ctl;
+ }
+ 
  bool C2Access::needs_cpu_membar() const {
    bool mismatched   = (_decorators & C2_MISMATCHED) != 0;
    bool is_unordered = (_decorators & MO_UNORDERED) != 0;
  
    bool anonymous = (_decorators & C2_UNSAFE_ACCESS) != 0;

*** 151,11 ***
  
    Node* load;
    if (access.is_parse_access()) {
      C2ParseAccess& parse_access = static_cast<C2ParseAccess&>(access);
      GraphKit* kit = parse_access.kit();
!     Node* control = control_dependent ? kit->control() : NULL;
  
      if (immutable) {
        assert(!requires_atomic_access, "can't ensure atomicity");
        Compile* C = Compile::current();
        Node* mem = kit->immutable_memory();
--- 155,11 ---
  
    Node* load;
    if (access.is_parse_access()) {
      C2ParseAccess& parse_access = static_cast<C2ParseAccess&>(access);
      GraphKit* kit = parse_access.kit();
!     Node* control = control_dependent ? parse_access.control() : NULL;
  
      if (immutable) {
        assert(!requires_atomic_access, "can't ensure atomicity");
        Compile* C = Compile::current();
        Node* mem = kit->immutable_memory();

*** 682,11 ***
    int base_off = arraycopy_payload_base_offset(is_array);
    Node* payload_size = size;
    Node* offset = kit->MakeConX(base_off);
    payload_size = kit->gvn().transform(new SubXNode(payload_size, offset));
    payload_size = kit->gvn().transform(new URShiftXNode(payload_size, kit->intcon(LogBytesPerLong)));
!   ArrayCopyNode* ac = ArrayCopyNode::make(kit, false, src_base, offset,  dst_base, offset, payload_size, true, false);
    if (is_array) {
      ac->set_clone_array();
    } else {
      ac->set_clone_inst();
    }
--- 686,11 ---
    int base_off = arraycopy_payload_base_offset(is_array);
    Node* payload_size = size;
    Node* offset = kit->MakeConX(base_off);
    payload_size = kit->gvn().transform(new SubXNode(payload_size, offset));
    payload_size = kit->gvn().transform(new URShiftXNode(payload_size, kit->intcon(LogBytesPerLong)));
!   ArrayCopyNode* ac = ArrayCopyNode::make(kit, false, src_base, offset, dst_base, offset, payload_size, true, false);
    if (is_array) {
      ac->set_clone_array();
    } else {
      ac->set_clone_inst();
    }

*** 848,9 ***
    const TypeFunc* call_type = OptoRuntime::fast_arraycopy_Type();
  
    Node* call = phase->make_leaf_call(ctrl, mem, call_type, copyfunc_addr, copyfunc_name, raw_adr_type, payload_src, payload_dst, length XTOP);
    phase->transform_later(call);
  
!   phase->igvn().replace_node(ac, call);
  }
  
  #undef XTOP
--- 852,9 ---
    const TypeFunc* call_type = OptoRuntime::fast_arraycopy_Type();
  
    Node* call = phase->make_leaf_call(ctrl, mem, call_type, copyfunc_addr, copyfunc_name, raw_adr_type, payload_src, payload_dst, length XTOP);
    phase->transform_later(call);
  
!   phase->replace_node(ac, call);
  }
  
  #undef XTOP
< prev index next >