< prev index next >

src/hotspot/share/gc/parallel/psCompactionManager.inline.hpp

Print this page




  81   }
  82 }
  83 
  84 template <typename T>
  85 inline void ParCompactionManager::MarkAndPushClosure::do_oop_nv(T* p) {
  86   _compaction_manager->mark_and_push(p);
  87 }
  88 
  89 inline void ParCompactionManager::MarkAndPushClosure::do_oop(oop* p)       { do_oop_nv(p); }
  90 inline void ParCompactionManager::MarkAndPushClosure::do_oop(narrowOop* p) { do_oop_nv(p); }
  91 
  92 inline void ParCompactionManager::follow_klass(Klass* klass) {
  93   oop holder = klass->klass_holder();
  94   mark_and_push(&holder);
  95 }
  96 
  97 inline void ParCompactionManager::FollowStackClosure::do_void() {
  98   _compaction_manager->follow_marking_stacks();
  99 }
 100 
 101 inline void ParCompactionManager::FollowKlassClosure::do_klass(Klass* klass) {
 102   klass->oops_do(_mark_and_push_closure);
 103 }
 104 
 105 inline void ParCompactionManager::follow_class_loader(ClassLoaderData* cld) {
 106   MarkAndPushClosure mark_and_push_closure(this);
 107   FollowKlassClosure follow_klass_closure(&mark_and_push_closure);
 108 
 109   cld->oops_do(&mark_and_push_closure, &follow_klass_closure, true);
 110 }
 111 
 112 inline void ParCompactionManager::follow_contents(oop obj) {
 113   assert(PSParallelCompact::mark_bitmap()->is_marked(obj), "should be marked");
 114   obj->pc_follow_contents(this);
 115 }
 116 
 117 template <class T>
 118 inline void oop_pc_follow_contents_specialized(objArrayOop obj, int index, ParCompactionManager* cm) {
 119   const size_t len = size_t(obj->length());
 120   const size_t beg_index = size_t(index);
 121   assert(beg_index < len || len == 0, "index too large");
 122 
 123   const size_t stride = MIN2(len - beg_index, ObjArrayMarkingStride);
 124   const size_t end_index = beg_index + stride;
 125   T* const base = (T*)obj->base();
 126   T* const beg = base + beg_index;
 127   T* const end = base + end_index;
 128 
 129   if (end_index < len) {




  81   }
  82 }
  83 
  84 template <typename T>
  85 inline void ParCompactionManager::MarkAndPushClosure::do_oop_nv(T* p) {
  86   _compaction_manager->mark_and_push(p);
  87 }
  88 
  89 inline void ParCompactionManager::MarkAndPushClosure::do_oop(oop* p)       { do_oop_nv(p); }
  90 inline void ParCompactionManager::MarkAndPushClosure::do_oop(narrowOop* p) { do_oop_nv(p); }
  91 
  92 inline void ParCompactionManager::follow_klass(Klass* klass) {
  93   oop holder = klass->klass_holder();
  94   mark_and_push(&holder);
  95 }
  96 
  97 inline void ParCompactionManager::FollowStackClosure::do_void() {
  98   _compaction_manager->follow_marking_stacks();
  99 }
 100 




 101 inline void ParCompactionManager::follow_class_loader(ClassLoaderData* cld) {
 102   MarkAndPushClosure mark_and_push_closure(this);

 103 
 104   cld->oops_do(&mark_and_push_closure, true);
 105 }
 106 
 107 inline void ParCompactionManager::follow_contents(oop obj) {
 108   assert(PSParallelCompact::mark_bitmap()->is_marked(obj), "should be marked");
 109   obj->pc_follow_contents(this);
 110 }
 111 
 112 template <class T>
 113 inline void oop_pc_follow_contents_specialized(objArrayOop obj, int index, ParCompactionManager* cm) {
 114   const size_t len = size_t(obj->length());
 115   const size_t beg_index = size_t(index);
 116   assert(beg_index < len || len == 0, "index too large");
 117 
 118   const size_t stride = MIN2(len - beg_index, ObjArrayMarkingStride);
 119   const size_t end_index = beg_index + stride;
 120   T* const base = (T*)obj->base();
 121   T* const beg = base + beg_index;
 122   T* const end = base + end_index;
 123 
 124   if (end_index < len) {


< prev index next >