< prev index next >

src/hotspot/share/gc/z/zRootsIterator.hpp

Print this page




  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  */
  23 
  24 #ifndef SHARE_GC_Z_ZROOTSITERATOR_HPP
  25 #define SHARE_GC_Z_ZROOTSITERATOR_HPP
  26 
  27 #include "memory/allocation.hpp"
  28 #include "memory/iterator.hpp"
  29 #include "utilities/globalDefinitions.hpp"
  30 
  31 template <typename T, void (T::*F)(OopClosure*)>
  32 class ZSerialOopsDo VALUE_OBJ_CLASS_SPEC {
  33 private:
  34   T* const      _iter;
  35   volatile bool _claimed;
  36 
  37 public:
  38   ZSerialOopsDo(T* iter);
  39   void oops_do(OopClosure* cl);
  40 } ATTRIBUTE_ALIGNED(DEFAULT_CACHE_LINE_SIZE);
  41 
  42 template <typename T, void (T::*F)(OopClosure*)>
  43 class ZParallelOopsDo VALUE_OBJ_CLASS_SPEC {
  44 private:
  45   T* const      _iter;
  46   volatile bool _completed;
  47 
  48 public:
  49   ZParallelOopsDo(T* iter);
  50   void oops_do(OopClosure* cl);
  51 } ATTRIBUTE_ALIGNED(DEFAULT_CACHE_LINE_SIZE);
  52 
  53 template <typename T, void (T::*F)(BoolObjectClosure*, OopClosure*)>
  54 class ZSerialUnlinkOrOopsDo VALUE_OBJ_CLASS_SPEC {
  55 private:
  56   T* const      _iter;
  57   volatile bool _claimed;
  58 
  59 public:
  60   ZSerialUnlinkOrOopsDo(T* iter);
  61   void unlink_or_oops_do(BoolObjectClosure* is_alive, OopClosure* cl);
  62 } ATTRIBUTE_ALIGNED(DEFAULT_CACHE_LINE_SIZE);
  63 
  64 template <typename T, void (T::*F)(BoolObjectClosure*, OopClosure*)>
  65 class ZParallelUnlinkOrOopsDo VALUE_OBJ_CLASS_SPEC {
  66 private:
  67   T* const      _iter;
  68   volatile bool _completed;
  69 
  70 public:
  71   ZParallelUnlinkOrOopsDo(T* iter);
  72   void unlink_or_oops_do(BoolObjectClosure* is_alive, OopClosure* cl);
  73 } ATTRIBUTE_ALIGNED(DEFAULT_CACHE_LINE_SIZE);
  74 
  75 class ZRootsIterator VALUE_OBJ_CLASS_SPEC {
  76 private:
  77   void do_universe(OopClosure* cl);
  78   void do_jni_handles(OopClosure* cl);
  79   void do_jni_weak_handles(OopClosure* cl);
  80   void do_object_synchronizer(OopClosure* cl);
  81   void do_management(OopClosure* cl);
  82   void do_jvmti_export(OopClosure* cl);
  83   void do_jvmti_weak_export(OopClosure* cl);
  84   void do_trace(OopClosure* cl);
  85   void do_system_dictionary(OopClosure* cl);
  86   void do_class_loader_data_graph(OopClosure* cl);
  87   void do_threads(OopClosure* cl);
  88   void do_code_cache(OopClosure* cl);
  89   void do_string_table(OopClosure* cl);
  90 
  91   ZSerialOopsDo<ZRootsIterator, &ZRootsIterator::do_universe>                  _universe;
  92   ZSerialOopsDo<ZRootsIterator, &ZRootsIterator::do_jni_handles>               _jni_handles;
  93   ZSerialOopsDo<ZRootsIterator, &ZRootsIterator::do_jni_weak_handles>          _jni_weak_handles;




  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  */
  23 
  24 #ifndef SHARE_GC_Z_ZROOTSITERATOR_HPP
  25 #define SHARE_GC_Z_ZROOTSITERATOR_HPP
  26 
  27 #include "memory/allocation.hpp"
  28 #include "memory/iterator.hpp"
  29 #include "utilities/globalDefinitions.hpp"
  30 
  31 template <typename T, void (T::*F)(OopClosure*)>
  32 class ZSerialOopsDo VALUE_OBJ_CLASS_SPEC {
  33 private:
  34   T* const      _iter;
  35   volatile bool _claimed;
  36 
  37 public:
  38   ZSerialOopsDo(T* iter);
  39   void oops_do(OopClosure* cl);
  40 };
  41 
  42 template <typename T, void (T::*F)(OopClosure*)>
  43 class ZParallelOopsDo VALUE_OBJ_CLASS_SPEC {
  44 private:
  45   T* const      _iter;
  46   volatile bool _completed;
  47 
  48 public:
  49   ZParallelOopsDo(T* iter);
  50   void oops_do(OopClosure* cl);
  51 };
  52 
  53 template <typename T, void (T::*F)(BoolObjectClosure*, OopClosure*)>
  54 class ZSerialUnlinkOrOopsDo VALUE_OBJ_CLASS_SPEC {
  55 private:
  56   T* const      _iter;
  57   volatile bool _claimed;
  58 
  59 public:
  60   ZSerialUnlinkOrOopsDo(T* iter);
  61   void unlink_or_oops_do(BoolObjectClosure* is_alive, OopClosure* cl);
  62 };
  63 
  64 template <typename T, void (T::*F)(BoolObjectClosure*, OopClosure*)>
  65 class ZParallelUnlinkOrOopsDo VALUE_OBJ_CLASS_SPEC {
  66 private:
  67   T* const      _iter;
  68   volatile bool _completed;
  69 
  70 public:
  71   ZParallelUnlinkOrOopsDo(T* iter);
  72   void unlink_or_oops_do(BoolObjectClosure* is_alive, OopClosure* cl);
  73 };
  74 
  75 class ZRootsIterator VALUE_OBJ_CLASS_SPEC {
  76 private:
  77   void do_universe(OopClosure* cl);
  78   void do_jni_handles(OopClosure* cl);
  79   void do_jni_weak_handles(OopClosure* cl);
  80   void do_object_synchronizer(OopClosure* cl);
  81   void do_management(OopClosure* cl);
  82   void do_jvmti_export(OopClosure* cl);
  83   void do_jvmti_weak_export(OopClosure* cl);
  84   void do_trace(OopClosure* cl);
  85   void do_system_dictionary(OopClosure* cl);
  86   void do_class_loader_data_graph(OopClosure* cl);
  87   void do_threads(OopClosure* cl);
  88   void do_code_cache(OopClosure* cl);
  89   void do_string_table(OopClosure* cl);
  90 
  91   ZSerialOopsDo<ZRootsIterator, &ZRootsIterator::do_universe>                  _universe;
  92   ZSerialOopsDo<ZRootsIterator, &ZRootsIterator::do_jni_handles>               _jni_handles;
  93   ZSerialOopsDo<ZRootsIterator, &ZRootsIterator::do_jni_weak_handles>          _jni_weak_handles;


< prev index next >