1105 MS_foreground_collection_type = 1,
1106 MSC_foreground_collection_type = 2,
1107 Unknown_collection_type = 3
1108 };
1109
1110 CollectionTypes _debug_collection_type;
1111
1112 // True if a compacting collection was done.
1113 bool _did_compact;
1114 bool did_compact() { return _did_compact; }
1115
1116 // Fraction of current occupancy at which to start a CMS collection which
1117 // will collect this generation (at least).
1118 double _initiating_occupancy;
1119
1120 protected:
1121 // Shrink generation by specified size (returns false if unable to shrink)
1122 void shrink_free_list_by(size_t bytes);
1123
1124 // Update statistics for GC
1125 virtual void update_gc_stats(int level, bool full);
1126
1127 // Maximum available space in the generation (including uncommitted)
1128 // space.
1129 size_t max_available() const;
1130
1131 // getter and initializer for _initiating_occupancy field.
1132 double initiating_occupancy() const { return _initiating_occupancy; }
1133 void init_initiating_occupancy(intx io, uintx tr);
1134
1135 public:
1136 ConcurrentMarkSweepGeneration(ReservedSpace rs, size_t initial_byte_size,
1137 int level, CardTableRS* ct,
1138 bool use_adaptive_freelists,
1139 FreeBlockDictionary<FreeChunk>::DictionaryChoice);
1140
1141 // Accessors
1142 CMSCollector* collector() const { return _collector; }
1143 static void set_collector(CMSCollector* collector) {
1144 assert(_collector == NULL, "already set");
1145 _collector = collector;
1146 }
1147 CompactibleFreeListSpace* cmsSpace() const { return _cmsSpace; }
1148
1149 Mutex* freelistLock() const;
1150
1151 virtual Generation::Name kind() { return Generation::ConcurrentMarkSweep; }
1152
1153 void set_did_compact(bool v) { _did_compact = v; }
1154
1155 bool refs_discovery_is_atomic() const { return false; }
1156 bool refs_discovery_is_mt() const {
1157 // Note: CMS does MT-discovery during the parallel-remark
|
1105 MS_foreground_collection_type = 1,
1106 MSC_foreground_collection_type = 2,
1107 Unknown_collection_type = 3
1108 };
1109
1110 CollectionTypes _debug_collection_type;
1111
1112 // True if a compacting collection was done.
1113 bool _did_compact;
1114 bool did_compact() { return _did_compact; }
1115
1116 // Fraction of current occupancy at which to start a CMS collection which
1117 // will collect this generation (at least).
1118 double _initiating_occupancy;
1119
1120 protected:
1121 // Shrink generation by specified size (returns false if unable to shrink)
1122 void shrink_free_list_by(size_t bytes);
1123
1124 // Update statistics for GC
1125 virtual void update_gc_stats(Generation* current_generation, bool full);
1126
1127 // Maximum available space in the generation (including uncommitted)
1128 // space.
1129 size_t max_available() const;
1130
1131 // getter and initializer for _initiating_occupancy field.
1132 double initiating_occupancy() const { return _initiating_occupancy; }
1133 void init_initiating_occupancy(intx io, uintx tr);
1134
1135 public:
1136 ConcurrentMarkSweepGeneration(ReservedSpace rs, size_t initial_byte_size,
1137 CardTableRS* ct,
1138 bool use_adaptive_freelists,
1139 FreeBlockDictionary<FreeChunk>::DictionaryChoice);
1140
1141 // Accessors
1142 CMSCollector* collector() const { return _collector; }
1143 static void set_collector(CMSCollector* collector) {
1144 assert(_collector == NULL, "already set");
1145 _collector = collector;
1146 }
1147 CompactibleFreeListSpace* cmsSpace() const { return _cmsSpace; }
1148
1149 Mutex* freelistLock() const;
1150
1151 virtual Generation::Name kind() { return Generation::ConcurrentMarkSweep; }
1152
1153 void set_did_compact(bool v) { _did_compact = v; }
1154
1155 bool refs_discovery_is_atomic() const { return false; }
1156 bool refs_discovery_is_mt() const {
1157 // Note: CMS does MT-discovery during the parallel-remark
|