< prev index next >

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

Print this page
*** 145,22 ***
  
  // C2Access for parse time calls to the BarrierSetC2 backend.
  class C2ParseAccess: public C2Access {
  protected:
    GraphKit*         _kit;
  
    void* barrier_set_state() const;
  
  public:
    C2ParseAccess(GraphKit* kit, DecoratorSet decorators,
!                 BasicType type, Node* base, C2AccessValuePtr& addr) :
      C2Access(decorators, type, base, addr),
!     _kit(kit) {
      fixup_decorators();
    }
  
    GraphKit* kit() const           { return _kit; }
  
    virtual PhaseGVN& gvn() const;
    virtual bool is_parse_access() const { return true; }
  };
  
--- 145,26 ---
  
  // C2Access for parse time calls to the BarrierSetC2 backend.
  class C2ParseAccess: public C2Access {
  protected:
    GraphKit*         _kit;
+   Node* _ctl;
  
    void* barrier_set_state() const;
  
  public:
    C2ParseAccess(GraphKit* kit, DecoratorSet decorators,
!                 BasicType type, Node* base, C2AccessValuePtr& addr,
+                 Node* ctl = nullptr) :
      C2Access(decorators, type, base, addr),
!     _kit(kit),
+     _ctl(ctl) {
      fixup_decorators();
    }
  
    GraphKit* kit() const           { return _kit; }
+   Node* control() const;
  
    virtual PhaseGVN& gvn() const;
    virtual bool is_parse_access() const { return true; }
  };
  

*** 295,11 ***
    virtual Node* atomic_cmpxchg_bool_at(C2AtomicParseAccess& access, Node* expected_val,
                                         Node* new_val, const Type* val_type) const;
    virtual Node* atomic_xchg_at(C2AtomicParseAccess& access, Node* new_val, const Type* value_type) const;
    virtual Node* atomic_add_at(C2AtomicParseAccess& access, Node* new_val, const Type* value_type) const;
  
!   virtual void clone(GraphKit* kit, Node* src, Node* dst, Node* size, bool is_array) const;
  
    virtual Node* obj_allocate(PhaseMacroExpand* macro, Node* mem, Node* toobig_false, Node* size_in_bytes,
                               Node*& i_o, Node*& needgc_ctrl,
                               Node*& fast_oop_ctrl, Node*& fast_oop_rawmem,
                               intx prefetch_lines) const;
--- 299,11 ---
    virtual Node* atomic_cmpxchg_bool_at(C2AtomicParseAccess& access, Node* expected_val,
                                         Node* new_val, const Type* val_type) const;
    virtual Node* atomic_xchg_at(C2AtomicParseAccess& access, Node* new_val, const Type* value_type) const;
    virtual Node* atomic_add_at(C2AtomicParseAccess& access, Node* new_val, const Type* value_type) const;
  
!   virtual void clone(GraphKit* kit, Node* src_base, Node* dst_base, Node* size, bool is_array) const;
  
    virtual Node* obj_allocate(PhaseMacroExpand* macro, Node* mem, Node* toobig_false, Node* size_in_bytes,
                               Node*& i_o, Node*& needgc_ctrl,
                               Node*& fast_oop_ctrl, Node*& fast_oop_rawmem,
                               intx prefetch_lines) const;

*** 323,11 ***
    virtual Node* step_over_gc_barrier(Node* c) const { return c; }
  
    // Support for macro expanded GC barriers
    virtual void register_potential_barrier_node(Node* node) const { }
    virtual void unregister_potential_barrier_node(Node* node) const { }
!   virtual void eliminate_gc_barrier(PhaseMacroExpand* macro, Node* node) const { }
    virtual void eliminate_gc_barrier_data(Node* node) const { }
    virtual void enqueue_useful_gc_barrier(PhaseIterGVN* igvn, Node* node) const {}
    virtual void eliminate_useless_gc_barriers(Unique_Node_List &useful, Compile* C) const {}
  
    // Allow barrier sets to have shared state that is preserved across a compilation unit.
--- 327,11 ---
    virtual Node* step_over_gc_barrier(Node* c) const { return c; }
  
    // Support for macro expanded GC barriers
    virtual void register_potential_barrier_node(Node* node) const { }
    virtual void unregister_potential_barrier_node(Node* node) const { }
!   virtual void eliminate_gc_barrier(PhaseIterGVN* igvn, Node* node) const { }
    virtual void eliminate_gc_barrier_data(Node* node) const { }
    virtual void enqueue_useful_gc_barrier(PhaseIterGVN* igvn, Node* node) const {}
    virtual void eliminate_useless_gc_barriers(Unique_Node_List &useful, Compile* C) const {}
  
    // Allow barrier sets to have shared state that is preserved across a compilation unit.
< prev index next >