< prev index next >

src/hotspot/share/gc/g1/g1FullGCMarker.inline.hpp

Print this page

148     }
149   }
150 }
151 
152 void G1FullGCMarker::drain_stack() {
153   do {
154     oop obj;
155     while (pop_object(obj)) {
156       assert(_bitmap->is_marked(obj), "must be marked");
157       follow_object(obj);
158     }
159     // Process ObjArrays one at a time to avoid marking stack bloat.
160     ObjArrayTask task;
161     if (pop_objarray(task)) {
162       follow_array_chunk(objArrayOop(task.obj()), task.index());
163     }
164   } while (!is_empty());
165 }
166 
167 inline void G1FullGCMarker::follow_klass(Klass* k) {
168   oop op = k->class_loader_data()->holder_no_keepalive();






169   mark_and_push(&op);
170 }
171 
172 inline void G1FullGCMarker::follow_cld(ClassLoaderData* cld) {
173   _cld_closure.do_cld(cld);
174 }
175 
176 #endif // SHARE_GC_G1_G1FULLGCMARKER_INLINE_HPP

148     }
149   }
150 }
151 
152 void G1FullGCMarker::drain_stack() {
153   do {
154     oop obj;
155     while (pop_object(obj)) {
156       assert(_bitmap->is_marked(obj), "must be marked");
157       follow_object(obj);
158     }
159     // Process ObjArrays one at a time to avoid marking stack bloat.
160     ObjArrayTask task;
161     if (pop_objarray(task)) {
162       follow_array_chunk(objArrayOop(task.obj()), task.index());
163     }
164   } while (!is_empty());
165 }
166 
167 inline void G1FullGCMarker::follow_klass(Klass* k) {
168   ClassLoaderData* cld = k->class_loader_data();
169 #if 0 // IOITMP
170   if (cld == NULL) {
171     return;
172   }
173 #endif
174   oop op = cld->holder_no_keepalive();
175   mark_and_push(&op);
176 }
177 
178 inline void G1FullGCMarker::follow_cld(ClassLoaderData* cld) {
179   _cld_closure.do_cld(cld);
180 }
181 
182 #endif // SHARE_GC_G1_G1FULLGCMARKER_INLINE_HPP
< prev index next >