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