src/share/vm/gc_implementation/g1/concurrentMark.cpp

Print this page
rev 6521 : 8044775: Improve usage of umbrella header atomic.inline.hpp.


  28 #include "gc_implementation/g1/concurrentMarkThread.inline.hpp"
  29 #include "gc_implementation/g1/g1CollectedHeap.inline.hpp"
  30 #include "gc_implementation/g1/g1CollectorPolicy.hpp"
  31 #include "gc_implementation/g1/g1ErgoVerbose.hpp"
  32 #include "gc_implementation/g1/g1Log.hpp"
  33 #include "gc_implementation/g1/g1OopClosures.inline.hpp"
  34 #include "gc_implementation/g1/g1RemSet.hpp"
  35 #include "gc_implementation/g1/heapRegion.inline.hpp"
  36 #include "gc_implementation/g1/heapRegionRemSet.hpp"
  37 #include "gc_implementation/g1/heapRegionSeq.inline.hpp"
  38 #include "gc_implementation/shared/vmGCOperations.hpp"
  39 #include "gc_implementation/shared/gcTimer.hpp"
  40 #include "gc_implementation/shared/gcTrace.hpp"
  41 #include "gc_implementation/shared/gcTraceTime.hpp"
  42 #include "memory/genOopClosures.inline.hpp"
  43 #include "memory/referencePolicy.hpp"
  44 #include "memory/resourceArea.hpp"
  45 #include "oops/oop.inline.hpp"
  46 #include "runtime/handles.inline.hpp"
  47 #include "runtime/java.hpp"

  48 #include "runtime/prefetch.inline.hpp"
  49 #include "services/memTracker.hpp"
  50 
  51 // Concurrent marking bit map wrapper
  52 
  53 CMBitMapRO::CMBitMapRO(int shifter) :
  54   _bm(),
  55   _shifter(shifter) {
  56   _bmStartWord = 0;
  57   _bmWordSize = 0;
  58 }
  59 
  60 HeapWord* CMBitMapRO::getNextMarkedWordAddress(HeapWord* addr,
  61                                                HeapWord* limit) const {
  62   // First we must round addr *up* to a possible object boundary.
  63   addr = (HeapWord*)align_size_up((intptr_t)addr,
  64                                   HeapWordSize << _shifter);
  65   size_t addrOffset = heapWordToOffset(addr);
  66   if (limit == NULL) {
  67     limit = _bmStartWord + _bmWordSize;




  28 #include "gc_implementation/g1/concurrentMarkThread.inline.hpp"
  29 #include "gc_implementation/g1/g1CollectedHeap.inline.hpp"
  30 #include "gc_implementation/g1/g1CollectorPolicy.hpp"
  31 #include "gc_implementation/g1/g1ErgoVerbose.hpp"
  32 #include "gc_implementation/g1/g1Log.hpp"
  33 #include "gc_implementation/g1/g1OopClosures.inline.hpp"
  34 #include "gc_implementation/g1/g1RemSet.hpp"
  35 #include "gc_implementation/g1/heapRegion.inline.hpp"
  36 #include "gc_implementation/g1/heapRegionRemSet.hpp"
  37 #include "gc_implementation/g1/heapRegionSeq.inline.hpp"
  38 #include "gc_implementation/shared/vmGCOperations.hpp"
  39 #include "gc_implementation/shared/gcTimer.hpp"
  40 #include "gc_implementation/shared/gcTrace.hpp"
  41 #include "gc_implementation/shared/gcTraceTime.hpp"
  42 #include "memory/genOopClosures.inline.hpp"
  43 #include "memory/referencePolicy.hpp"
  44 #include "memory/resourceArea.hpp"
  45 #include "oops/oop.inline.hpp"
  46 #include "runtime/handles.inline.hpp"
  47 #include "runtime/java.hpp"
  48 #include "runtime/atomic.inline.hpp"
  49 #include "runtime/prefetch.inline.hpp"
  50 #include "services/memTracker.hpp"
  51 
  52 // Concurrent marking bit map wrapper
  53 
  54 CMBitMapRO::CMBitMapRO(int shifter) :
  55   _bm(),
  56   _shifter(shifter) {
  57   _bmStartWord = 0;
  58   _bmWordSize = 0;
  59 }
  60 
  61 HeapWord* CMBitMapRO::getNextMarkedWordAddress(HeapWord* addr,
  62                                                HeapWord* limit) const {
  63   // First we must round addr *up* to a possible object boundary.
  64   addr = (HeapWord*)align_size_up((intptr_t)addr,
  65                                   HeapWordSize << _shifter);
  66   size_t addrOffset = heapWordToOffset(addr);
  67   if (limit == NULL) {
  68     limit = _bmStartWord + _bmWordSize;