hotspot/src/share/vm/gc_implementation/g1/concurrentMark.hpp
changeset 7923 fc200fcd4e05
parent 7657 a80e571c3d96
child 8073 a14dc27842dc
equal deleted inserted replaced
7922:e97540c35e38 7923:fc200fcd4e05
     1 /*
     1 /*
     2  * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
     2  * Copyright (c) 2001, 2011, 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.
    23  */
    23  */
    24 
    24 
    25 #ifndef SHARE_VM_GC_IMPLEMENTATION_G1_CONCURRENTMARK_HPP
    25 #ifndef SHARE_VM_GC_IMPLEMENTATION_G1_CONCURRENTMARK_HPP
    26 #define SHARE_VM_GC_IMPLEMENTATION_G1_CONCURRENTMARK_HPP
    26 #define SHARE_VM_GC_IMPLEMENTATION_G1_CONCURRENTMARK_HPP
    27 
    27 
    28 #include "gc_implementation/g1/heapRegion.hpp"
    28 #include "gc_implementation/g1/heapRegionSets.hpp"
    29 #include "utilities/taskqueue.hpp"
    29 #include "utilities/taskqueue.hpp"
    30 
    30 
    31 class G1CollectedHeap;
    31 class G1CollectedHeap;
    32 class CMTask;
    32 class CMTask;
    33 typedef GenericTaskQueue<oop>            CMTaskQueue;
    33 typedef GenericTaskQueue<oop>            CMTaskQueue;
   367 
   367 
   368   // same as the two above, but for the cleanup task
   368   // same as the two above, but for the cleanup task
   369   double                _cleanup_sleep_factor;
   369   double                _cleanup_sleep_factor;
   370   double                _cleanup_task_overhead;
   370   double                _cleanup_task_overhead;
   371 
   371 
   372   // Stuff related to age cohort processing.
   372   FreeRegionList        _cleanup_list;
   373   struct ParCleanupThreadState {
       
   374     char _pre[64];
       
   375     UncleanRegionList list;
       
   376     char _post[64];
       
   377   };
       
   378   ParCleanupThreadState** _par_cleanup_thread_state;
       
   379 
   373 
   380   // CMS marking support structures
   374   // CMS marking support structures
   381   CMBitMap                _markBitMap1;
   375   CMBitMap                _markBitMap1;
   382   CMBitMap                _markBitMap2;
   376   CMBitMap                _markBitMap2;
   383   CMBitMapRO*             _prevMarkBitMap; // completed mark bitmap
   377   CMBitMapRO*             _prevMarkBitMap; // completed mark bitmap
   481   // structures are initialised to a sensible and predictable state.
   475   // structures are initialised to a sensible and predictable state.
   482   void set_non_marking_state();
   476   void set_non_marking_state();
   483 
   477 
   484   // prints all gathered CM-related statistics
   478   // prints all gathered CM-related statistics
   485   void print_stats();
   479   void print_stats();
       
   480 
       
   481   bool cleanup_list_is_empty() {
       
   482     return _cleanup_list.is_empty();
       
   483   }
   486 
   484 
   487   // accessor methods
   485   // accessor methods
   488   size_t parallel_marking_threads() { return _parallel_marking_threads; }
   486   size_t parallel_marking_threads() { return _parallel_marking_threads; }
   489   double sleep_factor()             { return _sleep_factor; }
   487   double sleep_factor()             { return _sleep_factor; }
   490   double marking_task_overhead()    { return _marking_task_overhead;}
   488   double marking_task_overhead()    { return _marking_task_overhead;}