hotspot/src/share/vm/gc/cms/parOopClosures.inline.hpp
changeset 35061 be6025ebffea
parent 34174 4db2fb26dc49
child 37071 d7750d171889
equal deleted inserted replaced
35060:382d0689141c 35061:be6025ebffea
    28 #include "gc/cms/parNewGeneration.hpp"
    28 #include "gc/cms/parNewGeneration.hpp"
    29 #include "gc/cms/parOopClosures.hpp"
    29 #include "gc/cms/parOopClosures.hpp"
    30 #include "gc/shared/cardTableRS.hpp"
    30 #include "gc/shared/cardTableRS.hpp"
    31 #include "gc/shared/genCollectedHeap.hpp"
    31 #include "gc/shared/genCollectedHeap.hpp"
    32 #include "gc/shared/genOopClosures.inline.hpp"
    32 #include "gc/shared/genOopClosures.inline.hpp"
       
    33 #include "logging/log.hpp"
    33 
    34 
    34 template <class T> inline void ParScanWeakRefClosure::do_oop_work(T* p) {
    35 template <class T> inline void ParScanWeakRefClosure::do_oop_work(T* p) {
    35   assert (!oopDesc::is_null(*p), "null weak reference?");
    36   assert (!oopDesc::is_null(*p), "null weak reference?");
    36   oop obj = oopDesc::load_decode_heap_oop_not_null(p);
    37   oop obj = oopDesc::load_decode_heap_oop_not_null(p);
    37   // weak references are sometimes scanned twice; must check
    38   // weak references are sometimes scanned twice; must check
   106       markOop m = obj->mark();
   107       markOop m = obj->mark();
   107       oop new_obj;
   108       oop new_obj;
   108       if (m->is_marked()) { // Contains forwarding pointer.
   109       if (m->is_marked()) { // Contains forwarding pointer.
   109         new_obj = ParNewGeneration::real_forwardee(obj);
   110         new_obj = ParNewGeneration::real_forwardee(obj);
   110         oopDesc::encode_store_heap_oop_not_null(p, new_obj);
   111         oopDesc::encode_store_heap_oop_not_null(p, new_obj);
   111         if (TraceScavenge) {
   112         log_develop_trace(gc, scavenge)("{%s %s ( " PTR_FORMAT " ) " PTR_FORMAT " -> " PTR_FORMAT " (%d)}",
   112           gclog_or_tty->print_cr("{%s %s ( " PTR_FORMAT " ) " PTR_FORMAT " -> " PTR_FORMAT " (%d)}",
   113                                         "forwarded ",
   113              "forwarded ",
   114                                         new_obj->klass()->internal_name(), p2i(p), p2i((void *)obj), p2i((void *)new_obj), new_obj->size());
   114              new_obj->klass()->internal_name(), p2i(p), p2i((void *)obj), p2i((void *)new_obj), new_obj->size());
       
   115         }
       
   116       } else {
   115       } else {
   117         size_t obj_sz = obj->size_given_klass(objK);
   116         size_t obj_sz = obj->size_given_klass(objK);
   118         new_obj = _g->copy_to_survivor_space(_par_scan_state, obj, obj_sz, m);
   117         new_obj = _g->copy_to_survivor_space(_par_scan_state, obj, obj_sz, m);
   119         oopDesc::encode_store_heap_oop_not_null(p, new_obj);
   118         oopDesc::encode_store_heap_oop_not_null(p, new_obj);
   120         if (root_scan) {
   119         if (root_scan) {