comparison src/share/vm/memory/iterator.hpp @ 7179:d0aa87f04bd5

8003720: NPG: Method in interpreter stack frame can be deallocated Summary: Pass down a closure during root scanning to keep the class of the method alive. Reviewed-by: coleenp, jcoomes
author stefank
date Tue, 27 Nov 2012 10:13:20 +0100
parents ec98e58952b2
children 001ec9515f84
comparison
equal deleted inserted replaced
7178:19c1bd641922 7179:d0aa87f04bd5
133 public: 133 public:
134 KlassToOopClosure(OopClosure* oop_closure) : _oop_closure(oop_closure) {} 134 KlassToOopClosure(OopClosure* oop_closure) : _oop_closure(oop_closure) {}
135 virtual void do_klass(Klass* k); 135 virtual void do_klass(Klass* k);
136 }; 136 };
137 137
138 class CLDToOopClosure {
139 OopClosure* _oop_closure;
140 KlassToOopClosure _klass_closure;
141 bool _must_claim_cld;
142
143 public:
144 CLDToOopClosure(OopClosure* oop_closure, bool must_claim_cld = true) :
145 _oop_closure(oop_closure),
146 _klass_closure(oop_closure),
147 _must_claim_cld(must_claim_cld) {}
148
149 void do_cld(ClassLoaderData* cld);
150 };
151
138 // ObjectClosure is used for iterating through an object space 152 // ObjectClosure is used for iterating through an object space
139 153
140 class ObjectClosure : public Closure { 154 class ObjectClosure : public Closure {
141 public: 155 public:
142 // Called for each object. 156 // Called for each object.