src/share/vm/gc_implementation/parallelScavenge/vmStructs_parallelgc.hpp

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

author
johnc
date
Thu, 22 Sep 2011 10:57:37 -0700
changeset 3175
4dfb2df418f2
parent 2314
f95d63e2154a
child 4037
da91efe96a93
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

duke@435 1 /*
stefank@2314 2 * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
duke@435 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
duke@435 4 *
duke@435 5 * This code is free software; you can redistribute it and/or modify it
duke@435 6 * under the terms of the GNU General Public License version 2 only, as
duke@435 7 * published by the Free Software Foundation.
duke@435 8 *
duke@435 9 * This code is distributed in the hope that it will be useful, but WITHOUT
duke@435 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
duke@435 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
duke@435 12 * version 2 for more details (a copy is included in the LICENSE file that
duke@435 13 * accompanied this code).
duke@435 14 *
duke@435 15 * You should have received a copy of the GNU General Public License version
duke@435 16 * 2 along with this work; if not, write to the Free Software Foundation,
duke@435 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
duke@435 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.
duke@435 22 *
duke@435 23 */
duke@435 24
stefank@2314 25 #ifndef SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_VMSTRUCTS_PARALLELGC_HPP
stefank@2314 26 #define SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_VMSTRUCTS_PARALLELGC_HPP
stefank@2314 27
duke@435 28 #define VM_STRUCTS_PARALLELGC(nonstatic_field, \
duke@435 29 static_field) \
duke@435 30 \
duke@435 31 /**********************/ \
duke@435 32 /* Parallel GC fields */ \
duke@435 33 /**********************/ \
duke@435 34 nonstatic_field(PSVirtualSpace, _alignment, const size_t) \
duke@435 35 nonstatic_field(PSVirtualSpace, _reserved_low_addr, char*) \
duke@435 36 nonstatic_field(PSVirtualSpace, _reserved_high_addr, char*) \
duke@435 37 nonstatic_field(PSVirtualSpace, _committed_low_addr, char*) \
duke@435 38 nonstatic_field(PSVirtualSpace, _committed_high_addr, char*) \
duke@435 39 \
duke@435 40 nonstatic_field(ImmutableSpace, _bottom, HeapWord*) \
duke@435 41 nonstatic_field(ImmutableSpace, _end, HeapWord*) \
duke@435 42 \
duke@435 43 nonstatic_field(MutableSpace, _top, HeapWord*) \
duke@435 44 \
duke@435 45 nonstatic_field(PSYoungGen, _reserved, MemRegion) \
duke@435 46 nonstatic_field(PSYoungGen, _virtual_space, PSVirtualSpace*) \
duke@435 47 nonstatic_field(PSYoungGen, _eden_space, MutableSpace*) \
duke@435 48 nonstatic_field(PSYoungGen, _from_space, MutableSpace*) \
duke@435 49 nonstatic_field(PSYoungGen, _to_space, MutableSpace*) \
duke@435 50 nonstatic_field(PSYoungGen, _init_gen_size, const size_t) \
duke@435 51 nonstatic_field(PSYoungGen, _min_gen_size, const size_t) \
duke@435 52 nonstatic_field(PSYoungGen, _max_gen_size, const size_t) \
duke@435 53 \
duke@435 54 nonstatic_field(PSOldGen, _reserved, MemRegion) \
duke@435 55 nonstatic_field(PSOldGen, _virtual_space, PSVirtualSpace*) \
duke@435 56 nonstatic_field(PSOldGen, _object_space, MutableSpace*) \
duke@435 57 nonstatic_field(PSOldGen, _init_gen_size, const size_t) \
duke@435 58 nonstatic_field(PSOldGen, _min_gen_size, const size_t) \
duke@435 59 nonstatic_field(PSOldGen, _max_gen_size, const size_t) \
duke@435 60 \
duke@435 61 nonstatic_field(PSPermGen, _last_used, size_t) \
duke@435 62 \
duke@435 63 static_field(ParallelScavengeHeap, _young_gen, PSYoungGen*) \
duke@435 64 static_field(ParallelScavengeHeap, _old_gen, PSOldGen*) \
duke@435 65 static_field(ParallelScavengeHeap, _perm_gen, PSPermGen*) \
duke@435 66 static_field(ParallelScavengeHeap, _psh, ParallelScavengeHeap*) \
duke@435 67 \
duke@435 68
duke@435 69 #define VM_TYPES_PARALLELGC(declare_type, \
duke@435 70 declare_toplevel_type) \
duke@435 71 \
duke@435 72 /*****************************************/ \
duke@435 73 /* Parallel GC - space, gen abstractions */ \
duke@435 74 /*****************************************/ \
duke@435 75 declare_type(ParallelScavengeHeap, CollectedHeap) \
duke@435 76 \
duke@435 77 declare_toplevel_type(PSVirtualSpace) \
duke@435 78 declare_toplevel_type(ImmutableSpace) \
duke@435 79 declare_type(MutableSpace, ImmutableSpace) \
duke@435 80 declare_toplevel_type(PSYoungGen) \
duke@435 81 declare_type(ASPSYoungGen, PSYoungGen) \
duke@435 82 declare_toplevel_type(PSOldGen) \
duke@435 83 declare_type(ASPSOldGen, PSOldGen) \
duke@435 84 declare_type(PSPermGen, PSOldGen) \
duke@435 85 \
duke@435 86 /*****************************/ \
duke@435 87 /* Parallel GC pointer types */ \
duke@435 88 /*****************************/ \
duke@435 89 \
duke@435 90 declare_toplevel_type(PSVirtualSpace*) \
duke@435 91 declare_toplevel_type(ImmutableSpace*) \
duke@435 92 declare_toplevel_type(MutableSpace*) \
duke@435 93 declare_toplevel_type(PSYoungGen*) \
duke@435 94 declare_toplevel_type(ASPSYoungGen*) \
duke@435 95 declare_toplevel_type(PSOldGen*) \
duke@435 96 declare_toplevel_type(ASPSOldGen*) \
duke@435 97 declare_toplevel_type(PSPermGen*) \
duke@435 98 declare_toplevel_type(ParallelScavengeHeap*)
stefank@2314 99
stefank@2314 100 #endif // SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_VMSTRUCTS_PARALLELGC_HPP

mercurial