49 50 // Allocation failure 51 virtual bool expand(size_t bytes, size_t expand_bytes); 52 53 // Accessing spaces 54 ContiguousSpace* space() const { return _the_space; } 55 56 void assert_correct_size_change_locking(); 57 58 public: 59 TenuredGeneration(ReservedSpace rs, 60 size_t initial_byte_size, 61 GenRemSet* remset); 62 63 Generation::Name kind() { return Generation::MarkSweepCompact; } 64 65 // Printing 66 const char* name() const { return "tenured generation"; } 67 const char* short_name() const { return "Tenured"; } 68 69 // Does a "full" (forced) collection invoked on this generation collect 70 // the young generation as well? Note that this is a hack to allow the 71 // collection of the young gen first if the flag is set. 72 virtual bool full_collects_young_generation() const { 73 return !ScavengeBeforeFullGC; 74 } 75 76 size_t unsafe_max_alloc_nogc() const; 77 size_t contiguous_available() const; 78 79 // Iteration 80 void object_iterate(ObjectClosure* blk); 81 82 virtual inline HeapWord* allocate(size_t word_size, bool is_tlab); 83 virtual inline HeapWord* par_allocate(size_t word_size, bool is_tlab); 84 85 #define TenuredGen_SINCE_SAVE_MARKS_DECL(OopClosureType, nv_suffix) \ 86 void oop_since_save_marks_iterate##nv_suffix(OopClosureType* cl); 87 TenuredGen_SINCE_SAVE_MARKS_DECL(OopsInGenClosure,_v) 88 SPECIALIZED_SINCE_SAVE_MARKS_CLOSURES(TenuredGen_SINCE_SAVE_MARKS_DECL) 89 90 void save_marks(); 91 void reset_saved_marks(); 92 bool no_allocs_since_save_marks(); 93 94 inline size_t block_size(const HeapWord* addr) const; 95 | 49 50 // Allocation failure 51 virtual bool expand(size_t bytes, size_t expand_bytes); 52 53 // Accessing spaces 54 ContiguousSpace* space() const { return _the_space; } 55 56 void assert_correct_size_change_locking(); 57 58 public: 59 TenuredGeneration(ReservedSpace rs, 60 size_t initial_byte_size, 61 GenRemSet* remset); 62 63 Generation::Name kind() { return Generation::MarkSweepCompact; } 64 65 // Printing 66 const char* name() const { return "tenured generation"; } 67 const char* short_name() const { return "Tenured"; } 68 69 size_t unsafe_max_alloc_nogc() const; 70 size_t contiguous_available() const; 71 72 // Iteration 73 void object_iterate(ObjectClosure* blk); 74 75 virtual inline HeapWord* allocate(size_t word_size, bool is_tlab); 76 virtual inline HeapWord* par_allocate(size_t word_size, bool is_tlab); 77 78 #define TenuredGen_SINCE_SAVE_MARKS_DECL(OopClosureType, nv_suffix) \ 79 void oop_since_save_marks_iterate##nv_suffix(OopClosureType* cl); 80 TenuredGen_SINCE_SAVE_MARKS_DECL(OopsInGenClosure,_v) 81 SPECIALIZED_SINCE_SAVE_MARKS_CLOSURES(TenuredGen_SINCE_SAVE_MARKS_DECL) 82 83 void save_marks(); 84 void reset_saved_marks(); 85 bool no_allocs_since_save_marks(); 86 87 inline size_t block_size(const HeapWord* addr) const; 88 |