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

Thu, 22 Sep 2011 10:57:37 -0700

author
johnc
date
Thu, 22 Sep 2011 10:57:37 -0700
changeset 3175
4dfb2df418f2
parent 3168
4f93f0d00802
child 3180
81aa07130d30
permissions
-rw-r--r--

6484982: G1: process references during evacuation pauses
Summary: G1 now uses two reference processors - one is used by concurrent marking and the other is used by STW GCs (both full and incremental evacuation pauses). In an evacuation pause, the reference processor is embedded into the closures used to scan objects. Doing so causes causes reference objects to be 'discovered' by the reference processor. At the end of the evacuation pause, these discovered reference objects are processed - preserving (and copying) referent objects (and their reachable graphs) as appropriate.
Reviewed-by: ysr, jwilhelm, brutisso, stefank, tonyp

tonyp@3168 1 /*
tonyp@3168 2 * Copyright (c) 2011, 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"
tonyp@3168 29 #include "gc_implementation/g1/heapRegionSeq.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 \
tonyp@3168 34 static_field(HeapRegion, GrainBytes, int) \
tonyp@3168 35 \
tonyp@3168 36 nonstatic_field(HeapRegionSeq, _regions, HeapRegion**) \
tonyp@3168 37 nonstatic_field(HeapRegionSeq, _length, size_t) \
tonyp@3168 38 \
tonyp@3168 39 nonstatic_field(G1CollectedHeap, _hrs, HeapRegionSeq) \
tonyp@3168 40 nonstatic_field(G1CollectedHeap, _g1_committed, MemRegion) \
tonyp@3168 41 nonstatic_field(G1CollectedHeap, _summary_bytes_used, size_t) \
tonyp@3168 42
tonyp@3168 43
tonyp@3168 44 #define VM_TYPES_G1(declare_type, declare_toplevel_type) \
tonyp@3168 45 \
tonyp@3168 46 declare_type(G1CollectedHeap, SharedHeap) \
tonyp@3168 47 \
tonyp@3168 48 declare_type(HeapRegion, ContiguousSpace) \
tonyp@3168 49 declare_toplevel_type(HeapRegionSeq) \
tonyp@3168 50 \
tonyp@3168 51 declare_toplevel_type(G1CollectedHeap*) \
tonyp@3168 52 declare_toplevel_type(HeapRegion*) \
tonyp@3168 53
tonyp@3168 54 #endif // SHARE_VM_GC_IMPLEMENTATION_G1_VMSTRUCTS_G1_HPP

mercurial