hotspot/src/share/vm/gc_implementation/shared/markSweep.cpp
changeset 29792 8c6fa07f0869
parent 29701 f638fc81a3d0
child 29800 fa5f7a2bf717
equal deleted inserted replaced
29703:0bbea51cbaf8 29792:8c6fa07f0869
    62 
    62 
    63 void MarkSweep::follow_class_loader(ClassLoaderData* cld) {
    63 void MarkSweep::follow_class_loader(ClassLoaderData* cld) {
    64   MarkSweep::follow_cld_closure.do_cld(cld);
    64   MarkSweep::follow_cld_closure.do_cld(cld);
    65 }
    65 }
    66 
    66 
       
    67 void MarkSweep::follow_array(objArrayOop array, int index) {
       
    68   ObjArrayKlass* k = (ObjArrayKlass*)array->klass();
       
    69   k->oop_follow_contents(array, index);
       
    70 }
       
    71 
    67 void MarkSweep::follow_stack() {
    72 void MarkSweep::follow_stack() {
    68   do {
    73   do {
    69     while (!_marking_stack.is_empty()) {
    74     while (!_marking_stack.is_empty()) {
    70       oop obj = _marking_stack.pop();
    75       oop obj = _marking_stack.pop();
    71       assert (obj->is_gc_marked(), "p must be marked");
    76       assert (obj->is_gc_marked(), "p must be marked");
    72       obj->follow_contents();
    77       follow_object(obj);
    73     }
    78     }
    74     // Process ObjArrays one at a time to avoid marking stack bloat.
    79     // Process ObjArrays one at a time to avoid marking stack bloat.
    75     if (!_objarray_stack.is_empty()) {
    80     if (!_objarray_stack.is_empty()) {
    76       ObjArrayTask task = _objarray_stack.pop();
    81       ObjArrayTask task = _objarray_stack.pop();
    77       ObjArrayKlass* k = (ObjArrayKlass*)task.obj()->klass();
    82       follow_array(objArrayOop(task.obj()), task.index());
    78       k->oop_follow_contents(task.obj(), task.index());
       
    79     }
    83     }
    80   } while (!_marking_stack.is_empty() || !_objarray_stack.is_empty());
    84   } while (!_marking_stack.is_empty() || !_objarray_stack.is_empty());
    81 }
    85 }
    82 
    86 
    83 MarkSweep::FollowStackClosure MarkSweep::follow_stack_closure;
    87 MarkSweep::FollowStackClosure MarkSweep::follow_stack_closure;