< prev index next >
src/hotspot/share/oops/klass.cpp
Print this page
@@ -604,11 +604,11 @@
// Only recreate it if not present. A previous attempt to restore may have
// gotten an OOM later but keep the mirror if it was created.
if (java_mirror() == NULL) {
log_trace(cds, mirror)("Recreate mirror for %s", external_name());
- java_lang_Class::create_mirror(this, loader, module_handle, protection_domain, CHECK);
+ java_lang_Class::create_mirror(this, loader, module_handle, protection_domain, Handle(), CHECK);
}
}
#if INCLUDE_CDS_JAVA_HEAP
// Used at CDS dump time to access the archived mirror. No GC barrier.
@@ -684,10 +684,23 @@
name()->as_klass_external_name(result, (int) name_len + 1);
assert(strlen(result) == name_len, "");
strcpy(result + name_len, addr_buf);
assert(strlen(result) == name_len + addr_len, "");
return result;
+
+ } else if (ik->is_hidden()) {
+ // Replace the last '+' char with '/'.
+ size_t name_len = name()->utf8_length();
+ char* result = NEW_RESOURCE_ARRAY(char, name_len + 1);
+ name()->as_klass_external_name(result, (int)name_len + 1);
+ for (int index = (int)name_len; index > 0; index--) {
+ if (result[index] == '+') {
+ result[index] = '/';
+ break;
+ }
+ }
+ return result;
}
}
if (name() == NULL) return "<unknown>";
return name()->as_klass_external_name();
}
< prev index next >