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