src/share/vm/gc_implementation/g1/concurrentMark.hpp
Print this page
rev 4184 : 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
*** 1,7 ****
/*
! * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
--- 1,7 ----
/*
! * Copyright (c) 2001, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*** 459,478 ****
void swapMarkBitMaps();
// It resets the global marking data structures, as well as the
// task local ones; should be called during initial mark.
void reset();
- // It resets all the marking data structures.
- void clear_marking_state(bool clear_overflow = true);
! // It should be called to indicate which phase we're in (concurrent
! // mark or remark) and how many threads are currently active.
! void set_phase(uint active_tasks, bool concurrent);
// We do this after we're done with marking so that the marking data
// structures are initialised to a sensible and predictable state.
void set_non_marking_state();
// prints all gathered CM-related statistics
void print_stats();
bool cleanup_list_is_empty() {
return _cleanup_list.is_empty();
--- 459,481 ----
void swapMarkBitMaps();
// It resets the global marking data structures, as well as the
// task local ones; should be called during initial mark.
void reset();
! // Resets all the marking data structures. Called when we have to restart
! // marking or when marking completes (via set_non_marking_state below).
! void reset_marking_state(bool clear_overflow = true);
!
// We do this after we're done with marking so that the marking data
// structures are initialised to a sensible and predictable state.
void set_non_marking_state();
+ // It should be called to indicate which phase we're in (concurrent
+ // mark or remark) and how many threads are currently active.
+ void set_phase(uint active_tasks, bool concurrent);
+
// prints all gathered CM-related statistics
void print_stats();
bool cleanup_list_is_empty() {
return _cleanup_list.is_empty();