hotspot/src/share/vm/memory/metadataFactory.hpp
changeset 46746 ea379ebb9447
parent 46522 86b13b03a053
--- a/hotspot/src/share/vm/memory/metadataFactory.hpp	Sat Jul 22 15:54:27 2017 -0400
+++ b/hotspot/src/share/vm/memory/metadataFactory.hpp	Wed Aug 02 18:06:38 2017 -0700
@@ -36,7 +36,7 @@
   static Array<T>* new_array(ClassLoaderData* loader_data, int length, TRAPS) {
     // The "true" argument is because all metadata arrays are read only when
     // dumped to the shared archive
-    return new (loader_data, length, /*read_only*/true, THREAD) Array<T>(length);
+    return new (loader_data, length, THREAD) Array<T>(length);
   }
 
   template <typename T>
@@ -49,47 +49,22 @@
   }
 
   template <typename T>
-  static Array<T>* new_writeable_array(ClassLoaderData* loader_data, int length, TRAPS) {
-    return new (loader_data, length, /*read_only*/false, THREAD) Array<T>(length);
-  }
-
-  template <typename T>
-  static Array<T>* new_writeable_array(ClassLoaderData* loader_data, int length, T value, TRAPS) {
-    Array<T>* array = new_writeable_array<T>(loader_data, length, CHECK_NULL);
-    for (int i = 0; i < length; i++) {
-      array->at_put(i, value);
-    }
-    return array;
-  }
-
-  template <typename T>
   static void free_array(ClassLoaderData* loader_data, Array<T>* data) {
     if (data != NULL) {
       assert(loader_data != NULL, "shouldn't pass null");
       assert(!data->is_shared(), "cannot deallocate array in shared spaces");
       int size = data->size();
-      if (DumpSharedSpaces) {
-        loader_data->ro_metaspace()->deallocate((MetaWord*)data, size, false);
-      } else {
-        loader_data->metaspace_non_null()->deallocate((MetaWord*)data, size, false);
-      }
+      loader_data->metaspace_non_null()->deallocate((MetaWord*)data, size, false);
     }
   }
 
   // Deallocation method for metadata
   template <class T>
   static void free_metadata(ClassLoaderData* loader_data, T md) {
-    if (DumpSharedSpaces) {
-      // FIXME: the freeing code is buggy, especially when -Xlog:cds is enabled.
-      // Disable for now -- this means if you specify bad classes in your classlist you
-      // may have wasted space inside the archive.
-      return;
-    }
     if (md != NULL) {
       assert(loader_data != NULL, "shouldn't pass null");
       int size = md->size();
       // Call metadata's deallocate function which will call deallocate fields
-      assert(!DumpSharedSpaces, "cannot deallocate metadata when dumping CDS archive");
       assert(!md->on_stack(), "can't deallocate things on stack");
       assert(!md->is_shared(), "cannot deallocate if in shared spaces");
       md->deallocate_contents(loader_data);