src/share/vm/gc_implementation/g1/g1RemSet.hpp

Print this page
rev 3986 : 7176479: G1: JVM crashes on T5-8 system with 1.5 TB heap
Summary: Refactor G1's hot card cache and card counts table into their own files. Simplify the card counts table, including removing the encoding of the card index in each entry. The card counts table now has a 1:1 correspondence with the cards spanned by heap. Space for the card counts table is reserved from virtual memory (rather than C heap) during JVM startup and is committed/expanded when the heap is expanded.
Reviewed-by:

*** 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.
*** 69,79 **** // The routine that performs the actual work of refining a dirty // card. // If check_for_refs_into_refs is true then a true result is returned // if the card contains oops that have references into the current // collection set. ! bool concurrentRefineOneCard_impl(jbyte* card_ptr, int worker_i, bool check_for_refs_into_cset); public: // This is called to reset dual hash tables after the gc pause // is finished and the initial hash table is no longer being --- 69,79 ---- // The routine that performs the actual work of refining a dirty // card. // If check_for_refs_into_refs is true then a true result is returned // if the card contains oops that have references into the current // collection set. ! bool refine_card_helper(jbyte* card_ptr, int worker_i, bool check_for_refs_into_cset); public: // This is called to reset dual hash tables after the gc pause // is finished and the initial hash table is no longer being
*** 128,138 **** // join and leave around parts that must be atomic wrt GC. (NULL means // being done at a safepoint.) // If check_for_refs_into_cset is true, a true result is returned // if the given card contains oops that have references into the // current collection set. ! virtual bool concurrentRefineOneCard(jbyte* card_ptr, int worker_i, bool check_for_refs_into_cset); // Print any relevant summary info. virtual void print_summary_info(); --- 128,138 ---- // join and leave around parts that must be atomic wrt GC. (NULL means // being done at a safepoint.) // If check_for_refs_into_cset is true, a true result is returned // if the given card contains oops that have references into the // current collection set. ! virtual bool refine_card(jbyte* card_ptr, int worker_i, bool check_for_refs_into_cset); // Print any relevant summary info. virtual void print_summary_info();