Mercurial > hg > graal-compiler
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)) { |