comparison src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp @ 3982:273b46400613

7086533: G1: assert(!_g1->is_obj_dead(obj)): We should not be preserving dead objs: g1CollectedHeap.cpp:3835 Summary: Some objects may not be marked in the event of an evacuation failure in a partially young GC, during a marking cycle. Avoid this situation by not allowing partially young GCs during a marking cycle. Reviewed-by: tonyp, ysr, brutisso
author johnc
date Wed, 28 Sep 2011 10:36:31 -0700
parents 8229bd737950
children 811ec3d0833b
comparison
equal deleted inserted replaced
3981:e807478bf9ca 3982:273b46400613
3362 { 3362 {
3363 // This call will decide whether this pause is an initial-mark 3363 // This call will decide whether this pause is an initial-mark
3364 // pause. If it is, during_initial_mark_pause() will return true 3364 // pause. If it is, during_initial_mark_pause() will return true
3365 // for the duration of this pause. 3365 // for the duration of this pause.
3366 g1_policy()->decide_on_conc_mark_initiation(); 3366 g1_policy()->decide_on_conc_mark_initiation();
3367
3368 // We do not allow initial-mark to be piggy-backed on a
3369 // partially-young GC.
3370 assert(!g1_policy()->during_initial_mark_pause() ||
3371 g1_policy()->full_young_gcs(), "sanity");
3372
3373 // We also do not allow partially-young GCs during marking.
3374 assert(!mark_in_progress() || g1_policy()->full_young_gcs(), "sanity");
3367 3375
3368 char verbose_str[128]; 3376 char verbose_str[128];
3369 sprintf(verbose_str, "GC pause "); 3377 sprintf(verbose_str, "GC pause ");
3370 if (g1_policy()->full_young_gcs()) { 3378 if (g1_policy()->full_young_gcs()) {
3371 strcat(verbose_str, "(young)"); 3379 strcat(verbose_str, "(young)");