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);
*** 1350,1359 ****
--- 1347,1361 ----
}
}
cm->follow_marking_stacks();
}
+ 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::mark_and_push(ParCompactionManager* cm, T* p) {
T heap_oop = oopDesc::load_heap_oop(p);
if (!oopDesc::is_null(heap_oop)) {
oop obj = oopDesc::decode_heap_oop_not_null(heap_oop);