comparison src/share/vm/gc_implementation/shared/markSweep.inline.hpp @ 1836:894b1d7c7e01

6423256: GC stacks should use a better data structure 6942771: SEGV in ParScanThreadState::take_from_overflow_stack Reviewed-by: apetrusenko, ysr, pbk
author jcoomes
date Tue, 28 Sep 2010 15:56:15 -0700
parents c18cbe5936b8
children f95d63e2154a
comparison
equal deleted inserted replaced
1835:4805b9f4779e 1836:894b1d7c7e01
70 T heap_oop = oopDesc::load_heap_oop(p); 70 T heap_oop = oopDesc::load_heap_oop(p);
71 if (!oopDesc::is_null(heap_oop)) { 71 if (!oopDesc::is_null(heap_oop)) {
72 oop obj = oopDesc::decode_heap_oop_not_null(heap_oop); 72 oop obj = oopDesc::decode_heap_oop_not_null(heap_oop);
73 if (!obj->mark()->is_marked()) { 73 if (!obj->mark()->is_marked()) {
74 mark_object(obj); 74 mark_object(obj);
75 _marking_stack->push(obj); 75 _marking_stack.push(obj);
76 } 76 }
77 } 77 }
78 } 78 }
79 79
80 void MarkSweep::push_objarray(oop obj, size_t index) { 80 void MarkSweep::push_objarray(oop obj, size_t index) {
81 ObjArrayTask task(obj, index); 81 ObjArrayTask task(obj, index);
82 assert(task.is_valid(), "bad ObjArrayTask"); 82 assert(task.is_valid(), "bad ObjArrayTask");
83 _objarray_stack->push(task); 83 _objarray_stack.push(task);
84 } 84 }
85 85
86 template <class T> inline void MarkSweep::adjust_pointer(T* p, bool isroot) { 86 template <class T> inline void MarkSweep::adjust_pointer(T* p, bool isroot) {
87 T heap_oop = oopDesc::load_heap_oop(p); 87 T heap_oop = oopDesc::load_heap_oop(p);
88 if (!oopDesc::is_null(heap_oop)) { 88 if (!oopDesc::is_null(heap_oop)) {