src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.hpp
Print this page
*** 1198,1214 ****
// Check mark and maybe push on marking stack
template <class T> static inline void mark_and_push(ParCompactionManager* cm,
T* p);
template <class T> static inline void adjust_pointer(T* p);
! static void follow_klass(ParCompactionManager* cm, Klass* klass);
! static void adjust_klass(ParCompactionManager* cm, Klass* klass);
static void follow_class_loader(ParCompactionManager* cm,
ClassLoaderData* klass);
- static void adjust_class_loader(ParCompactionManager* cm,
- ClassLoaderData* klass);
// Compaction support.
// Return true if p is in the range [beg_addr, end_addr).
static inline bool is_in(HeapWord* p, HeapWord* beg_addr, HeapWord* end_addr);
static inline bool is_in(oop* p, HeapWord* beg_addr, HeapWord* end_addr);
--- 1198,1211 ----
// Check mark and maybe push on marking stack
template <class T> static inline void mark_and_push(ParCompactionManager* cm,
T* p);
template <class T> static inline void adjust_pointer(T* p);
! static inline void follow_klass(ParCompactionManager* cm, Klass* klass);
static void follow_class_loader(ParCompactionManager* cm,
ClassLoaderData* klass);
// Compaction support.
// Return true if p is in the range [beg_addr, end_addr).
static inline bool is_in(HeapWord* p, HeapWord* beg_addr, HeapWord* end_addr);
static inline bool is_in(oop* p, HeapWord* beg_addr, HeapWord* end_addr);
*** 1378,1387 ****
--- 1375,1389 ----
oopDesc::encode_store_heap_oop_not_null(p, new_obj);
}
}
}
+ inline void PSParallelCompact::follow_klass(ParCompactionManager* cm, Klass* klass) {
+ oop holder = klass->klass_holder();
+ PSParallelCompact::mark_and_push(cm, &holder);
+ }
+
template <class T>
inline void PSParallelCompact::KeepAliveClosure::do_oop_work(T* p) {
mark_and_push(_compaction_manager, p);
}