< prev index next >
src/hotspot/share/oops/oop.inline.hpp
Print this page
*** 430,495 ****
}
// Else skip it. The TypeArrayKlass in the header never needs scavenging.
}
#endif // INCLUDE_PARALLELGC
! #define OOP_ITERATE_DEFN(OopClosureType, nv_suffix) \
! \
! void oopDesc::oop_iterate(OopClosureType* blk) { \
! klass()->oop_oop_iterate##nv_suffix(this, blk); \
! } \
! \
! void oopDesc::oop_iterate(OopClosureType* blk, MemRegion mr) { \
! klass()->oop_oop_iterate_bounded##nv_suffix(this, blk, mr); \
! }
!
! #define OOP_ITERATE_SIZE_DEFN(OopClosureType, nv_suffix) \
! \
! int oopDesc::oop_iterate_size(OopClosureType* blk) { \
! Klass* k = klass(); \
! int size = size_given_klass(k); \
! k->oop_oop_iterate##nv_suffix(this, blk); \
! return size; \
! } \
! \
! int oopDesc::oop_iterate_size(OopClosureType* blk, MemRegion mr) { \
! Klass* k = klass(); \
! int size = size_given_klass(k); \
! k->oop_oop_iterate_bounded##nv_suffix(this, blk, mr); \
! return size; \
}
int oopDesc::oop_iterate_no_header(OopClosure* blk) {
// The NoHeaderExtendedOopClosure wraps the OopClosure and proxies all
! // the do_oop calls, but turns off all other features in ExtendedOopClosure.
NoHeaderExtendedOopClosure cl(blk);
return oop_iterate_size(&cl);
}
int oopDesc::oop_iterate_no_header(OopClosure* blk, MemRegion mr) {
NoHeaderExtendedOopClosure cl(blk);
return oop_iterate_size(&cl, mr);
}
- #if INCLUDE_OOP_OOP_ITERATE_BACKWARDS
- #define OOP_ITERATE_BACKWARDS_DEFN(OopClosureType, nv_suffix) \
- \
- inline void oopDesc::oop_iterate_backwards(OopClosureType* blk) { \
- klass()->oop_oop_iterate_backwards##nv_suffix(this, blk); \
- }
- #else
- #define OOP_ITERATE_BACKWARDS_DEFN(OopClosureType, nv_suffix)
- #endif
-
- #define ALL_OOPDESC_OOP_ITERATE(OopClosureType, nv_suffix) \
- OOP_ITERATE_DEFN(OopClosureType, nv_suffix) \
- OOP_ITERATE_SIZE_DEFN(OopClosureType, nv_suffix) \
- OOP_ITERATE_BACKWARDS_DEFN(OopClosureType, nv_suffix)
-
- ALL_OOP_OOP_ITERATE_CLOSURES_1(ALL_OOPDESC_OOP_ITERATE)
- ALL_OOP_OOP_ITERATE_CLOSURES_2(ALL_OOPDESC_OOP_ITERATE)
-
bool oopDesc::is_instanceof_or_null(oop obj, Klass* klass) {
return obj == NULL || obj->klass()->is_subtype_of(klass);
}
intptr_t oopDesc::identity_hash() {
--- 430,482 ----
}
// Else skip it. The TypeArrayKlass in the header never needs scavenging.
}
#endif // INCLUDE_PARALLELGC
! template <typename OopClosureType>
! void oopDesc::oop_iterate(OopClosureType* cl) {
! OopClosureDispatch::oop_oop_iterate(cl, this, klass());
! }
!
! template <typename OopClosureType>
! void oopDesc::oop_iterate(OopClosureType* cl, MemRegion mr) {
! OopClosureDispatch::oop_oop_iterate(cl, this, klass(), mr);
! }
!
! template <typename OopClosureType>
! int oopDesc::oop_iterate_size(OopClosureType* cl) {
! Klass* k = klass();
! int size = size_given_klass(k);
! OopClosureDispatch::oop_oop_iterate(cl, this, k);
! return size;
! }
!
! template <typename OopClosureType>
! int oopDesc::oop_iterate_size(OopClosureType* cl, MemRegion mr) {
! Klass* k = klass();
! int size = size_given_klass(k);
! OopClosureDispatch::oop_oop_iterate(cl, this, k, mr);
! return size;
! }
!
! template <typename OopClosureType>
! void oopDesc::oop_iterate_backwards(OopClosureType* cl) {
! OopClosureDispatch::oop_oop_iterate_backwards(cl, this, klass());
}
int oopDesc::oop_iterate_no_header(OopClosure* blk) {
// The NoHeaderExtendedOopClosure wraps the OopClosure and proxies all
! // the do_oop calls, but turns off all other features in OopIterateClosure.
NoHeaderExtendedOopClosure cl(blk);
return oop_iterate_size(&cl);
}
int oopDesc::oop_iterate_no_header(OopClosure* blk, MemRegion mr) {
NoHeaderExtendedOopClosure cl(blk);
return oop_iterate_size(&cl, mr);
}
bool oopDesc::is_instanceof_or_null(oop obj, Klass* klass) {
return obj == NULL || obj->klass()->is_subtype_of(klass);
}
intptr_t oopDesc::identity_hash() {
< prev index next >