src/hotspot/share/gc/shenandoah/c2/shenandoahBarrierSetC2.hpp
changeset 58218 0d7877278adf
parent 55692 64330bbb9be5
child 58516 d376d86b0a01
equal deleted inserted replaced
58217:b1a394e15ae9 58218:0d7877278adf
    76   Node* shenandoah_storeval_barrier(GraphKit* kit, Node* obj) const;
    76   Node* shenandoah_storeval_barrier(GraphKit* kit, Node* obj) const;
    77 
    77 
    78   void insert_pre_barrier(GraphKit* kit, Node* base_oop, Node* offset,
    78   void insert_pre_barrier(GraphKit* kit, Node* base_oop, Node* offset,
    79                           Node* pre_val, bool need_mem_bar) const;
    79                           Node* pre_val, bool need_mem_bar) const;
    80 
    80 
    81   static bool clone_needs_postbarrier(ArrayCopyNode *ac, PhaseIterGVN& igvn);
    81   static bool clone_needs_barrier(Node* src, PhaseGVN& gvn);
    82 
    82 
    83 protected:
    83 protected:
    84   virtual Node* load_at_resolved(C2Access& access, const Type* val_type) const;
    84   virtual Node* load_at_resolved(C2Access& access, const Type* val_type) const;
    85   virtual Node* store_at_resolved(C2Access& access, C2AccessValue& val) const;
    85   virtual Node* store_at_resolved(C2Access& access, C2AccessValue& val) const;
    86   virtual Node* atomic_cmpxchg_val_at_resolved(C2AtomicParseAccess& access, Node* expected_val,
    86   virtual Node* atomic_cmpxchg_val_at_resolved(C2AtomicParseAccess& access, Node* expected_val,
   104   static const TypeFunc* shenandoah_clone_barrier_Type();
   104   static const TypeFunc* shenandoah_clone_barrier_Type();
   105   static const TypeFunc* shenandoah_load_reference_barrier_Type();
   105   static const TypeFunc* shenandoah_load_reference_barrier_Type();
   106   virtual bool has_load_barriers() const { return true; }
   106   virtual bool has_load_barriers() const { return true; }
   107 
   107 
   108   // This is the entry-point for the backend to perform accesses through the Access API.
   108   // This is the entry-point for the backend to perform accesses through the Access API.
   109   virtual void clone(GraphKit* kit, Node* src, Node* dst, Node* size, bool is_array) const;
   109   virtual void clone_at_expansion(PhaseMacroExpand* phase, ArrayCopyNode* ac) const;
   110 
   110 
   111   // These are general helper methods used by C2
   111   // These are general helper methods used by C2
   112   virtual bool array_copy_requires_gc_barriers(bool tightly_coupled_alloc, BasicType type, bool is_clone, ArrayCopyPhase phase) const;
   112   virtual bool array_copy_requires_gc_barriers(bool tightly_coupled_alloc, BasicType type, bool is_clone, ArrayCopyPhase phase) const;
   113   virtual void clone_barrier_at_expansion(ArrayCopyNode* ac, Node* call, PhaseIterGVN& igvn) const;
       
   114 
   113 
   115   // Support for GC barriers emitted during parsing
   114   // Support for GC barriers emitted during parsing
   116   virtual bool is_gc_barrier_node(Node* node) const;
   115   virtual bool is_gc_barrier_node(Node* node) const;
   117   virtual Node* step_over_gc_barrier(Node* c) const;
   116   virtual Node* step_over_gc_barrier(Node* c) const;
   118   virtual bool expand_barriers(Compile* C, PhaseIterGVN& igvn) const;
   117   virtual bool expand_barriers(Compile* C, PhaseIterGVN& igvn) const;