106 markOop m = obj->mark(); |
106 markOop m = obj->mark(); |
107 oop new_obj; |
107 oop new_obj; |
108 if (m->is_marked()) { // Contains forwarding pointer. |
108 if (m->is_marked()) { // Contains forwarding pointer. |
109 new_obj = ParNewGeneration::real_forwardee(obj); |
109 new_obj = ParNewGeneration::real_forwardee(obj); |
110 oopDesc::encode_store_heap_oop_not_null(p, new_obj); |
110 oopDesc::encode_store_heap_oop_not_null(p, new_obj); |
111 #ifndef PRODUCT |
|
112 if (TraceScavenge) { |
111 if (TraceScavenge) { |
113 gclog_or_tty->print_cr("{%s %s ( " PTR_FORMAT " ) " PTR_FORMAT " -> " PTR_FORMAT " (%d)}", |
112 gclog_or_tty->print_cr("{%s %s ( " PTR_FORMAT " ) " PTR_FORMAT " -> " PTR_FORMAT " (%d)}", |
114 "forwarded ", |
113 "forwarded ", |
115 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()); |
116 } |
115 } |
117 #endif |
|
118 |
|
119 } else { |
116 } else { |
120 size_t obj_sz = obj->size_given_klass(objK); |
117 size_t obj_sz = obj->size_given_klass(objK); |
121 new_obj = _g->copy_to_survivor_space(_par_scan_state, obj, obj_sz, m); |
118 new_obj = _g->copy_to_survivor_space(_par_scan_state, obj, obj_sz, m); |
122 oopDesc::encode_store_heap_oop_not_null(p, new_obj); |
119 oopDesc::encode_store_heap_oop_not_null(p, new_obj); |
123 if (root_scan) { |
120 if (root_scan) { |