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: