hotspot/src/share/vm/gc/shared/vmGCOperations.hpp
changeset 37129 af29e306e50b
parent 35227 176e593eb364
child 37218 c7241bc368bf
equal deleted inserted replaced
37128:ea9e0371b8e6 37129:af29e306e50b
     1 /*
     1 /*
     2  * Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
     2  * Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     4  *
     4  *
     5  * This code is free software; you can redistribute it and/or modify it
     5  * This code is free software; you can redistribute it and/or modify it
     6  * under the terms of the GNU General Public License version 2 only, as
     6  * under the terms of the GNU General Public License version 2 only, as
     7  * published by the Free Software Foundation.
     7  * published by the Free Software Foundation.
    25 #ifndef SHARE_VM_GC_SHARED_VMGCOPERATIONS_HPP
    25 #ifndef SHARE_VM_GC_SHARED_VMGCOPERATIONS_HPP
    26 #define SHARE_VM_GC_SHARED_VMGCOPERATIONS_HPP
    26 #define SHARE_VM_GC_SHARED_VMGCOPERATIONS_HPP
    27 
    27 
    28 #include "gc/shared/collectedHeap.hpp"
    28 #include "gc/shared/collectedHeap.hpp"
    29 #include "gc/shared/genCollectedHeap.hpp"
    29 #include "gc/shared/genCollectedHeap.hpp"
       
    30 #include "gc/shared/referencePendingListLocker.hpp"
    30 #include "memory/heapInspection.hpp"
    31 #include "memory/heapInspection.hpp"
    31 #include "prims/jvmtiExport.hpp"
    32 #include "prims/jvmtiExport.hpp"
    32 #include "runtime/handles.hpp"
    33 #include "runtime/handles.hpp"
    33 #include "runtime/jniHandles.hpp"
    34 #include "runtime/jniHandles.hpp"
    34 #include "runtime/synchronizer.hpp"
    35 #include "runtime/synchronizer.hpp"
    67 //   - these operations preform full collection of heaps of
    68 //   - these operations preform full collection of heaps of
    68 //     different kind
    69 //     different kind
    69 //
    70 //
    70 
    71 
    71 class VM_GC_Operation: public VM_Operation {
    72 class VM_GC_Operation: public VM_Operation {
       
    73  private:
       
    74   ReferencePendingListLocker _pending_list_locker;
       
    75 
    72  protected:
    76  protected:
    73   BasicLock      _pending_list_basic_lock; // for refs pending list notification (PLL)
       
    74   uint           _gc_count_before;         // gc count before acquiring PLL
    77   uint           _gc_count_before;         // gc count before acquiring PLL
    75   uint           _full_gc_count_before;    // full gc count before acquiring PLL
    78   uint           _full_gc_count_before;    // full gc count before acquiring PLL
    76   bool           _full;                    // whether a "full" collection
    79   bool           _full;                    // whether a "full" collection
    77   bool           _prologue_succeeded;      // whether doit_prologue succeeded
    80   bool           _prologue_succeeded;      // whether doit_prologue succeeded
    78   GCCause::Cause _gc_cause;                // the putative cause for this gc op
    81   GCCause::Cause _gc_cause;                // the putative cause for this gc op