< prev index next >

src/hotspot/share/jfr/leakprofiler/chains/dfsClosure.hpp

Print this page
*** 23,14 ***
   */
  
  #ifndef SHARE_JFR_LEAKPROFILER_CHAINS_DFSCLOSURE_HPP
  #define SHARE_JFR_LEAKPROFILER_CHAINS_DFSCLOSURE_HPP
  
  #include "jfr/leakprofiler/utilities/unifiedOopRef.hpp"
  #include "memory/iterator.hpp"
  
- class BitSet;
  class Edge;
  class EdgeStore;
  class EdgeQueue;
  
  // Class responsible for iterating the heap depth-first
--- 23,14 ---
   */
  
  #ifndef SHARE_JFR_LEAKPROFILER_CHAINS_DFSCLOSURE_HPP
  #define SHARE_JFR_LEAKPROFILER_CHAINS_DFSCLOSURE_HPP
  
+ #include "jfr/leakprofiler/chains/jfrbitset.hpp"
  #include "jfr/leakprofiler/utilities/unifiedOopRef.hpp"
  #include "memory/iterator.hpp"
  
  class Edge;
  class EdgeStore;
  class EdgeQueue;
  
  // Class responsible for iterating the heap depth-first

*** 39,26 ***
    // max dfs depth should not exceed size of stack
    static const size_t max_dfs_depth = 4000;
    static UnifiedOopRef _reference_stack[max_dfs_depth];
  
    EdgeStore* _edge_store;
!   BitSet* _mark_bits;
    const Edge*_start_edge;
    size_t _max_depth;
    size_t _depth;
    bool _ignore_root_set;
  
!   DFSClosure(EdgeStore* edge_store, BitSet* mark_bits, const Edge* start_edge);
  
    void add_chain();
    void closure_impl(UnifiedOopRef reference, const oop pointee);
  
   public:
    virtual ReferenceIterationMode reference_iteration_mode() { return DO_FIELDS_EXCEPT_REFERENT; }
  
!   static void find_leaks_from_edge(EdgeStore* edge_store, BitSet* mark_bits, const Edge* start_edge);
!   static void find_leaks_from_root_set(EdgeStore* edge_store, BitSet* mark_bits);
    void do_root(UnifiedOopRef ref);
  
    virtual void do_oop(oop* ref);
    virtual void do_oop(narrowOop* ref);
  };
--- 39,26 ---
    // max dfs depth should not exceed size of stack
    static const size_t max_dfs_depth = 4000;
    static UnifiedOopRef _reference_stack[max_dfs_depth];
  
    EdgeStore* _edge_store;
!   JFRBitSet* _mark_bits;
    const Edge*_start_edge;
    size_t _max_depth;
    size_t _depth;
    bool _ignore_root_set;
  
!   DFSClosure(EdgeStore* edge_store, JFRBitSet* mark_bits, const Edge* start_edge);
  
    void add_chain();
    void closure_impl(UnifiedOopRef reference, const oop pointee);
  
   public:
    virtual ReferenceIterationMode reference_iteration_mode() { return DO_FIELDS_EXCEPT_REFERENT; }
  
!   static void find_leaks_from_edge(EdgeStore* edge_store, JFRBitSet* mark_bits, const Edge* start_edge);
!   static void find_leaks_from_root_set(EdgeStore* edge_store, JFRBitSet* mark_bits);
    void do_root(UnifiedOopRef ref);
  
    virtual void do_oop(oop* ref);
    virtual void do_oop(narrowOop* ref);
  };
< prev index next >