71 |
71 |
72 mark_sweep_phase3(level); |
72 mark_sweep_phase3(level); |
73 |
73 |
74 VALIDATE_MARK_SWEEP_ONLY( |
74 VALIDATE_MARK_SWEEP_ONLY( |
75 if (ValidateMarkSweep) { |
75 if (ValidateMarkSweep) { |
76 guarantee(_root_refs_stack->length() == 0, |
76 guarantee(_root_refs_stack->length() == 0, "should be empty by now"); |
77 "should be empty by now"); |
|
78 } |
77 } |
79 ) |
78 ) |
80 |
79 |
81 mark_sweep_phase4(); |
80 mark_sweep_phase4(); |
82 |
81 |
163 int size = SystemDictionary::number_of_classes() * 2; |
162 int size = SystemDictionary::number_of_classes() * 2; |
164 _revisit_klass_stack = new (ResourceObj::C_HEAP) GrowableArray<Klass*>(size, true); |
163 _revisit_klass_stack = new (ResourceObj::C_HEAP) GrowableArray<Klass*>(size, true); |
165 |
164 |
166 #ifdef VALIDATE_MARK_SWEEP |
165 #ifdef VALIDATE_MARK_SWEEP |
167 if (ValidateMarkSweep) { |
166 if (ValidateMarkSweep) { |
168 _root_refs_stack = new (ResourceObj::C_HEAP) GrowableArray<oop*>(100, true); |
167 _root_refs_stack = new (ResourceObj::C_HEAP) GrowableArray<void*>(100, true); |
169 _other_refs_stack = new (ResourceObj::C_HEAP) GrowableArray<oop*>(100, true); |
168 _other_refs_stack = new (ResourceObj::C_HEAP) GrowableArray<void*>(100, true); |
170 _adjusted_pointers = new (ResourceObj::C_HEAP) GrowableArray<oop*>(100, true); |
169 _adjusted_pointers = new (ResourceObj::C_HEAP) GrowableArray<void*>(100, true); |
171 _live_oops = new (ResourceObj::C_HEAP) GrowableArray<oop>(100, true); |
170 _live_oops = new (ResourceObj::C_HEAP) GrowableArray<oop>(100, true); |
172 _live_oops_moved_to = new (ResourceObj::C_HEAP) GrowableArray<oop>(100, true); |
171 _live_oops_moved_to = new (ResourceObj::C_HEAP) GrowableArray<oop>(100, true); |
173 _live_oops_size = new (ResourceObj::C_HEAP) GrowableArray<size_t>(100, true); |
172 _live_oops_size = new (ResourceObj::C_HEAP) GrowableArray<size_t>(100, true); |
174 } |
173 } |
175 if (RecordMarkSweepCompaction) { |
174 if (RecordMarkSweepCompaction) { |