--- a/src/hotspot/share/gc/z/zCollectedHeap.cpp Thu Oct 17 20:27:44 2019 +0100
+++ b/src/hotspot/share/gc/z/zCollectedHeap.cpp Thu Oct 17 20:53:35 2019 +0100
@@ -28,11 +28,14 @@
#include "gc/z/zGlobals.hpp"
#include "gc/z/zHeap.inline.hpp"
#include "gc/z/zNMethod.hpp"
+#include "gc/z/zObjArrayAllocator.hpp"
+#include "gc/z/zOop.inline.hpp"
#include "gc/z/zServiceability.hpp"
#include "gc/z/zStat.hpp"
#include "gc/z/zUtils.inline.hpp"
#include "memory/universe.hpp"
#include "runtime/mutexLocker.hpp"
+#include "utilities/align.hpp"
ZCollectedHeap* ZCollectedHeap::heap() {
CollectedHeap* heap = Universe::heap();
@@ -65,8 +68,7 @@
return JNI_ENOMEM;
}
- initialize_reserved_region((HeapWord*)ZAddressReservedStart,
- (HeapWord*)ZAddressReservedEnd);
+ Universe::calculate_verify_data((HeapWord*)0, (HeapWord*)UINTPTR_MAX);
return JNI_OK;
}
@@ -109,11 +111,11 @@
}
bool ZCollectedHeap::is_in(const void* p) const {
- return is_in_reserved(p) && _heap.is_in((uintptr_t)p);
+ return _heap.is_in((uintptr_t)p);
}
uint32_t ZCollectedHeap::hash_oop(oop obj) const {
- return _heap.hash_oop(obj);
+ return _heap.hash_oop(ZOop::to_address(obj));
}
HeapWord* ZCollectedHeap::allocate_new_tlab(size_t min_size, size_t requested_size, size_t* actual_size) {
@@ -127,6 +129,15 @@
return (HeapWord*)addr;
}
+oop ZCollectedHeap::array_allocate(Klass* klass, int size, int length, bool do_zero, TRAPS) {
+ if (!do_zero) {
+ return CollectedHeap::array_allocate(klass, size, length, false /* do_zero */, THREAD);
+ }
+
+ ZObjArrayAllocator allocator(klass, size, length, THREAD);
+ return allocator.allocate();
+}
+
HeapWord* ZCollectedHeap::mem_allocate(size_t size, bool* gc_overhead_limit_was_exceeded) {
const size_t size_in_bytes = ZUtils::words_to_bytes(align_object_size(size));
return (HeapWord*)_heap.alloc_object(size_in_bytes);
@@ -232,19 +243,11 @@
}
void ZCollectedHeap::object_iterate(ObjectClosure* cl) {
- _heap.object_iterate(cl, true /* visit_referents */);
+ _heap.object_iterate(cl, true /* visit_weaks */);
}
void ZCollectedHeap::safe_object_iterate(ObjectClosure* cl) {
- _heap.object_iterate(cl, true /* visit_referents */);
-}
-
-HeapWord* ZCollectedHeap::block_start(const void* addr) const {
- return (HeapWord*)_heap.block_start((uintptr_t)addr);
-}
-
-bool ZCollectedHeap::block_is_obj(const HeapWord* addr) const {
- return _heap.block_is_obj((uintptr_t)addr);
+ _heap.object_iterate(cl, true /* visit_weaks */);
}
void ZCollectedHeap::register_nmethod(nmethod* nm) {
@@ -281,11 +284,7 @@
}
VirtualSpaceSummary ZCollectedHeap::create_heap_space_summary() {
- const size_t capacity_in_words = capacity() / HeapWordSize;
- const size_t max_capacity_in_words = max_capacity() / HeapWordSize;
- return VirtualSpaceSummary(reserved_region().start(),
- reserved_region().start() + capacity_in_words,
- reserved_region().start() + max_capacity_in_words);
+ return VirtualSpaceSummary((HeapWord*)0, (HeapWord*)capacity(), (HeapWord*)max_capacity());
}
void ZCollectedHeap::safepoint_synchronize_begin() {
@@ -307,10 +306,6 @@
void ZCollectedHeap::print_on_error(outputStream* st) const {
CollectedHeap::print_on_error(st);
- st->print_cr("Address Space");
- st->print_cr( " Start: " PTR_FORMAT, ZAddressSpaceStart);
- st->print_cr( " End: " PTR_FORMAT, ZAddressSpaceEnd);
- st->print_cr( " Size: " SIZE_FORMAT_W(-15) " (" PTR_FORMAT ")", ZAddressSpaceSize, ZAddressSpaceSize);
st->print_cr( "Heap");
st->print_cr( " GlobalPhase: %u", ZGlobalPhase);
st->print_cr( " GlobalSeqNum: %u", ZGlobalSeqNum);
@@ -346,10 +341,14 @@
// Does nothing
}
+bool ZCollectedHeap::print_location(outputStream* st, void* addr) const {
+ return _heap.print_location(st, (uintptr_t)addr);
+}
+
void ZCollectedHeap::verify(VerifyOption option /* ignored */) {
_heap.verify();
}
bool ZCollectedHeap::is_oop(oop object) const {
- return CollectedHeap::is_oop(object) && _heap.is_oop(object);
+ return _heap.is_oop(ZOop::to_address(object));
}