< prev index next >

src/hotspot/share/gc/cms/parOopClosures.inline.hpp

Print this page




 109       Klass* objK = obj->klass();
 110       markOop m = obj->mark();
 111       oop new_obj;
 112       if (m->is_marked()) { // Contains forwarding pointer.
 113         new_obj = ParNewGeneration::real_forwardee(obj);
 114         oopDesc::encode_store_heap_oop_not_null(p, new_obj);
 115         log_develop_trace(gc, scavenge)("{%s %s ( " PTR_FORMAT " ) " PTR_FORMAT " -> " PTR_FORMAT " (%d)}",
 116                                         "forwarded ",
 117                                         new_obj->klass()->internal_name(), p2i(p), p2i((void *)obj), p2i((void *)new_obj), new_obj->size());
 118       } else {
 119         size_t obj_sz = obj->size_given_klass(objK);
 120         new_obj = _g->copy_to_survivor_space(_par_scan_state, obj, obj_sz, m);
 121         oopDesc::encode_store_heap_oop_not_null(p, new_obj);
 122         if (root_scan) {
 123           // This may have pushed an object.  If we have a root
 124           // category with a lot of roots, can't let the queue get too
 125           // full:
 126           (void)_par_scan_state->trim_queues(10 * ParallelGCThreads);
 127         }
 128       }
 129       if (is_scanning_a_klass()) {
 130         do_klass_barrier();
 131       } else if (gc_barrier) {
 132         // Now call parent closure
 133         par_do_barrier(p);
 134       }
 135     }
 136   }
 137 }
 138 
 139 inline void ParScanWithBarrierClosure::do_oop_nv(oop* p)       { ParScanClosure::do_oop_work(p, true, false); }
 140 inline void ParScanWithBarrierClosure::do_oop_nv(narrowOop* p) { ParScanClosure::do_oop_work(p, true, false); }
 141 
 142 inline void ParScanWithoutBarrierClosure::do_oop_nv(oop* p)       { ParScanClosure::do_oop_work(p, false, false); }
 143 inline void ParScanWithoutBarrierClosure::do_oop_nv(narrowOop* p) { ParScanClosure::do_oop_work(p, false, false); }
 144 
 145 #endif // SHARE_VM_GC_CMS_PAROOPCLOSURES_INLINE_HPP


 109       Klass* objK = obj->klass();
 110       markOop m = obj->mark();
 111       oop new_obj;
 112       if (m->is_marked()) { // Contains forwarding pointer.
 113         new_obj = ParNewGeneration::real_forwardee(obj);
 114         oopDesc::encode_store_heap_oop_not_null(p, new_obj);
 115         log_develop_trace(gc, scavenge)("{%s %s ( " PTR_FORMAT " ) " PTR_FORMAT " -> " PTR_FORMAT " (%d)}",
 116                                         "forwarded ",
 117                                         new_obj->klass()->internal_name(), p2i(p), p2i((void *)obj), p2i((void *)new_obj), new_obj->size());
 118       } else {
 119         size_t obj_sz = obj->size_given_klass(objK);
 120         new_obj = _g->copy_to_survivor_space(_par_scan_state, obj, obj_sz, m);
 121         oopDesc::encode_store_heap_oop_not_null(p, new_obj);
 122         if (root_scan) {
 123           // This may have pushed an object.  If we have a root
 124           // category with a lot of roots, can't let the queue get too
 125           // full:
 126           (void)_par_scan_state->trim_queues(10 * ParallelGCThreads);
 127         }
 128       }
 129       if (is_scanning_a_cld()) {
 130         do_cld_barrier();
 131       } else if (gc_barrier) {
 132         // Now call parent closure
 133         par_do_barrier(p);
 134       }
 135     }
 136   }
 137 }
 138 
 139 inline void ParScanWithBarrierClosure::do_oop_nv(oop* p)       { ParScanClosure::do_oop_work(p, true, false); }
 140 inline void ParScanWithBarrierClosure::do_oop_nv(narrowOop* p) { ParScanClosure::do_oop_work(p, true, false); }
 141 
 142 inline void ParScanWithoutBarrierClosure::do_oop_nv(oop* p)       { ParScanClosure::do_oop_work(p, false, false); }
 143 inline void ParScanWithoutBarrierClosure::do_oop_nv(narrowOop* p) { ParScanClosure::do_oop_work(p, false, false); }
 144 
 145 #endif // SHARE_VM_GC_CMS_PAROOPCLOSURES_INLINE_HPP
< prev index next >