comparison src/share/vm/gc_implementation/g1/concurrentMarkThread.cpp @ 7450:d275c3dc73e6

8004816: G1: Kitchensink failures after marking stack changes Summary: Reset the marking state, including the mark stack overflow flag, in the event of a marking stack overflow during serial reference processing. Reviewed-by: jmasa
author johnc
date Thu, 03 Jan 2013 16:28:22 -0800
parents 37552638d24a
children 96c885895d22
comparison
equal deleted inserted replaced
7449:37f7535e5f18 7450:d275c3dc73e6
1 /* 1 /*
2 * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved. 2 * Copyright (c) 2001, 2013, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 * 4 *
5 * This code is free software; you can redistribute it and/or modify it 5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as 6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. 7 * published by the Free Software Foundation.
157 CMCheckpointRootsFinalClosure final_cl(_cm); 157 CMCheckpointRootsFinalClosure final_cl(_cm);
158 sprintf(verbose_str, "GC remark"); 158 sprintf(verbose_str, "GC remark");
159 VM_CGC_Operation op(&final_cl, verbose_str, true /* needs_pll */); 159 VM_CGC_Operation op(&final_cl, verbose_str, true /* needs_pll */);
160 VMThread::execute(&op); 160 VMThread::execute(&op);
161 } 161 }
162 if (cm()->restart_for_overflow() &&
163 G1TraceMarkStackOverflow) {
164 gclog_or_tty->print_cr("Restarting conc marking because of MS overflow "
165 "in remark (restart #%d).", iter);
166 }
167
168 if (cm()->restart_for_overflow()) { 162 if (cm()->restart_for_overflow()) {
163 if (G1TraceMarkStackOverflow) {
164 gclog_or_tty->print_cr("Restarting conc marking because of MS overflow "
165 "in remark (restart #%d).", iter);
166 }
169 if (G1Log::fine()) { 167 if (G1Log::fine()) {
170 gclog_or_tty->date_stamp(PrintGCDateStamps); 168 gclog_or_tty->date_stamp(PrintGCDateStamps);
171 gclog_or_tty->stamp(PrintGCTimeStamps); 169 gclog_or_tty->stamp(PrintGCTimeStamps);
172 gclog_or_tty->print_cr("[GC concurrent-mark-restart-for-overflow]"); 170 gclog_or_tty->print_cr("[GC concurrent-mark-restart-for-overflow]");
173 } 171 }