149 oop_oop_iterate_oop_maps_specialized_reverse<nv, narrowOop>(obj, closure); 150 } else { 151 oop_oop_iterate_oop_maps_specialized_reverse<nv, oop>(obj, closure); 152 } 153 } 154 #endif 155 156 template <bool nv, class OopClosureType> 157 ALWAYSINLINE void InstanceKlass::oop_oop_iterate_oop_maps_bounded(oop obj, OopClosureType* closure, MemRegion mr) { 158 if (UseCompressedOops) { 159 oop_oop_iterate_oop_maps_specialized_bounded<nv, narrowOop>(obj, closure, mr); 160 } else { 161 oop_oop_iterate_oop_maps_specialized_bounded<nv, oop>(obj, closure, mr); 162 } 163 } 164 165 template <bool nv, class OopClosureType> 166 ALWAYSINLINE int InstanceKlass::oop_oop_iterate(oop obj, OopClosureType* closure) { 167 if (Devirtualizer<nv>::do_metadata(closure)) { 168 Devirtualizer<nv>::do_klass(closure, this); 169 if (get_vcc_klass() != NULL) { 170 Devirtualizer<nv>::do_klass(closure, get_vcc_klass()); 171 } 172 } 173 174 oop_oop_iterate_oop_maps<nv>(obj, closure); 175 176 return size_helper(); 177 } 178 179 #if INCLUDE_ALL_GCS 180 template <bool nv, class OopClosureType> 181 ALWAYSINLINE int InstanceKlass::oop_oop_iterate_reverse(oop obj, OopClosureType* closure) { 182 assert(!Devirtualizer<nv>::do_metadata(closure), 183 "Code to handle metadata is not implemented"); 184 185 oop_oop_iterate_oop_maps_reverse<nv>(obj, closure); 186 187 return size_helper(); 188 } 189 #endif 190 191 template <bool nv, class OopClosureType> 192 ALWAYSINLINE int InstanceKlass::oop_oop_iterate_bounded(oop obj, OopClosureType* closure, MemRegion mr) { 193 if (Devirtualizer<nv>::do_metadata(closure)) { 194 if (mr.contains(obj)) { 195 Devirtualizer<nv>::do_klass(closure, this); 196 if (get_vcc_klass() != NULL) { 197 Devirtualizer<nv>::do_klass(closure, get_vcc_klass()); 198 } 199 } 200 } 201 202 oop_oop_iterate_oop_maps_bounded<nv>(obj, closure, mr); 203 204 return size_helper(); 205 } 206 207 #define ALL_INSTANCE_KLASS_OOP_OOP_ITERATE_DEFN(OopClosureType, nv_suffix) \ 208 OOP_OOP_ITERATE_DEFN( InstanceKlass, OopClosureType, nv_suffix) \ 209 OOP_OOP_ITERATE_DEFN_BOUNDED( InstanceKlass, OopClosureType, nv_suffix) \ 210 OOP_OOP_ITERATE_DEFN_BACKWARDS(InstanceKlass, OopClosureType, nv_suffix) 211 212 #endif // SHARE_VM_OOPS_INSTANCEKLASS_INLINE_HPP | 149 oop_oop_iterate_oop_maps_specialized_reverse<nv, narrowOop>(obj, closure); 150 } else { 151 oop_oop_iterate_oop_maps_specialized_reverse<nv, oop>(obj, closure); 152 } 153 } 154 #endif 155 156 template <bool nv, class OopClosureType> 157 ALWAYSINLINE void InstanceKlass::oop_oop_iterate_oop_maps_bounded(oop obj, OopClosureType* closure, MemRegion mr) { 158 if (UseCompressedOops) { 159 oop_oop_iterate_oop_maps_specialized_bounded<nv, narrowOop>(obj, closure, mr); 160 } else { 161 oop_oop_iterate_oop_maps_specialized_bounded<nv, oop>(obj, closure, mr); 162 } 163 } 164 165 template <bool nv, class OopClosureType> 166 ALWAYSINLINE int InstanceKlass::oop_oop_iterate(oop obj, OopClosureType* closure) { 167 if (Devirtualizer<nv>::do_metadata(closure)) { 168 Devirtualizer<nv>::do_klass(closure, this); 169 } 170 171 oop_oop_iterate_oop_maps<nv>(obj, closure); 172 173 return size_helper(); 174 } 175 176 #if INCLUDE_ALL_GCS 177 template <bool nv, class OopClosureType> 178 ALWAYSINLINE int InstanceKlass::oop_oop_iterate_reverse(oop obj, OopClosureType* closure) { 179 assert(!Devirtualizer<nv>::do_metadata(closure), 180 "Code to handle metadata is not implemented"); 181 182 oop_oop_iterate_oop_maps_reverse<nv>(obj, closure); 183 184 return size_helper(); 185 } 186 #endif 187 188 template <bool nv, class OopClosureType> 189 ALWAYSINLINE int InstanceKlass::oop_oop_iterate_bounded(oop obj, OopClosureType* closure, MemRegion mr) { 190 if (Devirtualizer<nv>::do_metadata(closure)) { 191 if (mr.contains(obj)) { 192 Devirtualizer<nv>::do_klass(closure, this); 193 } 194 } 195 196 oop_oop_iterate_oop_maps_bounded<nv>(obj, closure, mr); 197 198 return size_helper(); 199 } 200 201 #define ALL_INSTANCE_KLASS_OOP_OOP_ITERATE_DEFN(OopClosureType, nv_suffix) \ 202 OOP_OOP_ITERATE_DEFN( InstanceKlass, OopClosureType, nv_suffix) \ 203 OOP_OOP_ITERATE_DEFN_BOUNDED( InstanceKlass, OopClosureType, nv_suffix) \ 204 OOP_OOP_ITERATE_DEFN_BACKWARDS(InstanceKlass, OopClosureType, nv_suffix) 205 206 #endif // SHARE_VM_OOPS_INSTANCEKLASS_INLINE_HPP |