< 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->klass_holder();
 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


 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
< prev index next >