src/hotspot/share/gc/z/zHeapIterator.cpp
changeset 50752 9d62da00bf15
parent 50585 1bddf2ab9ae7
child 50871 d283a214f42b
equal deleted inserted replaced
50751:d9132bdf6c30 50752:9d62da00bf15
    26 #include "gc/z/zBarrier.inline.hpp"
    26 #include "gc/z/zBarrier.inline.hpp"
    27 #include "gc/z/zGlobals.hpp"
    27 #include "gc/z/zGlobals.hpp"
    28 #include "gc/z/zHeapIterator.hpp"
    28 #include "gc/z/zHeapIterator.hpp"
    29 #include "gc/z/zOop.inline.hpp"
    29 #include "gc/z/zOop.inline.hpp"
    30 #include "gc/z/zRootsIterator.hpp"
    30 #include "gc/z/zRootsIterator.hpp"
       
    31 #include "memory/iterator.inline.hpp"
    31 #include "oops/oop.inline.hpp"
    32 #include "oops/oop.inline.hpp"
    32 #include "utilities/bitMap.inline.hpp"
    33 #include "utilities/bitMap.inline.hpp"
    33 #include "utilities/stack.inline.hpp"
    34 #include "utilities/stack.inline.hpp"
    34 
    35 
    35 class ZHeapIteratorBitMap : public CHeapObj<mtGC> {
    36 class ZHeapIteratorBitMap : public CHeapObj<mtGC> {
    71   virtual void do_oop(narrowOop* p) {
    72   virtual void do_oop(narrowOop* p) {
    72     ShouldNotReachHere();
    73     ShouldNotReachHere();
    73   }
    74   }
    74 };
    75 };
    75 
    76 
    76 class ZHeapIteratorPushOopClosure : public ExtendedOopClosure {
    77 class ZHeapIteratorPushOopClosure : public BasicOopIterateClosure {
    77 private:
    78 private:
    78   ZHeapIterator* const _iter;
    79   ZHeapIterator* const _iter;
    79   const oop            _base;
    80   const oop            _base;
    80 
    81 
    81 public:
    82 public:
    82   ZHeapIteratorPushOopClosure(ZHeapIterator* iter, oop base) :
    83   ZHeapIteratorPushOopClosure(ZHeapIterator* iter, oop base) :
    83       _iter(iter),
    84       _iter(iter),
    84       _base(base) {}
    85       _base(base) {}
    85 
    86 
    86   void do_oop_nv(oop* p) {
    87   virtual void do_oop(oop* p) {
    87     const oop obj = HeapAccess<ON_UNKNOWN_OOP_REF>::oop_load_at(_base, _base->field_offset(p));
    88     const oop obj = HeapAccess<ON_UNKNOWN_OOP_REF>::oop_load_at(_base, _base->field_offset(p));
    88     _iter->push(obj);
    89     _iter->push(obj);
    89   }
    90   }
    90 
    91 
    91   void do_oop_nv(narrowOop* p) {
    92   virtual void do_oop(narrowOop* p) {
    92     ShouldNotReachHere();
    93     ShouldNotReachHere();
    93   }
       
    94 
       
    95   virtual void do_oop(oop* p) {
       
    96     do_oop_nv(p);
       
    97   }
       
    98 
       
    99   virtual void do_oop(narrowOop* p) {
       
   100     do_oop_nv(p);
       
   101   }
    94   }
   102 
    95 
   103 #ifdef ASSERT
    96 #ifdef ASSERT
   104   virtual bool should_verify_oops() {
    97   virtual bool should_verify_oops() {
   105     return false;
    98     return false;