--- a/src/hotspot/share/gc/shared/collectedHeap.hpp Thu Oct 17 20:27:44 2019 +0100
+++ b/src/hotspot/share/gc/shared/collectedHeap.hpp Thu Oct 17 20:53:35 2019 +0100
@@ -51,6 +51,7 @@
class GCMemoryManager;
class MemoryPool;
class MetaspaceSummary;
+class ReservedHeapSpace;
class SoftRefPolicy;
class Thread;
class ThreadClosure;
@@ -73,7 +74,7 @@
void log_heap(CollectedHeap* heap, bool before);
public:
- GCHeapLog() : EventLogBase<GCMessage>("GC Heap History") {}
+ GCHeapLog() : EventLogBase<GCMessage>("GC Heap History", "gc") {}
void log_heap_before(CollectedHeap* heap) {
log_heap(heap, true);
@@ -102,9 +103,10 @@
private:
GCHeapLog* _gc_heap_log;
+ protected:
+ // Not used by all GCs
MemRegion _reserved;
- protected:
bool _is_gc_active;
// Used for filler objects (static, but initialized in ctor).
@@ -203,9 +205,7 @@
virtual void safepoint_synchronize_begin() {}
virtual void safepoint_synchronize_end() {}
- void initialize_reserved_region(HeapWord *start, HeapWord *end);
- MemRegion reserved_region() const { return _reserved; }
- address base() const { return (address)reserved_region().start(); }
+ void initialize_reserved_region(const ReservedHeapSpace& rs);
virtual size_t capacity() const = 0;
virtual size_t used() const = 0;
@@ -226,15 +226,6 @@
// spaces).
virtual size_t max_capacity() const = 0;
- // Returns "TRUE" if "p" points into the reserved area of the heap.
- bool is_in_reserved(const void* p) const {
- return _reserved.contains(p);
- }
-
- bool is_in_reserved_or_null(const void* p) const {
- return p == NULL || is_in_reserved(p);
- }
-
// Returns "TRUE" iff "p" points into the committed areas of the heap.
// This method can be expensive so avoid using it in performance critical
// code.
@@ -254,9 +245,9 @@
}
GCCause::Cause gc_cause() { return _gc_cause; }
- virtual oop obj_allocate(Klass* klass, int size, TRAPS);
+ oop obj_allocate(Klass* klass, int size, TRAPS);
virtual oop array_allocate(Klass* klass, int size, int length, bool do_zero, TRAPS);
- virtual oop class_allocate(Klass* klass, int size, TRAPS);
+ oop class_allocate(Klass* klass, int size, TRAPS);
// Utilities for turning raw memory into filler objects.
//
@@ -402,28 +393,6 @@
// over live objects.
virtual void safe_object_iterate(ObjectClosure* cl) = 0;
- // NOTE! There is no requirement that a collector implement these
- // functions.
- //
- // A CollectedHeap is divided into a dense sequence of "blocks"; that is,
- // each address in the (reserved) heap is a member of exactly
- // one block. The defining characteristic of a block is that it is
- // possible to find its size, and thus to progress forward to the next
- // block. (Blocks may be of different sizes.) Thus, blocks may
- // represent Java objects, or they might be free blocks in a
- // free-list-based heap (or subheap), as long as the two kinds are
- // distinguishable and the size of each is determinable.
-
- // Returns the address of the start of the "block" that contains the
- // address "addr". We say "blocks" instead of "object" since some heaps
- // may not pack objects densely; a chunk may either be an object or a
- // non-object.
- virtual HeapWord* block_start(const void* addr) const = 0;
-
- // Requires "addr" to be the start of a block, and returns "TRUE" iff
- // the block is an object.
- virtual bool block_is_obj(const HeapWord* addr) const = 0;
-
// Returns the longest time (in ms) that has elapsed since the last
// time that any part of the heap was examined by a garbage collection.
virtual jlong millis_since_last_gc() = 0;
@@ -461,6 +430,9 @@
virtual void print_on_error(outputStream* st) const;
+ // Used to print information about locations in the hs_err file.
+ virtual bool print_location(outputStream* st, void* addr) const = 0;
+
// Print all GC threads (other than the VM thread)
// used by this heap.
virtual void print_gc_threads_on(outputStream* st) const = 0;
@@ -534,11 +506,6 @@
virtual size_t obj_size(oop obj) const;
- // Cells are memory slices allocated by the allocator. Objects are initialized
- // in cells. The cell itself may have a header, found at a negative offset of
- // oops. Usually, the size of the cell header is 0, but it may be larger.
- virtual ptrdiff_t cell_header_size() const { return 0; }
-
// Non product verification and debugging.
#ifndef PRODUCT
// Support for PromotionFailureALot. Return true if it's time to cause a