comparison src/share/vm/gc_implementation/g1/concurrentMark.hpp @ 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 442f942757c0
children 256d3f43c177
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.
476 void swapMarkBitMaps(); 476 void swapMarkBitMaps();
477 477
478 // It resets the global marking data structures, as well as the 478 // It resets the global marking data structures, as well as the
479 // task local ones; should be called during initial mark. 479 // task local ones; should be called during initial mark.
480 void reset(); 480 void reset();
481 // It resets all the marking data structures. 481
482 void clear_marking_state(bool clear_overflow = true); 482 // Resets all the marking data structures. Called when we have to restart
483 // marking or when marking completes (via set_non_marking_state below).
484 void reset_marking_state(bool clear_overflow = true);
485
486 // We do this after we're done with marking so that the marking data
487 // structures are initialised to a sensible and predictable state.
488 void set_non_marking_state();
483 489
484 // It should be called to indicate which phase we're in (concurrent 490 // It should be called to indicate which phase we're in (concurrent
485 // mark or remark) and how many threads are currently active. 491 // mark or remark) and how many threads are currently active.
486 void set_phase(uint active_tasks, bool concurrent); 492 void set_phase(uint active_tasks, bool concurrent);
487 // We do this after we're done with marking so that the marking data
488 // structures are initialised to a sensible and predictable state.
489 void set_non_marking_state();
490 493
491 // prints all gathered CM-related statistics 494 // prints all gathered CM-related statistics
492 void print_stats(); 495 void print_stats();
493 496
494 bool cleanup_list_is_empty() { 497 bool cleanup_list_is_empty() {