comparison src/share/vm/gc_implementation/concurrentMarkSweep/cmsOopClosures.hpp @ 989:148e5441d916

6863023: need non-perm oops in code cache for JSR 292 Summary: Make a special root-list for those few nmethods which might contain non-perm oops. Reviewed-by: twisti, kvn, never, jmasa, ysr
author jrose
date Tue, 15 Sep 2009 21:53:47 -0700
parents 00b023ae2d78
children 54b3b351d6f9
comparison
equal deleted inserted replaced
987:00977607da34 989:148e5441d916
51 protected: 51 protected:
52 DO_OOP_WORK_DEFN 52 DO_OOP_WORK_DEFN
53 public: 53 public:
54 MarkRefsIntoClosure(MemRegion span, CMSBitMap* bitMap, 54 MarkRefsIntoClosure(MemRegion span, CMSBitMap* bitMap,
55 bool should_do_nmethods); 55 bool should_do_nmethods);
56 bool should_do_nmethods() { return _should_do_nmethods; }
56 virtual void do_oop(oop* p); 57 virtual void do_oop(oop* p);
57 virtual void do_oop(narrowOop* p); 58 virtual void do_oop(narrowOop* p);
58 inline void do_oop_nv(oop* p) { MarkRefsIntoClosure::do_oop_work(p); } 59 inline void do_oop_nv(oop* p) { MarkRefsIntoClosure::do_oop_work(p); }
59 inline void do_oop_nv(narrowOop* p) { MarkRefsIntoClosure::do_oop_work(p); } 60 inline void do_oop_nv(narrowOop* p) { MarkRefsIntoClosure::do_oop_work(p); }
60 bool do_header() { return true; } 61 bool do_header() { return true; }
61 virtual const bool do_nmethods() const {
62 return _should_do_nmethods;
63 }
64 Prefetch::style prefetch_style() { 62 Prefetch::style prefetch_style() {
65 return Prefetch::do_read; 63 return Prefetch::do_read;
66 } 64 }
67 }; 65 };
68 66
77 protected: 75 protected:
78 DO_OOP_WORK_DEFN 76 DO_OOP_WORK_DEFN
79 public: 77 public:
80 MarkRefsIntoVerifyClosure(MemRegion span, CMSBitMap* verification_bm, 78 MarkRefsIntoVerifyClosure(MemRegion span, CMSBitMap* verification_bm,
81 CMSBitMap* cms_bm, bool should_do_nmethods); 79 CMSBitMap* cms_bm, bool should_do_nmethods);
80 bool should_do_nmethods() { return _should_do_nmethods; }
82 virtual void do_oop(oop* p); 81 virtual void do_oop(oop* p);
83 virtual void do_oop(narrowOop* p); 82 virtual void do_oop(narrowOop* p);
84 inline void do_oop_nv(oop* p) { MarkRefsIntoVerifyClosure::do_oop_work(p); } 83 inline void do_oop_nv(oop* p) { MarkRefsIntoVerifyClosure::do_oop_work(p); }
85 inline void do_oop_nv(narrowOop* p) { MarkRefsIntoVerifyClosure::do_oop_work(p); } 84 inline void do_oop_nv(narrowOop* p) { MarkRefsIntoVerifyClosure::do_oop_work(p); }
86 bool do_header() { return true; } 85 bool do_header() { return true; }
87 virtual const bool do_nmethods() const {
88 return _should_do_nmethods;
89 }
90 Prefetch::style prefetch_style() { 86 Prefetch::style prefetch_style() {
91 return Prefetch::do_read; 87 return Prefetch::do_read;
92 } 88 }
93 }; 89 };
94 90
192 virtual void do_oop(oop* p); 188 virtual void do_oop(oop* p);
193 virtual void do_oop(narrowOop* p); 189 virtual void do_oop(narrowOop* p);
194 inline void do_oop_nv(oop* p) { MarkRefsIntoAndScanClosure::do_oop_work(p); } 190 inline void do_oop_nv(oop* p) { MarkRefsIntoAndScanClosure::do_oop_work(p); }
195 inline void do_oop_nv(narrowOop* p) { MarkRefsIntoAndScanClosure::do_oop_work(p); } 191 inline void do_oop_nv(narrowOop* p) { MarkRefsIntoAndScanClosure::do_oop_work(p); }
196 bool do_header() { return true; } 192 bool do_header() { return true; }
197 virtual const bool do_nmethods() const { return true; }
198 Prefetch::style prefetch_style() { 193 Prefetch::style prefetch_style() {
199 return Prefetch::do_read; 194 return Prefetch::do_read;
200 } 195 }
201 void set_freelistLock(Mutex* m) { 196 void set_freelistLock(Mutex* m) {
202 _freelistLock = m; 197 _freelistLock = m;