69 _itr.weak_oops_do(is_alive, keep_alive); |
69 _itr.weak_oops_do(is_alive, keep_alive); |
70 } |
70 } |
71 |
71 |
72 template <bool CONCURRENT> |
72 template <bool CONCURRENT> |
73 ShenandoahWeakRoots<CONCURRENT>::ShenandoahWeakRoots() : |
73 ShenandoahWeakRoots<CONCURRENT>::ShenandoahWeakRoots() : |
74 _jni_roots(JNIHandles::weak_global_handles(), ShenandoahPhaseTimings::JNIWeakRoots), |
74 _jni_roots(OopStorageSet::jni_weak(), ShenandoahPhaseTimings::JNIWeakRoots), |
75 _string_table_roots(StringTable::weak_storage(), ShenandoahPhaseTimings::StringTableRoots), |
75 _string_table_roots(OopStorageSet::string_table_weak(), ShenandoahPhaseTimings::StringTableRoots), |
76 _resolved_method_table_roots(ResolvedMethodTable::weak_storage(), ShenandoahPhaseTimings::ResolvedMethodTableRoots), |
76 _resolved_method_table_roots(OopStorageSet::resolved_method_table_weak(), ShenandoahPhaseTimings::ResolvedMethodTableRoots), |
77 _vm_roots(SystemDictionary::vm_weak_oop_storage(), ShenandoahPhaseTimings::VMWeakRoots) { |
77 _vm_roots(OopStorageSet::vm_weak(), ShenandoahPhaseTimings::VMWeakRoots) { |
78 } |
78 } |
79 |
79 |
80 template <bool CONCURRENT> |
80 template <bool CONCURRENT> |
81 template <typename Closure> |
81 template <typename Closure> |
82 void ShenandoahWeakRoots<CONCURRENT>::oops_do(Closure* cl, uint worker_id) { |
82 void ShenandoahWeakRoots<CONCURRENT>::oops_do(Closure* cl, uint worker_id) { |
85 _resolved_method_table_roots.oops_do(cl, worker_id); |
85 _resolved_method_table_roots.oops_do(cl, worker_id); |
86 _vm_roots.oops_do(cl, worker_id); |
86 _vm_roots.oops_do(cl, worker_id); |
87 } |
87 } |
88 |
88 |
89 inline ShenandoahWeakRoots<false /* concurrent */>::ShenandoahWeakRoots() : |
89 inline ShenandoahWeakRoots<false /* concurrent */>::ShenandoahWeakRoots() : |
90 _jni_roots(JNIHandles::weak_global_handles(), ShenandoahPhaseTimings::JNIWeakRoots), |
90 _jni_roots(OopStorageSet::jni_weak(), ShenandoahPhaseTimings::JNIWeakRoots), |
91 _string_table_roots(StringTable::weak_storage(), ShenandoahPhaseTimings::StringTableRoots), |
91 _string_table_roots(OopStorageSet::string_table_weak(), ShenandoahPhaseTimings::StringTableRoots), |
92 _resolved_method_table_roots(ResolvedMethodTable::weak_storage(), ShenandoahPhaseTimings::ResolvedMethodTableRoots), |
92 _resolved_method_table_roots(OopStorageSet::resolved_method_table_weak(), ShenandoahPhaseTimings::ResolvedMethodTableRoots), |
93 _vm_roots(SystemDictionary::vm_weak_oop_storage(), ShenandoahPhaseTimings::VMWeakRoots) { |
93 _vm_roots(OopStorageSet::vm_weak(), ShenandoahPhaseTimings::VMWeakRoots) { |
94 } |
94 } |
95 |
95 |
96 template <typename IsAliveClosure, typename KeepAliveClosure> |
96 template <typename IsAliveClosure, typename KeepAliveClosure> |
97 void ShenandoahWeakRoots<false /* concurrent*/>::weak_oops_do(IsAliveClosure* is_alive, KeepAliveClosure* keep_alive, uint worker_id) { |
97 void ShenandoahWeakRoots<false /* concurrent*/>::weak_oops_do(IsAliveClosure* is_alive, KeepAliveClosure* keep_alive, uint worker_id) { |
98 _jni_roots.weak_oops_do(is_alive, keep_alive, worker_id); |
98 _jni_roots.weak_oops_do(is_alive, keep_alive, worker_id); |
107 weak_oops_do<AlwaysTrueClosure, Closure>(&always_true, cl, worker_id); |
107 weak_oops_do<AlwaysTrueClosure, Closure>(&always_true, cl, worker_id); |
108 } |
108 } |
109 |
109 |
110 template <bool CONCURRENT> |
110 template <bool CONCURRENT> |
111 ShenandoahVMRoots<CONCURRENT>::ShenandoahVMRoots() : |
111 ShenandoahVMRoots<CONCURRENT>::ShenandoahVMRoots() : |
112 _jni_handle_roots(JNIHandles::global_handles(), ShenandoahPhaseTimings::JNIRoots), |
112 _jni_handle_roots(OopStorageSet::jni_global(), ShenandoahPhaseTimings::JNIRoots), |
113 _vm_global_roots(SystemDictionary::vm_global_oop_storage(), ShenandoahPhaseTimings::VMGlobalRoots) { |
113 _vm_global_roots(OopStorageSet::vm_global(), ShenandoahPhaseTimings::VMGlobalRoots) { |
114 } |
114 } |
115 |
115 |
116 template <bool CONCURRENT> |
116 template <bool CONCURRENT> |
117 template <typename T> |
117 template <typename T> |
118 void ShenandoahVMRoots<CONCURRENT>::oops_do(T* cl, uint worker_id) { |
118 void ShenandoahVMRoots<CONCURRENT>::oops_do(T* cl, uint worker_id) { |