--- old/src/share/vm/memory/metadataFactory.hpp 2017-06-29 15:57:27.576045224 -0700 +++ new/src/share/vm/memory/metadataFactory.hpp 2017-06-29 15:57:27.392038151 -0700 @@ -36,7 +36,7 @@ static Array* 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(length); + return new (loader_data, length, THREAD) Array(length); } template @@ -49,47 +49,22 @@ } template - static Array* new_writeable_array(ClassLoaderData* loader_data, int length, TRAPS) { - return new (loader_data, length, /*read_only*/false, THREAD) Array(length); - } - - template - static Array* new_writeable_array(ClassLoaderData* loader_data, int length, T value, TRAPS) { - Array* array = new_writeable_array(loader_data, length, CHECK_NULL); - for (int i = 0; i < length; i++) { - array->at_put(i, value); - } - return array; - } - - template static void free_array(ClassLoaderData* loader_data, Array* 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 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);