Mercurial > hg > graal-jvmci-8
comparison src/share/vm/gc_implementation/parallelScavenge/psMarkSweep.cpp @ 356:1ee8caae33af
Merge
author | tonyp |
---|---|
date | Thu, 21 Aug 2008 23:36:31 -0400 |
parents | 12eea04c8b06 |
children | 9ee9cf798b59 a4b729f5b611 |
comparison
equal
deleted
inserted
replaced
355:0edda524b58c | 356:1ee8caae33af |
---|---|
96 PSPermGen* perm_gen = heap->perm_gen(); | 96 PSPermGen* perm_gen = heap->perm_gen(); |
97 | 97 |
98 // Increment the invocation count | 98 // Increment the invocation count |
99 heap->increment_total_collections(true /* full */); | 99 heap->increment_total_collections(true /* full */); |
100 | 100 |
101 // Save information needed to minimize mangling | |
102 heap->record_gen_tops_before_GC(); | |
103 | |
101 // We need to track unique mark sweep invocations as well. | 104 // We need to track unique mark sweep invocations as well. |
102 _total_invocations++; | 105 _total_invocations++; |
103 | 106 |
104 AdaptiveSizePolicyOutput(size_policy, heap->total_collections()); | 107 AdaptiveSizePolicyOutput(size_policy, heap->total_collections()); |
105 | 108 |
186 | 189 |
187 restore_marks(); | 190 restore_marks(); |
188 | 191 |
189 deallocate_stacks(); | 192 deallocate_stacks(); |
190 | 193 |
194 if (ZapUnusedHeapArea) { | |
195 // Do a complete mangle (top to end) because the usage for | |
196 // scratch does not maintain a top pointer. | |
197 young_gen->to_space()->mangle_unused_area_complete(); | |
198 } | |
199 | |
191 eden_empty = young_gen->eden_space()->is_empty(); | 200 eden_empty = young_gen->eden_space()->is_empty(); |
192 if (!eden_empty) { | 201 if (!eden_empty) { |
193 eden_empty = absorb_live_data_from_eden(size_policy, young_gen, old_gen); | 202 eden_empty = absorb_live_data_from_eden(size_policy, young_gen, old_gen); |
194 } | 203 } |
195 | 204 |
196 // Update heap occupancy information which is used as | 205 // Update heap occupancy information which is used as |
197 // input to soft ref clearing policy at the next gc. | 206 // input to soft ref clearing policy at the next gc. |
198 Universe::update_heap_info_at_gc(); | 207 Universe::update_heap_info_at_gc(); |
199 | 208 |
200 survivors_empty = young_gen->from_space()->is_empty() && | 209 survivors_empty = young_gen->from_space()->is_empty() && |
201 young_gen->to_space()->is_empty(); | 210 young_gen->to_space()->is_empty(); |
202 young_gen_empty = eden_empty && survivors_empty; | 211 young_gen_empty = eden_empty && survivors_empty; |
203 | 212 |
204 BarrierSet* bs = heap->barrier_set(); | 213 BarrierSet* bs = heap->barrier_set(); |
205 if (bs->is_a(BarrierSet::ModRef)) { | 214 if (bs->is_a(BarrierSet::ModRef)) { |
206 ModRefBarrierSet* modBS = (ModRefBarrierSet*)bs; | 215 ModRefBarrierSet* modBS = (ModRefBarrierSet*)bs; |
342 VerifyAfterGC) { | 351 VerifyAfterGC) { |
343 old_gen->verify_object_start_array(); | 352 old_gen->verify_object_start_array(); |
344 perm_gen->verify_object_start_array(); | 353 perm_gen->verify_object_start_array(); |
345 } | 354 } |
346 | 355 |
356 if (ZapUnusedHeapArea) { | |
357 old_gen->object_space()->check_mangled_unused_area_complete(); | |
358 perm_gen->object_space()->check_mangled_unused_area_complete(); | |
359 } | |
360 | |
347 NOT_PRODUCT(ref_processor()->verify_no_references_recorded()); | 361 NOT_PRODUCT(ref_processor()->verify_no_references_recorded()); |
348 | 362 |
349 if (PrintHeapAtGC) { | 363 if (PrintHeapAtGC) { |
350 Universe::print_heap_after_gc(); | 364 Universe::print_heap_after_gc(); |
351 } | 365 } |