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; |