src/hotspot/share/gc/z/zHeapIterator.hpp
changeset 55311 d60b24a09900
parent 54095 8b4a1177202d
child 55603 3868dde58ebb
equal deleted inserted replaced
55310:966a51af2986 55311:d60b24a09900
    30 
    30 
    31 class ObjectClosure;
    31 class ObjectClosure;
    32 class ZHeapIteratorBitMap;
    32 class ZHeapIteratorBitMap;
    33 
    33 
    34 class ZHeapIterator : public StackObj {
    34 class ZHeapIterator : public StackObj {
    35   friend class ZHeapIteratorRootOopClosure;
    35   template<bool Concurrent, bool Weak> friend class ZHeapIteratorRootOopClosure;
    36   friend class ZHeapIteratorOopClosure;
    36   template<bool VisitReferents> friend class ZHeapIteratorOopClosure;
    37 
    37 
    38 private:
    38 private:
    39   typedef ZGranuleMap<ZHeapIteratorBitMap*>         ZVisitMap;
    39   typedef ZGranuleMap<ZHeapIteratorBitMap*>         ZVisitMap;
    40   typedef ZGranuleMapIterator<ZHeapIteratorBitMap*> ZVisitMapIterator;
    40   typedef ZGranuleMapIterator<ZHeapIteratorBitMap*> ZVisitMapIterator;
    41   typedef Stack<oop, mtGC>                          ZVisitStack;
    41   typedef Stack<oop, mtGC>                          ZVisitStack;
    42 
    42 
    43   ZVisitStack _visit_stack;
    43   ZVisitStack _visit_stack;
    44   ZVisitMap   _visit_map;
    44   ZVisitMap   _visit_map;
    45   const bool  _visit_referents;
       
    46 
    45 
    47   ZHeapIteratorBitMap* object_map(oop obj);
    46   ZHeapIteratorBitMap* object_map(oop obj);
    48   void push(oop obj);
    47   void push(oop obj);
    49 
    48 
       
    49   template <typename RootsIterator, bool Concurrent, bool Weak> void push_roots();
       
    50   template <bool VisitReferents> void push_fields(oop obj);
       
    51   template <bool VisitReferents> void objects_do(ObjectClosure* cl);
       
    52 
    50 public:
    53 public:
    51   ZHeapIterator(bool visit_referents);
    54   ZHeapIterator();
    52   ~ZHeapIterator();
    55   ~ZHeapIterator();
    53 
    56 
    54   void objects_do(ObjectClosure* cl);
    57   void objects_do(ObjectClosure* cl, bool visit_referents);
    55 };
    58 };
    56 
    59 
    57 #endif // SHARE_GC_Z_ZHEAPITERATOR_HPP
    60 #endif // SHARE_GC_Z_ZHEAPITERATOR_HPP