272
273 // Support for java.lang.Runtime.maxMemory(): return the maximum amount of
274 // memory that the vm could make available for storing 'normal' java objects.
275 // This is based on the reserved address space, but should not include space
276 // that the vm uses internally for bookkeeping or temporary storage
277 // (e.g., in the case of the young gen, one of the survivor
278 // spaces).
279 virtual size_t max_capacity() const = 0;
280
281 // Returns "TRUE" iff "p" points into the committed areas of the heap.
282 // This method can be expensive so avoid using it in performance critical
283 // code.
284 virtual bool is_in(const void* p) const = 0;
285
286 DEBUG_ONLY(bool is_in_or_null(const void* p) const { return p == nullptr || is_in(p); })
287
288 void set_gc_cause(GCCause::Cause v);
289 GCCause::Cause gc_cause() { return _gc_cause; }
290
291 oop obj_allocate(Klass* klass, size_t size, TRAPS);
292 virtual oop array_allocate(Klass* klass, size_t size, int length, bool do_zero, TRAPS);
293 oop class_allocate(Klass* klass, size_t size, TRAPS);
294
295 // Utilities for turning raw memory into filler objects.
296 //
297 // min_fill_size() is the smallest region that can be filled.
298 // fill_with_objects() can fill arbitrary-sized regions of the heap using
299 // multiple objects. fill_with_object() is for regions known to be smaller
300 // than the largest array of integers; it uses a single object to fill the
301 // region and has slightly less overhead.
302 static size_t min_fill_size() {
303 return size_t(align_object_size(oopDesc::header_size()));
304 }
305
306 static void fill_with_objects(HeapWord* start, size_t words, bool zap = true);
307
308 static void fill_with_object(HeapWord* start, size_t words, bool zap = true);
309 static void fill_with_object(MemRegion region, bool zap = true) {
310 fill_with_object(region.start(), region.word_size(), zap);
311 }
|
272
273 // Support for java.lang.Runtime.maxMemory(): return the maximum amount of
274 // memory that the vm could make available for storing 'normal' java objects.
275 // This is based on the reserved address space, but should not include space
276 // that the vm uses internally for bookkeeping or temporary storage
277 // (e.g., in the case of the young gen, one of the survivor
278 // spaces).
279 virtual size_t max_capacity() const = 0;
280
281 // Returns "TRUE" iff "p" points into the committed areas of the heap.
282 // This method can be expensive so avoid using it in performance critical
283 // code.
284 virtual bool is_in(const void* p) const = 0;
285
286 DEBUG_ONLY(bool is_in_or_null(const void* p) const { return p == nullptr || is_in(p); })
287
288 void set_gc_cause(GCCause::Cause v);
289 GCCause::Cause gc_cause() { return _gc_cause; }
290
291 oop obj_allocate(Klass* klass, size_t size, TRAPS);
292 oop obj_buffer_allocate(Klass* klass, size_t size, TRAPS); // doesn't clear memory
293 virtual oop array_allocate(Klass* klass, size_t size, int length, bool do_zero, TRAPS);
294 oop class_allocate(Klass* klass, size_t size, TRAPS);
295
296 // Utilities for turning raw memory into filler objects.
297 //
298 // min_fill_size() is the smallest region that can be filled.
299 // fill_with_objects() can fill arbitrary-sized regions of the heap using
300 // multiple objects. fill_with_object() is for regions known to be smaller
301 // than the largest array of integers; it uses a single object to fill the
302 // region and has slightly less overhead.
303 static size_t min_fill_size() {
304 return size_t(align_object_size(oopDesc::header_size()));
305 }
306
307 static void fill_with_objects(HeapWord* start, size_t words, bool zap = true);
308
309 static void fill_with_object(HeapWord* start, size_t words, bool zap = true);
310 static void fill_with_object(MemRegion region, bool zap = true) {
311 fill_with_object(region.start(), region.word_size(), zap);
312 }
|