Top


定義場所(file name)

hotspot/src/share/vm/gc_implementation/shared/markSweep.cpp

名前(function name)

void MarkSweep::follow_stack() {

本体部(body)

  {- -------------------------------------------
  (1) 
      ---------------------------------------- -}

      do {
        while (!_marking_stack.is_empty()) {
          oop obj = _marking_stack.pop();
          assert (obj->is_gc_marked(), "p must be marked");
          obj->follow_contents();
        }
        // Process ObjArrays one at a time to avoid marking stack bloat.
        if (!_objarray_stack.is_empty()) {
          ObjArrayTask task = _objarray_stack.pop();
          objArrayKlass* const k = (objArrayKlass*)task.obj()->blueprint();
          k->oop_follow_contents(task.obj(), task.index());
        }
      } while (!_marking_stack.is_empty() || !_objarray_stack.is_empty());
    }

This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.