< 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 >