Mercurial > hg > truffle
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; |