< prev index next >

src/hotspot/share/gc/g1/g1ConcurrentMark.hpp

Print this page
rev 57138 : [mq]: 8234796-v3


  28 #include "gc/g1/g1ConcurrentMarkBitMap.hpp"
  29 #include "gc/g1/g1ConcurrentMarkObjArrayProcessor.hpp"
  30 #include "gc/g1/g1HeapVerifier.hpp"
  31 #include "gc/g1/g1RegionMarkStatsCache.hpp"
  32 #include "gc/g1/heapRegionSet.hpp"
  33 #include "gc/shared/taskqueue.hpp"
  34 #include "gc/shared/verifyOption.hpp"
  35 #include "gc/shared/workgroup.hpp"
  36 #include "memory/allocation.hpp"
  37 #include "utilities/compilerWarnings.hpp"
  38 
  39 class ConcurrentGCTimer;
  40 class G1ConcurrentMarkThread;
  41 class G1CollectedHeap;
  42 class G1CMOopClosure;
  43 class G1CMTask;
  44 class G1ConcurrentMark;
  45 class G1OldTracer;
  46 class G1RegionToSpaceMapper;
  47 class G1SurvivorRegions;

  48 
  49 PRAGMA_DIAG_PUSH
  50 // warning C4522: multiple assignment operators specified
  51 PRAGMA_DISABLE_MSVC_WARNING(4522)
  52 
  53 // This is a container class for either an oop or a continuation address for
  54 // mark stack entries. Both are pushed onto the mark stack.
  55 class G1TaskQueueEntry {
  56 private:
  57   void* _holder;
  58 
  59   static const uintptr_t ArraySliceBit = 1;
  60 
  61   G1TaskQueueEntry(oop obj) : _holder(obj) {
  62     assert(_holder != NULL, "Not allowed to set NULL task queue element");
  63   }
  64   G1TaskQueueEntry(HeapWord* addr) : _holder((void*)((uintptr_t)addr | ArraySliceBit)) { }
  65 public:
  66   G1TaskQueueEntry(const G1TaskQueueEntry& other) { _holder = other._holder; }
  67   G1TaskQueueEntry() : _holder(NULL) { }




  28 #include "gc/g1/g1ConcurrentMarkBitMap.hpp"
  29 #include "gc/g1/g1ConcurrentMarkObjArrayProcessor.hpp"
  30 #include "gc/g1/g1HeapVerifier.hpp"
  31 #include "gc/g1/g1RegionMarkStatsCache.hpp"
  32 #include "gc/g1/heapRegionSet.hpp"
  33 #include "gc/shared/taskqueue.hpp"
  34 #include "gc/shared/verifyOption.hpp"
  35 #include "gc/shared/workgroup.hpp"
  36 #include "memory/allocation.hpp"
  37 #include "utilities/compilerWarnings.hpp"
  38 
  39 class ConcurrentGCTimer;
  40 class G1ConcurrentMarkThread;
  41 class G1CollectedHeap;
  42 class G1CMOopClosure;
  43 class G1CMTask;
  44 class G1ConcurrentMark;
  45 class G1OldTracer;
  46 class G1RegionToSpaceMapper;
  47 class G1SurvivorRegions;
  48 class ThreadClosure;
  49 
  50 PRAGMA_DIAG_PUSH
  51 // warning C4522: multiple assignment operators specified
  52 PRAGMA_DISABLE_MSVC_WARNING(4522)
  53 
  54 // This is a container class for either an oop or a continuation address for
  55 // mark stack entries. Both are pushed onto the mark stack.
  56 class G1TaskQueueEntry {
  57 private:
  58   void* _holder;
  59 
  60   static const uintptr_t ArraySliceBit = 1;
  61 
  62   G1TaskQueueEntry(oop obj) : _holder(obj) {
  63     assert(_holder != NULL, "Not allowed to set NULL task queue element");
  64   }
  65   G1TaskQueueEntry(HeapWord* addr) : _holder((void*)((uintptr_t)addr | ArraySliceBit)) { }
  66 public:
  67   G1TaskQueueEntry(const G1TaskQueueEntry& other) { _holder = other._holder; }
  68   G1TaskQueueEntry() : _holder(NULL) { }


< prev index next >