1176 // Grow generation to reserved size.
1177 bool grow_to_reserved();
1178
1179 void clear_expansion_cause() { _expansion_cause = CMSExpansionCause::_no_expansion; }
1180
1181 // Space enquiries
1182 size_t capacity() const;
1183 size_t used() const;
1184 size_t free() const;
1185 double occupancy() const { return ((double)used())/((double)capacity()); }
1186 size_t contiguous_available() const;
1187 size_t unsafe_max_alloc_nogc() const;
1188
1189 // over-rides
1190 MemRegion used_region() const;
1191 MemRegion used_region_at_save_marks() const;
1192
1193 // Does a "full" (forced) collection invoked on this generation collect
1194 // all younger generations as well? Note that the second conjunct is a
1195 // hack to allow the collection of the younger gen first if the flag is
1196 // set. This is better than using th policy's should_collect_gen0_first()
1197 // since that causes us to do an extra unnecessary pair of restart-&-stop-world.
1198 virtual bool full_collects_younger_generations() const {
1199 return UseCMSCompactAtFullCollection && !CollectGen0First;
1200 }
1201
1202 void space_iterate(SpaceClosure* blk, bool usedOnly = false);
1203
1204 // Support for compaction
1205 CompactibleSpace* first_compaction_space() const;
1206 // Adjust quantities in the generation affected by
1207 // the compaction.
1208 void reset_after_compaction();
1209
1210 // Allocation support
1211 HeapWord* allocate(size_t size, bool tlab);
1212 HeapWord* have_lock_and_allocate(size_t size, bool tlab);
1213 oop promote(oop obj, size_t obj_size);
1214 HeapWord* par_allocate(size_t size, bool tlab) {
1215 return allocate(size, tlab);
1216 }
1217
1218 // Incremental mode triggering.
1219 HeapWord* allocation_limit_reached(Space* space, HeapWord* top,
|
1176 // Grow generation to reserved size.
1177 bool grow_to_reserved();
1178
1179 void clear_expansion_cause() { _expansion_cause = CMSExpansionCause::_no_expansion; }
1180
1181 // Space enquiries
1182 size_t capacity() const;
1183 size_t used() const;
1184 size_t free() const;
1185 double occupancy() const { return ((double)used())/((double)capacity()); }
1186 size_t contiguous_available() const;
1187 size_t unsafe_max_alloc_nogc() const;
1188
1189 // over-rides
1190 MemRegion used_region() const;
1191 MemRegion used_region_at_save_marks() const;
1192
1193 // Does a "full" (forced) collection invoked on this generation collect
1194 // all younger generations as well? Note that the second conjunct is a
1195 // hack to allow the collection of the younger gen first if the flag is
1196 // set.
1197 virtual bool full_collects_younger_generations() const {
1198 return UseCMSCompactAtFullCollection && !ScavengeBeforeFullGC;
1199 }
1200
1201 void space_iterate(SpaceClosure* blk, bool usedOnly = false);
1202
1203 // Support for compaction
1204 CompactibleSpace* first_compaction_space() const;
1205 // Adjust quantities in the generation affected by
1206 // the compaction.
1207 void reset_after_compaction();
1208
1209 // Allocation support
1210 HeapWord* allocate(size_t size, bool tlab);
1211 HeapWord* have_lock_and_allocate(size_t size, bool tlab);
1212 oop promote(oop obj, size_t obj_size);
1213 HeapWord* par_allocate(size_t size, bool tlab) {
1214 return allocate(size, tlab);
1215 }
1216
1217 // Incremental mode triggering.
1218 HeapWord* allocation_limit_reached(Space* space, HeapWord* top,
|