hotspot/src/share/vm/gc_implementation/parallelScavenge/pcTasks.cpp
void DrainStacksCompactionTask::do_it(GCTaskManager* manager, uint which) {
  {- -------------------------------------------
  (1) (assert)
      ---------------------------------------- -}
      assert(Universe::heap()->is_gc_active(), "called outside gc");
  {- -------------------------------------------
  (1) (トレース出力)
      ---------------------------------------- -}
      NOT_PRODUCT(TraceTime tm("DrainStacksCompactionTask",
        PrintGCDetails && TraceParallelOldGCTasks, true, gclog_or_tty));
  {- -------------------------------------------
  (1) ParCompactionManager::gc_thread_compaction_manager() で, 
      これを実行している GCTaskThread 用の ParCompactionManager オブジェクトを取得する.
      ---------------------------------------- -}
      ParCompactionManager* cm =
        ParCompactionManager::gc_thread_compaction_manager(which);
  {- -------------------------------------------
  (1) ParCompactionManager::drain_region_stacks() を呼んで, 
      ParCompactionManager 内のスタックに残っている全ての region に対して
      オブジェクトの移動処理を行う.
      ---------------------------------------- -}
      // Process any regions already in the compaction managers stacks.
      cm->drain_region_stacks();
    }
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.