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;
|