src/share/vm/memory/defNewGeneration.cpp
Print this page
rev 6796 : [mq]: templateOopIterate
@@ -28,13 +28,14 @@
#include "gc_implementation/shared/gcHeapSummary.hpp"
#include "gc_implementation/shared/gcTimer.hpp"
#include "gc_implementation/shared/gcTraceTime.hpp"
#include "gc_implementation/shared/gcTrace.hpp"
#include "gc_implementation/shared/spaceDecorator.hpp"
+#include "gc_interface/collectedHeap.inline.hpp"
#include "memory/defNewGeneration.inline.hpp"
#include "memory/gcLocker.inline.hpp"
-#include "memory/genCollectedHeap.hpp"
+#include "memory/genCollectedHeap.inline.hpp"
#include "memory/genOopClosures.inline.hpp"
#include "memory/genRemSet.hpp"
#include "memory/generationSpec.hpp"
#include "memory/iterator.hpp"
#include "memory/referencePolicy.hpp"
@@ -89,11 +90,11 @@
_scan_cur_or_nonheap(cur), _scan_older(older)
{}
void DefNewGeneration::EvacuateFollowersClosure::do_void() {
do {
- _gch->oop_since_save_marks_iterate(_level, _scan_cur_or_nonheap,
+ _gch->gch_oop_since_save_marks_iterate<true>(_level, _scan_cur_or_nonheap,
_scan_older);
} while (!_gch->no_allocs_since_save_marks(_level));
}
DefNewGeneration::FastEvacuateFollowersClosure::
@@ -104,11 +105,11 @@
_scan_cur_or_nonheap(cur), _scan_older(older)
{}
void DefNewGeneration::FastEvacuateFollowersClosure::do_void() {
do {
- _gch->oop_since_save_marks_iterate(_level, _scan_cur_or_nonheap,
+ _gch->gch_oop_since_save_marks_iterate<true>(_level, _scan_cur_or_nonheap,
_scan_older);
} while (!_gch->no_allocs_since_save_marks(_level));
guarantee(_gen->promo_failure_scan_is_complete(), "Failed to finish scan");
}
@@ -184,11 +185,11 @@
DefNewGeneration::DefNewGeneration(ReservedSpace rs,
size_t initial_size,
int level,
const char* policy)
- : Generation(rs, initial_size, level),
+ : Generation(rs, initial_size, level, _dispatch_index_generation_def_new),
_promo_failure_drain_in_progress(false),
_should_allocate_from_space(false)
{
MemRegion cmr((HeapWord*)_virtual_space.low(),
(HeapWord*)_virtual_space.high());
@@ -820,11 +821,11 @@
}
void DefNewGeneration::drain_promo_failure_scan_stack() {
while (!_promo_failure_scan_stack.is_empty()) {
oop obj = _promo_failure_scan_stack.pop();
- obj->oop_iterate(_promo_failure_scan_stack_closure);
+ obj->oop_iterate<false>(_promo_failure_scan_stack_closure);
}
}
void DefNewGeneration::save_marks() {
eden()->set_saved_mark();
@@ -844,26 +845,10 @@
assert(eden()->saved_mark_at_top(), "Violated spec - alloc in eden");
assert(from()->saved_mark_at_top(), "Violated spec - alloc in from");
return to()->saved_mark_at_top();
}
-#define DefNew_SINCE_SAVE_MARKS_DEFN(OopClosureType, nv_suffix) \
- \
-void DefNewGeneration:: \
-oop_since_save_marks_iterate##nv_suffix(OopClosureType* cl) { \
- cl->set_generation(this); \
- eden()->oop_since_save_marks_iterate##nv_suffix(cl); \
- to()->oop_since_save_marks_iterate##nv_suffix(cl); \
- from()->oop_since_save_marks_iterate##nv_suffix(cl); \
- cl->reset_generation(); \
- save_marks(); \
-}
-
-ALL_SINCE_SAVE_MARKS_CLOSURES(DefNew_SINCE_SAVE_MARKS_DEFN)
-
-#undef DefNew_SINCE_SAVE_MARKS_DEFN
-
void DefNewGeneration::contribute_scratch(ScratchBlock*& list, Generation* requestor,
size_t max_alloc_words) {
if (requestor == this || _promotion_failed) return;
assert(requestor->level() > level(), "DefNewGeneration must be youngest");