< prev index next >
src/share/vm/memory/tenuredGeneration.hpp
Print this page
rev 7420 : [mq]: removeOneContigSpaceGeneration
*** 29,49 ****
#include "gc_implementation/shared/gcStats.hpp"
#include "gc_implementation/shared/generationCounters.hpp"
#include "memory/generation.hpp"
#include "utilities/macros.hpp"
! // TenuredGeneration models the heap containing old (promoted/tenured) objects.
! class TenuredGeneration: public OneContigSpaceCardGeneration {
friend class VMStructs;
protected:
GenerationCounters* _gen_counters;
CSpaceCounters* _space_counters;
public:
! TenuredGeneration(ReservedSpace rs, size_t initial_byte_size, int level,
! GenRemSet* remset);
Generation::Name kind() { return Generation::MarkSweepCompact; }
// Printing
const char* name() const { return "tenured generation"; }
--- 29,73 ----
#include "gc_implementation/shared/gcStats.hpp"
#include "gc_implementation/shared/generationCounters.hpp"
#include "memory/generation.hpp"
#include "utilities/macros.hpp"
! // TenuredGeneration models the heap containing old (promoted/tenured) objects
! // contained in a single contiguous space.
! //
! // Garbage collection is performed using mark-compact.
! class TenuredGeneration: public CardGeneration {
friend class VMStructs;
+ // Abstractly, this is a subtype that gets access to protected fields.
+ friend class VM_PopulateDumpSharedSpace;
+
protected:
+ ContiguousSpace* _the_space; // actual space holding objects
+ WaterMark _last_gc; // watermark between objects allocated before
+ // and after last GC.
+
GenerationCounters* _gen_counters;
CSpaceCounters* _space_counters;
+ // Grow generation with specified size (returns false if unable to grow)
+ virtual bool grow_by(size_t bytes);
+ // Grow generation to reserved size.
+ virtual bool grow_to_reserved();
+ // Shrink generation with specified size (returns false if unable to shrink)
+ void shrink_by(size_t bytes);
+
+ // Allocation failure
+ virtual bool expand(size_t bytes, size_t expand_bytes);
+ void shrink(size_t bytes);
+
+ // Accessing spaces
+ ContiguousSpace* the_space() const { return _the_space; }
+
public:
! TenuredGeneration(ReservedSpace rs, size_t initial_byte_size,
! int level, GenRemSet* remset);
Generation::Name kind() { return Generation::MarkSweepCompact; }
// Printing
const char* name() const { return "tenured generation"; }
*** 55,77 ****
--- 79,158 ----
// set.
virtual bool full_collects_younger_generations() const {
return !ScavengeBeforeFullGC;
}
+ inline bool is_in(const void* p) const;
+
+ // Space enquiries
+ size_t capacity() const;
+ size_t used() const;
+ size_t free() const;
+
+ MemRegion used_region() const;
+
+ size_t unsafe_max_alloc_nogc() const;
+ size_t contiguous_available() const;
+
+ // Iteration
+ void object_iterate(ObjectClosure* blk);
+ void space_iterate(SpaceClosure* blk, bool usedOnly = false);
+
+ void younger_refs_iterate(OopsInGenClosure* blk);
+
+ inline CompactibleSpace* first_compaction_space() const;
+
+ virtual inline HeapWord* allocate(size_t word_size, bool is_tlab);
+ virtual inline HeapWord* par_allocate(size_t word_size, bool is_tlab);
+
+ // Accessing marks
+ inline WaterMark top_mark();
+ inline WaterMark bottom_mark();
+
+ #define TenuredGen_SINCE_SAVE_MARKS_DECL(OopClosureType, nv_suffix) \
+ void oop_since_save_marks_iterate##nv_suffix(OopClosureType* cl);
+ TenuredGen_SINCE_SAVE_MARKS_DECL(OopsInGenClosure,_v)
+ SPECIALIZED_SINCE_SAVE_MARKS_CLOSURES(TenuredGen_SINCE_SAVE_MARKS_DECL)
+
+ void save_marks();
+ void reset_saved_marks();
+ bool no_allocs_since_save_marks();
+
+ inline size_t block_size(const HeapWord* addr) const;
+
+ inline bool block_is_obj(const HeapWord* addr) const;
+
+ virtual void collect(bool full,
+ bool clear_all_soft_refs,
+ size_t size,
+ bool is_tlab);
+ HeapWord* expand_and_allocate(size_t size,
+ bool is_tlab,
+ bool parallel = false);
+
+ virtual void prepare_for_verify();
+
+
virtual void gc_prologue(bool full);
+ virtual void gc_epilogue(bool full);
bool should_collect(bool full,
size_t word_size,
bool is_tlab);
virtual void compute_new_size();
// Performance Counter support
void update_counters();
+ virtual void record_spaces_top();
+
// Statistics
virtual void update_gc_stats(int level, bool full);
virtual bool promotion_attempt_is_safe(size_t max_promoted_in_bytes) const;
+
+ virtual void verify();
+ virtual void print_on(outputStream* st) const;
};
#endif // SHARE_VM_MEMORY_TENUREDGENERATION_HPP
< prev index next >