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

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

author
johnc
date
Thu, 22 Sep 2011 10:57:37 -0700
changeset 3175
4dfb2df418f2
parent 2971
c9ca3f51cf41
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 /*
tonyp@2971 2 * Copyright (c) 2007, 2011, 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_VMPSOPERATIONS_HPP
stefank@2314 26 #define SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_VMPSOPERATIONS_HPP
stefank@2314 27
stefank@2314 28 #include "gc_implementation/parallelScavenge/parallelScavengeHeap.hpp"
stefank@2314 29 #include "gc_implementation/shared/vmGCOperations.hpp"
stefank@2314 30 #include "gc_interface/gcCause.hpp"
stefank@2314 31
duke@435 32 class VM_ParallelGCFailedAllocation: public VM_GC_Operation {
duke@435 33 private:
duke@435 34 size_t _size;
duke@435 35 HeapWord* _result;
duke@435 36
duke@435 37 public:
tonyp@2971 38 VM_ParallelGCFailedAllocation(size_t size, unsigned int gc_count);
duke@435 39
duke@435 40 virtual VMOp_Type type() const {
duke@435 41 return VMOp_ParallelGCFailedAllocation;
duke@435 42 }
duke@435 43 virtual void doit();
duke@435 44
duke@435 45 HeapWord* result() const { return _result; }
duke@435 46 };
duke@435 47
duke@435 48 class VM_ParallelGCFailedPermanentAllocation: public VM_GC_Operation {
duke@435 49 private:
duke@435 50 size_t _size;
duke@435 51 HeapWord* _result;
duke@435 52
duke@435 53 public:
duke@435 54 VM_ParallelGCFailedPermanentAllocation(size_t size,
duke@435 55 unsigned int gc_count,
duke@435 56 unsigned int full_gc_count);
duke@435 57 virtual VMOp_Type type() const {
duke@435 58 return VMOp_ParallelGCFailedPermanentAllocation;
duke@435 59 }
duke@435 60 virtual void doit();
duke@435 61 HeapWord* result() const { return _result; }
duke@435 62 };
duke@435 63
duke@435 64 class VM_ParallelGCSystemGC: public VM_GC_Operation {
duke@435 65 public:
duke@435 66 VM_ParallelGCSystemGC(unsigned int gc_count, unsigned int full_gc_count,
duke@435 67 GCCause::Cause gc_cause);
duke@435 68 virtual VMOp_Type type() const { return VMOp_ParallelGCSystemGC; }
duke@435 69 virtual void doit();
duke@435 70 };
stefank@2314 71
stefank@2314 72 #endif // SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_VMPSOPERATIONS_HPP

mercurial