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);