src/share/vm/memory/generation.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File
hotspot Cdiff src/share/vm/memory/generation.cpp
src/share/vm/memory/generation.cpp
Print this page
rev 7211 : [mq]: remove_ngen
rev 7212 : [mq]: remove_get_gen
rev 7213 : imported patch move_genspecs
rev 7214 : imported patch remove_n_gen
rev 7215 : imported patch remove_levels
*** 43,54 ****
#include "utilities/copy.hpp"
#include "utilities/events.hpp"
PRAGMA_FORMAT_MUTE_WARNINGS_FOR_GCC
! Generation::Generation(ReservedSpace rs, size_t initial_size, int level) :
! _level(level),
_ref_processor(NULL) {
if (!_virtual_space.initialize(rs, initial_size)) {
vm_exit_during_initialization("Could not reserve enough space for "
"object heap");
}
--- 43,53 ----
#include "utilities/copy.hpp"
#include "utilities/events.hpp"
PRAGMA_FORMAT_MUTE_WARNINGS_FOR_GCC
! Generation::Generation(ReservedSpace rs, size_t initial_size) :
_ref_processor(NULL) {
if (!_virtual_space.initialize(rs, initial_size)) {
vm_exit_during_initialization("Could not reserve enough space for "
"object heap");
}
*** 61,73 ****
_reserved = MemRegion((HeapWord*)_virtual_space.low_boundary(),
(HeapWord*)_virtual_space.high_boundary());
}
GenerationSpec* Generation::spec() {
! GenCollectorPolicy* gcp = GenCollectedHeap::heap()->gen_policy();
! assert(0 <= level() && level() < gcp->number_of_generations(), "Bad gen level");
! return level() == 0 ? gcp->young_gen_spec() : gcp->old_gen_spec();
}
size_t Generation::max_capacity() const {
return reserved().byte_size();
}
--- 60,74 ----
_reserved = MemRegion((HeapWord*)_virtual_space.low_boundary(),
(HeapWord*)_virtual_space.high_boundary());
}
GenerationSpec* Generation::spec() {
! GenCollectedHeap* gch = GenCollectedHeap::heap();
! if (this == gch->young_gen()) {
! return gch->gen_policy()->young_gen_spec();
! }
! return gch->gen_policy()->old_gen_spec();
}
size_t Generation::max_capacity() const {
return reserved().byte_size();
}
*** 112,124 ****
void Generation::print_summary_info() { print_summary_info_on(tty); }
void Generation::print_summary_info_on(outputStream* st) {
StatRecord* sr = stat_record();
double time = sr->accumulated_time.seconds();
st->print_cr("[Accumulated GC generation %d time %3.7f secs, "
"%d GC's, avg GC time %3.7f]",
! level(), time, sr->invocations,
sr->invocations > 0 ? time / sr->invocations : 0.0);
}
// Utility iterator classes
--- 113,133 ----
void Generation::print_summary_info() { print_summary_info_on(tty); }
void Generation::print_summary_info_on(outputStream* st) {
StatRecord* sr = stat_record();
double time = sr->accumulated_time.seconds();
+ // I didn't want to change the logging when removing the level concept,
+ // but I guess this logging could say young/old or something instead of 0/1.
+ int level;
+ if (this == GenCollectedHeap::heap()->young_gen()) {
+ level = 0;
+ } else {
+ level = 1;
+ }
st->print_cr("[Accumulated GC generation %d time %3.7f secs, "
"%d GC's, avg GC time %3.7f]",
! level, time, sr->invocations,
sr->invocations > 0 ? time / sr->invocations : 0.0);
}
// Utility iterator classes
*** 157,185 ****
(kind() == Generation::ParNew),
"Wrong youngest generation type");
return (DefNewGeneration*) this;
}
- Generation* Generation::next_gen() const {
- GenCollectedHeap* gch = GenCollectedHeap::heap();
- if (level() == 0) {
- return gch->old_gen();
- } else {
- return NULL;
- }
- }
-
size_t Generation::max_contiguous_available() const {
// The largest number of contiguous free words in this or any higher generation.
! size_t max = 0;
! for (const Generation* gen = this; gen != NULL; gen = gen->next_gen()) {
! size_t avail = gen->contiguous_available();
! if (avail > max) {
! max = avail;
! }
}
! return max;
}
bool Generation::promotion_attempt_is_safe(size_t max_promotion_in_bytes) const {
size_t available = max_contiguous_available();
bool res = (available >= max_promotion_in_bytes);
--- 166,183 ----
(kind() == Generation::ParNew),
"Wrong youngest generation type");
return (DefNewGeneration*) this;
}
size_t Generation::max_contiguous_available() const {
// The largest number of contiguous free words in this or any higher generation.
! size_t avail = contiguous_available();
! size_t old_avail = 0;
! if (this == GenCollectedHeap::heap()->young_gen()) {
! old_avail = GenCollectedHeap::heap()->old_gen()->contiguous_available();
}
! return MAX2(avail, old_avail);
}
bool Generation::promotion_attempt_is_safe(size_t max_promotion_in_bytes) const {
size_t available = max_contiguous_available();
bool res = (available >= max_promotion_in_bytes);
*** 374,386 ****
sp = sp->next_compaction_space();
}
}
CardGeneration::CardGeneration(ReservedSpace rs, size_t initial_byte_size,
- int level,
GenRemSet* remset) :
! Generation(rs, initial_byte_size, level), _rs(remset),
_shrink_factor(0), _min_heap_delta_bytes(), _capacity_at_prologue(),
_used_at_prologue()
{
HeapWord* start = (HeapWord*)rs.base();
size_t reserved_byte_size = rs.size();
--- 372,383 ----
sp = sp->next_compaction_space();
}
}
CardGeneration::CardGeneration(ReservedSpace rs, size_t initial_byte_size,
GenRemSet* remset) :
! Generation(rs, initial_byte_size), _rs(remset),
_shrink_factor(0), _min_heap_delta_bytes(), _capacity_at_prologue(),
_used_at_prologue()
{
HeapWord* start = (HeapWord*)rs.base();
size_t reserved_byte_size = rs.size();
*** 632,642 ****
gc_timer->register_gc_start();
SerialOldTracer* gc_tracer = GenMarkSweep::gc_tracer();
gc_tracer->report_gc_start(gch->gc_cause(), gc_timer->gc_start());
! GenMarkSweep::invoke_at_safepoint(_level, ref_processor(), clear_all_soft_refs);
gc_timer->register_gc_end();
gc_tracer->report_gc_end(gc_timer->gc_end(), gc_timer->time_partitions());
--- 629,639 ----
gc_timer->register_gc_start();
SerialOldTracer* gc_tracer = GenMarkSweep::gc_tracer();
gc_tracer->report_gc_start(gch->gc_cause(), gc_timer->gc_start());
! GenMarkSweep::invoke_at_safepoint(ref_processor(), clear_all_soft_refs);
gc_timer->register_gc_end();
gc_tracer->report_gc_end(gc_timer->gc_end(), gc_timer->time_partitions());
src/share/vm/memory/generation.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File