< prev index next >

src/hotspot/share/memory/iterator.hpp

Print this page
rev 57126 : [mq]: 8234796-v2


  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  *
  23  */
  24 
  25 #ifndef SHARE_MEMORY_ITERATOR_HPP
  26 #define SHARE_MEMORY_ITERATOR_HPP
  27 
  28 #include "memory/allocation.hpp"
  29 #include "memory/memRegion.hpp"
  30 #include "oops/oopsHierarchy.hpp"
  31 
  32 class CodeBlob;
  33 class nmethod;
  34 class ReferenceDiscoverer;
  35 class DataLayout;
  36 class KlassClosure;
  37 class ClassLoaderData;
  38 class Symbol;
  39 class Metadata;

  40 
  41 // The following classes are C++ `closures` for iterating over objects, roots and spaces
  42 
  43 class Closure : public StackObj { };






  44 
  45 // OopClosure is used for iterating through references to Java objects.
  46 class OopClosure : public Closure {
  47  public:
  48   virtual void do_oop(oop* o) = 0;
  49   virtual void do_oop(narrowOop* o) = 0;
  50 };
  51 
  52 class DoNothingClosure : public OopClosure {
  53  public:
  54   virtual void do_oop(oop* p)       {}
  55   virtual void do_oop(narrowOop* p) {}
  56 };
  57 extern DoNothingClosure do_nothing_cl;
  58 
  59 // OopIterateClosure adds extra code to be run during oop iterations.
  60 // This is needed by the GC and is extracted to a separate type to not
  61 // pollute the OopClosure interface.
  62 class OopIterateClosure : public OopClosure {
  63  private:




  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  *
  23  */
  24 
  25 #ifndef SHARE_MEMORY_ITERATOR_HPP
  26 #define SHARE_MEMORY_ITERATOR_HPP
  27 
  28 #include "memory/allocation.hpp"
  29 #include "memory/memRegion.hpp"
  30 #include "oops/oopsHierarchy.hpp"
  31 
  32 class CodeBlob;
  33 class nmethod;
  34 class ReferenceDiscoverer;
  35 class DataLayout;
  36 class KlassClosure;
  37 class ClassLoaderData;
  38 class Symbol;
  39 class Metadata;
  40 class Thread;
  41 
  42 // The following classes are C++ `closures` for iterating over objects, roots and spaces
  43 
  44 class Closure : public StackObj { };
  45 
  46 // Thread iterator
  47 class ThreadClosure: public Closure {
  48  public:
  49   virtual void do_thread(Thread* thread) = 0;
  50 };
  51 
  52 // OopClosure is used for iterating through references to Java objects.
  53 class OopClosure : public Closure {
  54  public:
  55   virtual void do_oop(oop* o) = 0;
  56   virtual void do_oop(narrowOop* o) = 0;
  57 };
  58 
  59 class DoNothingClosure : public OopClosure {
  60  public:
  61   virtual void do_oop(oop* p)       {}
  62   virtual void do_oop(narrowOop* p) {}
  63 };
  64 extern DoNothingClosure do_nothing_cl;
  65 
  66 // OopIterateClosure adds extra code to be run during oop iterations.
  67 // This is needed by the GC and is extracted to a separate type to not
  68 // pollute the OopClosure interface.
  69 class OopIterateClosure : public OopClosure {
  70  private:


< prev index next >