30 #include "gc_implementation/g1/g1OopClosures.hpp" |
30 #include "gc_implementation/g1/g1OopClosures.hpp" |
31 #include "gc_implementation/g1/g1ParScanThreadState.inline.hpp" |
31 #include "gc_implementation/g1/g1ParScanThreadState.inline.hpp" |
32 #include "gc_implementation/g1/g1RemSet.hpp" |
32 #include "gc_implementation/g1/g1RemSet.hpp" |
33 #include "gc_implementation/g1/g1RemSet.inline.hpp" |
33 #include "gc_implementation/g1/g1RemSet.inline.hpp" |
34 #include "gc_implementation/g1/heapRegionRemSet.hpp" |
34 #include "gc_implementation/g1/heapRegionRemSet.hpp" |
|
35 #include "memory/iterator.inline.hpp" |
35 #include "runtime/prefetch.inline.hpp" |
36 #include "runtime/prefetch.inline.hpp" |
36 |
37 |
37 /* |
38 /* |
38 * This really ought to be an inline function, but apparently the C++ |
39 * This really ought to be an inline function, but apparently the C++ |
39 * compiler sometimes sees fit to ignore inline declarations. Sigh. |
40 * compiler sometimes sees fit to ignore inline declarations. Sigh. |
106 } |
107 } |
107 } |
108 } |
108 |
109 |
109 template <class T> |
110 template <class T> |
110 inline void G1CMOopClosure::do_oop_nv(T* p) { |
111 inline void G1CMOopClosure::do_oop_nv(T* p) { |
111 assert(_g1h->is_in_g1_reserved((HeapWord*) p), "invariant"); |
|
112 assert(!_g1h->is_on_master_free_list( |
|
113 _g1h->heap_region_containing((HeapWord*) p)), "invariant"); |
|
114 |
|
115 oop obj = oopDesc::load_decode_heap_oop(p); |
112 oop obj = oopDesc::load_decode_heap_oop(p); |
116 if (_cm->verbose_high()) { |
113 if (_cm->verbose_high()) { |
117 gclog_or_tty->print_cr("[%u] we're looking at location " |
114 gclog_or_tty->print_cr("[%u] we're looking at location " |
118 "*"PTR_FORMAT" = "PTR_FORMAT, |
115 "*"PTR_FORMAT" = "PTR_FORMAT, |
119 _task->worker_id(), p2i(p), p2i((void*) obj)); |
116 _task->worker_id(), p2i(p), p2i((void*) obj)); |