Mercurial > hg > truffle
comparison src/share/vm/oops/klass.hpp @ 20278:2c6ef90f030a
8049421: G1 Class Unloading after completing a concurrent mark cycle
Reviewed-by: tschatzl, ehelin, brutisso, coleenp, roland, iveresov
Contributed-by: stefan.karlsson@oracle.com, mikael.gerdin@oracle.com
author | stefank |
---|---|
date | Mon, 07 Jul 2014 10:12:40 +0200 |
parents | 76b588255908 |
children | 6e0cb14ce59b |
comparison
equal
deleted
inserted
replaced
20277:882004b9e7e1 | 20278:2c6ef90f030a |
---|---|
581 // Iff the class loader (or mirror for anonymous classes) is alive the | 581 // Iff the class loader (or mirror for anonymous classes) is alive the |
582 // Klass is considered alive. | 582 // Klass is considered alive. |
583 // The is_alive closure passed in depends on the Garbage Collector used. | 583 // The is_alive closure passed in depends on the Garbage Collector used. |
584 bool is_loader_alive(BoolObjectClosure* is_alive); | 584 bool is_loader_alive(BoolObjectClosure* is_alive); |
585 | 585 |
586 static void clean_weak_klass_links(BoolObjectClosure* is_alive); | 586 static void clean_weak_klass_links(BoolObjectClosure* is_alive, bool clean_alive_klasses = true); |
587 static void clean_subklass_tree(BoolObjectClosure* is_alive) { | |
588 clean_weak_klass_links(is_alive, false /* clean_alive_klasses */); | |
589 } | |
587 | 590 |
588 // iterators | 591 // iterators |
589 virtual int oop_oop_iterate(oop obj, ExtendedOopClosure* blk) = 0; | 592 virtual int oop_oop_iterate(oop obj, ExtendedOopClosure* blk) = 0; |
590 virtual int oop_oop_iterate_v(oop obj, ExtendedOopClosure* blk) { | 593 virtual int oop_oop_iterate_v(oop obj, ExtendedOopClosure* blk) { |
591 return oop_oop_iterate(obj, blk); | 594 return oop_oop_iterate(obj, blk); |
688 static Klass* decode_klass(narrowKlass v); | 691 static Klass* decode_klass(narrowKlass v); |
689 | 692 |
690 private: | 693 private: |
691 // barriers used by klass_oop_store | 694 // barriers used by klass_oop_store |
692 void klass_update_barrier_set(oop v); | 695 void klass_update_barrier_set(oop v); |
693 void klass_update_barrier_set_pre(void* p, oop v); | 696 void klass_update_barrier_set_pre(oop* p, oop v); |
694 }; | 697 }; |
695 | 698 |
696 #endif // SHARE_VM_OOPS_KLASS_HPP | 699 #endif // SHARE_VM_OOPS_KLASS_HPP |