src/share/vm/gc/serial/genMarkSweep.cpp

Print this page

        

@@ -53,10 +53,13 @@
 #include "runtime/vmThread.hpp"
 #include "utilities/copy.hpp"
 #include "utilities/events.hpp"
 #include "utilities/stack.inline.hpp"
 
+GenMarkSweep::GenMarkSweep() : MarkSweep() { }
+GenMarkSweep::~GenMarkSweep() { }
+
 void GenMarkSweep::invoke_at_safepoint(ReferenceProcessor* rp, bool clear_all_softrefs) {
   assert(SafepointSynchronize::is_at_safepoint(), "must be at a safepoint");
 
   GenCollectedHeap* gch = GenCollectedHeap::heap();
 #ifdef ASSERT

@@ -268,13 +271,16 @@
 
   gch->prepare_for_compaction();
 }
 
 class GenAdjustPointersClosure: public GenCollectedHeap::GenClosure {
+  MarkSweep* _ms;
 public:
+  GenAdjustPointersClosure(MarkSweep* ms) : _ms(ms) {}
+  ~GenAdjustPointersClosure() {}
   void do_generation(Generation* gen) {
-    gen->adjust_pointers();
+    gen->adjust_pointers(_ms);
   }
 };
 
 void GenMarkSweep::mark_sweep_phase3() {
   GenCollectedHeap* gch = GenCollectedHeap::heap();

@@ -303,11 +309,11 @@
   }
 
   gch->gen_process_weak_roots(&adjust_pointer_closure);
 
   adjust_marks();
-  GenAdjustPointersClosure blk;
+  GenAdjustPointersClosure blk(this);
   gch->generation_iterate(&blk, true);
 }
 
 class GenCompactClosure: public GenCollectedHeap::GenClosure {
 public: