コード例 #1
0
ファイル: g1MarkSweep.cpp プロジェクト: netroby/jdk9-dev
bool G1PrepareCompactClosure::doHeapRegion(HeapRegion* hr) {
  if (hr->is_humongous()) {
    oop obj = oop(hr->humongous_start_region()->bottom());
    if (hr->is_starts_humongous() && obj->is_gc_marked()) {
      obj->forward_to(obj);
    }
    if (!obj->is_gc_marked()) {
      free_humongous_region(hr);
    }
  } else if (!hr->is_pinned()) {
    prepare_for_compaction(hr, hr->end());
  }
  return false;
}
コード例 #2
0
bool G1PrepareCompactClosure::doHeapRegion(HeapRegion* hr) {
  if (hr->is_humongous()) {
    if (hr->is_starts_humongous()) {
      oop obj = oop(hr->bottom());
      if (obj->is_gc_marked()) {
        obj->forward_to(obj);
      } else  {
        free_humongous_region(hr);
      }
    } else {
      assert(hr->is_continues_humongous(), "Invalid humongous.");
    }
  } else if (!hr->is_pinned()) {
    prepare_for_compaction(hr, hr->end());
  }
  return false;
}
コード例 #3
0
ファイル: g1MarkSweep.cpp プロジェクト: ismo1652/jvmnotebook
 bool doHeapRegion(HeapRegion* hr) {
   if (hr->isHumongous()) {
     if (hr->startsHumongous()) {
       oop obj = oop(hr->bottom());
       if (obj->is_gc_marked()) {
         obj->forward_to(obj);
       } else  {
         free_humongous_region(hr);
       }
     } else {
       assert(hr->continuesHumongous(), "Invalid humongous.");
     }
   } else {
     hr->prepare_for_compaction(&_cp);
     // Also clear the part of the card table that will be unused after
     // compaction.
     _mrbs->clear(MemRegion(hr->compaction_top(), hr->end()));
   }
   return false;
 }