--- a/src/hotspot/share/memory/heapShared.cpp Thu Oct 17 20:27:44 2019 +0100
+++ b/src/hotspot/share/memory/heapShared.cpp Thu Oct 17 20:53:35 2019 +0100
@@ -79,6 +79,7 @@
{"java/util/ImmutableCollections$MapN", "EMPTY_MAP"},
{"java/util/ImmutableCollections$SetN", "EMPTY_SET"},
{"java/lang/module/Configuration", "EMPTY_CONFIGURATION"},
+ {"jdk/internal/math/FDBigInteger", "archivedCaches"},
};
const static int num_closed_archive_subgraph_entry_fields =
@@ -98,7 +99,7 @@
}
unsigned HeapShared::oop_hash(oop const& p) {
- assert(!p->mark()->has_bias_pattern(),
+ assert(!p->mark().has_bias_pattern(),
"this object should never have been locked"); // so identity_hash won't safepoin
unsigned hash = (unsigned)p->identity_hash();
return hash;
@@ -582,7 +583,7 @@
for (JavaFieldStream fs(k); !fs.done(); fs.next()) {
if (!fs.access_flags().is_static()) {
BasicType ft = fs.field_descriptor().field_type();
- if (!fs.access_flags().is_final() && (ft == T_ARRAY || ft == T_OBJECT)) {
+ if (!fs.access_flags().is_final() && is_reference_type(ft)) {
ResourceMark rm(THREAD);
log_warning(cds, heap)(
"Please check reference field in %s instance in closed archive heap region: %s %s",
@@ -870,7 +871,7 @@
virtual void do_field(fieldDescriptor* fd) {
if (fd->name() == _field_name) {
assert(!_found, "fields cannot be overloaded");
- assert(fd->field_type() == T_OBJECT || fd->field_type() == T_ARRAY, "can archive only obj or array fields");
+ assert(is_reference_type(fd->field_type()), "can archive only fields that are references");
_found = true;
_offset = fd->offset();
}