< prev index next >

src/hotspot/share/gc/g1/g1FullGCCompactTask.cpp

Print this page




  23  */
  24 
  25 #include "precompiled.hpp"
  26 #include "gc/g1/g1CollectedHeap.hpp"
  27 #include "gc/g1/g1ConcurrentMarkBitMap.inline.hpp"
  28 #include "gc/g1/g1FullCollector.hpp"
  29 #include "gc/g1/g1FullGCCompactionPoint.hpp"
  30 #include "gc/g1/g1FullGCCompactTask.hpp"
  31 #include "gc/g1/heapRegion.inline.hpp"
  32 #include "gc/shared/gcTraceTime.inline.hpp"
  33 #include "logging/log.hpp"
  34 #include "utilities/ticks.inline.hpp"
  35 
  36 class G1ResetHumongousClosure : public HeapRegionClosure {
  37   G1CMBitMap* _bitmap;
  38 
  39 public:
  40   G1ResetHumongousClosure(G1CMBitMap* bitmap) :
  41       _bitmap(bitmap) { }
  42 
  43   bool do_heap_region(HeapRegion* current) {
  44     if (current->is_humongous()) {
  45       if (current->is_starts_humongous()) {
  46         oop obj = oop(current->bottom());
  47         if (_bitmap->is_marked(obj)) {
  48           // Clear bitmap and fix mark word.
  49           _bitmap->clear(obj);
  50           obj->init_mark();
  51         } else {
  52           assert(current->is_empty(), "Should have been cleared in phase 2.");
  53         }
  54       }
  55       current->reset_during_compaction();
  56     }
  57     return false;
  58   }
  59 };
  60 
  61 size_t G1FullGCCompactTask::G1CompactRegionClosure::apply(oop obj) {
  62   size_t size = obj->size();
  63   HeapWord* destination = (HeapWord*)obj->forwardee();




  23  */
  24 
  25 #include "precompiled.hpp"
  26 #include "gc/g1/g1CollectedHeap.hpp"
  27 #include "gc/g1/g1ConcurrentMarkBitMap.inline.hpp"
  28 #include "gc/g1/g1FullCollector.hpp"
  29 #include "gc/g1/g1FullGCCompactionPoint.hpp"
  30 #include "gc/g1/g1FullGCCompactTask.hpp"
  31 #include "gc/g1/heapRegion.inline.hpp"
  32 #include "gc/shared/gcTraceTime.inline.hpp"
  33 #include "logging/log.hpp"
  34 #include "utilities/ticks.inline.hpp"
  35 
  36 class G1ResetHumongousClosure : public HeapRegionClosure {
  37   G1CMBitMap* _bitmap;
  38 
  39 public:
  40   G1ResetHumongousClosure(G1CMBitMap* bitmap) :
  41       _bitmap(bitmap) { }
  42 
  43   bool doHeapRegion(HeapRegion* current) {
  44     if (current->is_humongous()) {
  45       if (current->is_starts_humongous()) {
  46         oop obj = oop(current->bottom());
  47         if (_bitmap->is_marked(obj)) {
  48           // Clear bitmap and fix mark word.
  49           _bitmap->clear(obj);
  50           obj->init_mark();
  51         } else {
  52           assert(current->is_empty(), "Should have been cleared in phase 2.");
  53         }
  54       }
  55       current->reset_during_compaction();
  56     }
  57     return false;
  58   }
  59 };
  60 
  61 size_t G1FullGCCompactTask::G1CompactRegionClosure::apply(oop obj) {
  62   size_t size = obj->size();
  63   HeapWord* destination = (HeapWord*)obj->forwardee();


< prev index next >