1161 // Perform a collection of the heap; intended for use in implementing
1162 // "System.gc". This probably implies as full a collection as the
1163 // "CollectedHeap" supports.
1164 virtual void collect(GCCause::Cause cause);
1165
1166 // The same as above but assume that the caller holds the Heap_lock.
1167 void collect_locked(GCCause::Cause cause);
1168
1169 virtual bool copy_allocation_context_stats(const jint* contexts,
1170 jlong* totals,
1171 jbyte* accuracy,
1172 jint len);
1173
1174 // True iff an evacuation has failed in the most-recent collection.
1175 bool evacuation_failed() { return _evacuation_failed; }
1176
1177 void remove_from_old_sets(const HeapRegionSetCount& old_regions_removed, const HeapRegionSetCount& humongous_regions_removed);
1178 void prepend_to_freelist(FreeRegionList* list);
1179 void decrement_summary_bytes(size_t bytes);
1180
1181 // Returns "TRUE" iff "p" points into the committed areas of the heap.
1182 virtual bool is_in(const void* p) const;
1183 #ifdef ASSERT
1184 // Returns whether p is in one of the available areas of the heap. Slow but
1185 // extensive version.
1186 bool is_in_exact(const void* p) const;
1187 #endif
1188
1189 // Return "TRUE" iff the given object address is within the collection
1190 // set. Slow implementation.
1191 bool obj_in_cs(oop obj);
1192
1193 inline bool is_in_cset(const HeapRegion *hr);
1194 inline bool is_in_cset(oop obj);
1195
1196 inline bool is_in_cset_or_humongous(const oop obj);
1197
1198 private:
1199 // This array is used for a quick test on whether a reference points into
1200 // the collection set or not. Each of the array's elements denotes whether the
1201 // corresponding region is in the collection set or not.
|
1161 // Perform a collection of the heap; intended for use in implementing
1162 // "System.gc". This probably implies as full a collection as the
1163 // "CollectedHeap" supports.
1164 virtual void collect(GCCause::Cause cause);
1165
1166 // The same as above but assume that the caller holds the Heap_lock.
1167 void collect_locked(GCCause::Cause cause);
1168
1169 virtual bool copy_allocation_context_stats(const jint* contexts,
1170 jlong* totals,
1171 jbyte* accuracy,
1172 jint len);
1173
1174 // True iff an evacuation has failed in the most-recent collection.
1175 bool evacuation_failed() { return _evacuation_failed; }
1176
1177 void remove_from_old_sets(const HeapRegionSetCount& old_regions_removed, const HeapRegionSetCount& humongous_regions_removed);
1178 void prepend_to_freelist(FreeRegionList* list);
1179 void decrement_summary_bytes(size_t bytes);
1180
1181 virtual bool is_in(const void* p) const;
1182 #ifdef ASSERT
1183 // Returns whether p is in one of the available areas of the heap. Slow but
1184 // extensive version.
1185 bool is_in_exact(const void* p) const;
1186 #endif
1187
1188 // Return "TRUE" iff the given object address is within the collection
1189 // set. Slow implementation.
1190 bool obj_in_cs(oop obj);
1191
1192 inline bool is_in_cset(const HeapRegion *hr);
1193 inline bool is_in_cset(oop obj);
1194
1195 inline bool is_in_cset_or_humongous(const oop obj);
1196
1197 private:
1198 // This array is used for a quick test on whether a reference points into
1199 // the collection set or not. Each of the array's elements denotes whether the
1200 // corresponding region is in the collection set or not.
|