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

Fri, 10 Oct 2014 15:51:58 +0200

author
tschatzl
date
Fri, 10 Oct 2014 15:51:58 +0200
changeset 7257
e7d0505c8a30
parent 7118
227a9e5e4b4a
child 7535
7ae4e26cb1e0
permissions
-rw-r--r--

8059758: Footprint regressions with JDK-8038423
Summary: Changes in JDK-8038423 always initialize (zero out) virtual memory used for auxiliary data structures. This causes a footprint regression for G1 in startup benchmarks. This is because they do not touch that memory at all, so the operating system does not actually commit these pages. The fix is to, if the initialization value of the data structures matches the default value of just committed memory (=0), do not do anything.
Reviewed-by: jwilhelm, brutisso

tonyp@3168 1 /*
mikael@6198 2 * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
tonyp@3168 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
tonyp@3168 4 *
tonyp@3168 5 * This code is free software; you can redistribute it and/or modify it
tonyp@3168 6 * under the terms of the GNU General Public License version 2 only, as
tonyp@3168 7 * published by the Free Software Foundation.
tonyp@3168 8 *
tonyp@3168 9 * This code is distributed in the hope that it will be useful, but WITHOUT
tonyp@3168 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
tonyp@3168 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
tonyp@3168 12 * version 2 for more details (a copy is included in the LICENSE file that
tonyp@3168 13 * accompanied this code).
tonyp@3168 14 *
tonyp@3168 15 * You should have received a copy of the GNU General Public License version
tonyp@3168 16 * 2 along with this work; if not, write to the Free Software Foundation,
tonyp@3168 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
tonyp@3168 18 *
tonyp@3168 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
tonyp@3168 20 * or visit www.oracle.com if you need additional information or have any
tonyp@3168 21 * questions.
tonyp@3168 22 *
tonyp@3168 23 */
tonyp@3168 24
tonyp@3168 25 #ifndef SHARE_VM_GC_IMPLEMENTATION_G1_VMSTRUCTS_G1_HPP
tonyp@3168 26 #define SHARE_VM_GC_IMPLEMENTATION_G1_VMSTRUCTS_G1_HPP
tonyp@3168 27
tonyp@3168 28 #include "gc_implementation/g1/heapRegion.hpp"
tschatzl@7091 29 #include "gc_implementation/g1/heapRegionManager.inline.hpp"
tonyp@3168 30 #include "gc_implementation/g1/g1CollectedHeap.inline.hpp"
tonyp@3168 31
tonyp@3168 32 #define VM_STRUCTS_G1(nonstatic_field, static_field) \
tonyp@3168 33 \
twisti@5726 34 static_field(HeapRegion, GrainBytes, size_t) \
twisti@5726 35 static_field(HeapRegion, LogOfHRGrainBytes, int) \
tonyp@3168 36 \
mgerdin@6990 37 nonstatic_field(G1OffsetTableContigSpace, _top, HeapWord*) \
mgerdin@6990 38 \
tschatzl@5773 39 nonstatic_field(G1HeapRegionTable, _base, address) \
tschatzl@5773 40 nonstatic_field(G1HeapRegionTable, _length, size_t) \
tschatzl@5773 41 nonstatic_field(G1HeapRegionTable, _biased_base, address) \
tschatzl@5773 42 nonstatic_field(G1HeapRegionTable, _bias, size_t) \
tschatzl@5773 43 nonstatic_field(G1HeapRegionTable, _shift_by, uint) \
tschatzl@5773 44 \
tschatzl@7091 45 nonstatic_field(HeapRegionManager, _regions, G1HeapRegionTable) \
tschatzl@7091 46 nonstatic_field(HeapRegionManager, _num_committed, uint) \
tonyp@3168 47 \
sjohanss@7118 48 nonstatic_field(G1Allocator, _summary_bytes_used, size_t) \
sjohanss@7118 49 \
tschatzl@7091 50 nonstatic_field(G1CollectedHeap, _hrm, HeapRegionManager) \
tonyp@3180 51 nonstatic_field(G1CollectedHeap, _g1mm, G1MonitoringSupport*) \
tonyp@3457 52 nonstatic_field(G1CollectedHeap, _old_set, HeapRegionSetBase) \
tonyp@3457 53 nonstatic_field(G1CollectedHeap, _humongous_set, HeapRegionSetBase) \
sjohanss@7118 54 nonstatic_field(G1CollectedHeap, _allocator, G1Allocator*) \
tonyp@3180 55 \
tonyp@3180 56 nonstatic_field(G1MonitoringSupport, _eden_committed, size_t) \
tonyp@3180 57 nonstatic_field(G1MonitoringSupport, _eden_used, size_t) \
tonyp@3180 58 nonstatic_field(G1MonitoringSupport, _survivor_committed, size_t) \
tonyp@3180 59 nonstatic_field(G1MonitoringSupport, _survivor_used, size_t) \
tonyp@3180 60 nonstatic_field(G1MonitoringSupport, _old_committed, size_t) \
tonyp@3180 61 nonstatic_field(G1MonitoringSupport, _old_used, size_t) \
tonyp@3457 62 \
brutisso@6385 63 nonstatic_field(HeapRegionSetBase, _count, HeapRegionSetCount) \
brutisso@6385 64 \
brutisso@6385 65 nonstatic_field(HeapRegionSetCount, _length, uint) \
brutisso@6385 66 nonstatic_field(HeapRegionSetCount, _capacity, size_t) \
tonyp@3168 67
tonyp@3168 68
tonyp@3168 69 #define VM_TYPES_G1(declare_type, declare_toplevel_type) \
tonyp@3168 70 \
tschatzl@5773 71 declare_toplevel_type(G1HeapRegionTable) \
tschatzl@5773 72 \
tonyp@3168 73 declare_type(G1CollectedHeap, SharedHeap) \
tonyp@3168 74 \
mgerdin@6990 75 declare_type(G1OffsetTableContigSpace, CompactibleSpace) \
mgerdin@6990 76 declare_type(HeapRegion, G1OffsetTableContigSpace) \
sjohanss@7118 77 declare_toplevel_type(HeapRegionManager) \
tonyp@3457 78 declare_toplevel_type(HeapRegionSetBase) \
brutisso@6385 79 declare_toplevel_type(HeapRegionSetCount) \
tonyp@3180 80 declare_toplevel_type(G1MonitoringSupport) \
sjohanss@7118 81 declare_toplevel_type(G1Allocator) \
tonyp@3168 82 \
tonyp@3168 83 declare_toplevel_type(G1CollectedHeap*) \
tonyp@3168 84 declare_toplevel_type(HeapRegion*) \
tonyp@3180 85 declare_toplevel_type(G1MonitoringSupport*) \
sjohanss@7118 86 declare_toplevel_type(G1Allocator*) \
tonyp@3180 87
tonyp@3168 88
tonyp@3168 89 #endif // SHARE_VM_GC_IMPLEMENTATION_G1_VMSTRUCTS_G1_HPP

mercurial