equal
deleted
inserted
replaced
551 // Iff the class loader (or mirror for anonymous classes) is alive the |
551 // Iff the class loader (or mirror for anonymous classes) is alive the |
552 // Klass is considered alive. |
552 // Klass is considered alive. |
553 // The is_alive closure passed in depends on the Garbage Collector used. |
553 // The is_alive closure passed in depends on the Garbage Collector used. |
554 bool is_loader_alive(BoolObjectClosure* is_alive); |
554 bool is_loader_alive(BoolObjectClosure* is_alive); |
555 |
555 |
556 static void clean_weak_klass_links(BoolObjectClosure* is_alive); |
556 static void clean_weak_klass_links(BoolObjectClosure* is_alive, bool clean_alive_klasses = true); |
|
557 static void clean_subklass_tree(BoolObjectClosure* is_alive) { |
|
558 clean_weak_klass_links(is_alive, false /* clean_alive_klasses */); |
|
559 } |
557 |
560 |
558 // iterators |
561 // iterators |
559 virtual int oop_oop_iterate(oop obj, ExtendedOopClosure* blk) = 0; |
562 virtual int oop_oop_iterate(oop obj, ExtendedOopClosure* blk) = 0; |
560 virtual int oop_oop_iterate_v(oop obj, ExtendedOopClosure* blk) { |
563 virtual int oop_oop_iterate_v(oop obj, ExtendedOopClosure* blk) { |
561 return oop_oop_iterate(obj, blk); |
564 return oop_oop_iterate(obj, blk); |
658 static Klass* decode_klass(narrowKlass v); |
661 static Klass* decode_klass(narrowKlass v); |
659 |
662 |
660 private: |
663 private: |
661 // barriers used by klass_oop_store |
664 // barriers used by klass_oop_store |
662 void klass_update_barrier_set(oop v); |
665 void klass_update_barrier_set(oop v); |
663 void klass_update_barrier_set_pre(void* p, oop v); |
666 void klass_update_barrier_set_pre(oop* p, oop v); |
664 }; |
667 }; |
665 |
668 |
666 #endif // SHARE_VM_OOPS_KLASS_HPP |
669 #endif // SHARE_VM_OOPS_KLASS_HPP |