src/share/vm/gc_implementation/g1/heapRegionSeq.inline.hpp

Tue, 21 Aug 2012 14:10:39 -0700

author
johnc
date
Tue, 21 Aug 2012 14:10:39 -0700
changeset 3998
7383557659bd
parent 3713
720b6a76dd9d
child 5773
a19bea467577
permissions
-rw-r--r--

7185699: G1: Prediction model discrepancies
Summary: Correct the result value of G1CollectedHeap::pending_card_num(). Change the code that calculates the GC efficiency of a non-young heap region to use historical data from mixed GCs and the actual number of live bytes when predicting how long it would take to collect the region. Changes were also reviewed by Thomas Schatzl.
Reviewed-by: azeemj, brutisso

ysr@777 1 /*
tonyp@3713 2 * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
ysr@777 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
ysr@777 4 *
ysr@777 5 * This code is free software; you can redistribute it and/or modify it
ysr@777 6 * under the terms of the GNU General Public License version 2 only, as
ysr@777 7 * published by the Free Software Foundation.
ysr@777 8 *
ysr@777 9 * This code is distributed in the hope that it will be useful, but WITHOUT
ysr@777 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
ysr@777 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
ysr@777 12 * version 2 for more details (a copy is included in the LICENSE file that
ysr@777 13 * accompanied this code).
ysr@777 14 *
ysr@777 15 * You should have received a copy of the GNU General Public License version
ysr@777 16 * 2 along with this work; if not, write to the Free Software Foundation,
ysr@777 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
ysr@777 18 *
trims@1907 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
trims@1907 20 * or visit www.oracle.com if you need additional information or have any
trims@1907 21 * questions.
ysr@777 22 *
ysr@777 23 */
ysr@777 24
stefank@2314 25 #ifndef SHARE_VM_GC_IMPLEMENTATION_G1_HEAPREGIONSEQ_INLINE_HPP
stefank@2314 26 #define SHARE_VM_GC_IMPLEMENTATION_G1_HEAPREGIONSEQ_INLINE_HPP
stefank@2314 27
tonyp@2963 28 #include "gc_implementation/g1/heapRegion.hpp"
stefank@2314 29 #include "gc_implementation/g1/heapRegionSeq.hpp"
stefank@2314 30
tonyp@3713 31 inline uintx HeapRegionSeq::addr_to_index_biased(HeapWord* addr) const {
tonyp@2963 32 assert(_heap_bottom <= addr && addr < _heap_end,
tonyp@2963 33 err_msg("addr: "PTR_FORMAT" bottom: "PTR_FORMAT" end: "PTR_FORMAT,
tonyp@2963 34 addr, _heap_bottom, _heap_end));
tonyp@3713 35 uintx index = (uintx) addr >> _region_shift;
tonyp@2963 36 return index;
tonyp@2963 37 }
tonyp@2963 38
tonyp@2963 39 inline HeapRegion* HeapRegionSeq::addr_to_region_unsafe(HeapWord* addr) const {
tonyp@2963 40 assert(_heap_bottom <= addr && addr < _heap_end,
tonyp@2963 41 err_msg("addr: "PTR_FORMAT" bottom: "PTR_FORMAT" end: "PTR_FORMAT,
tonyp@2963 42 addr, _heap_bottom, _heap_end));
tonyp@3713 43 uintx index_biased = addr_to_index_biased(addr);
tonyp@2963 44 HeapRegion* hr = _regions_biased[index_biased];
tonyp@2963 45 assert(hr != NULL, "invariant");
tonyp@2963 46 return hr;
tonyp@2963 47 }
tonyp@2963 48
tonyp@2963 49 inline HeapRegion* HeapRegionSeq::addr_to_region(HeapWord* addr) const {
tonyp@2963 50 if (addr != NULL && addr < _heap_end) {
tonyp@2963 51 assert(addr >= _heap_bottom,
tonyp@2963 52 err_msg("addr: "PTR_FORMAT" bottom: "PTR_FORMAT, addr, _heap_bottom));
tonyp@2963 53 return addr_to_region_unsafe(addr);
ysr@777 54 }
ysr@777 55 return NULL;
ysr@777 56 }
stefank@2314 57
tonyp@3713 58 inline HeapRegion* HeapRegionSeq::at(uint index) const {
tonyp@2963 59 assert(index < length(), "pre-condition");
tonyp@2963 60 HeapRegion* hr = _regions[index];
tonyp@2963 61 assert(hr != NULL, "sanity");
tonyp@2963 62 assert(hr->hrs_index() == index, "sanity");
tonyp@2963 63 return hr;
tonyp@2963 64 }
tonyp@2963 65
stefank@2314 66 #endif // SHARE_VM_GC_IMPLEMENTATION_G1_HEAPREGIONSEQ_INLINE_HPP

mercurial