212 MetaspaceObj::Type type, MetadataType mdtype, TRAPS);
213
214 static const char* metadata_type_name(Metaspace::MetadataType mdtype);
215
216 static void print_compressed_class_space(outputStream* st, const char* requested_addr = 0) NOT_LP64({});
217
218 // Return TRUE only if UseCompressedClassPointers is True.
219 static bool using_class_space() {
220 return NOT_LP64(false) LP64_ONLY(UseCompressedClassPointers);
221 }
222
223 static bool is_class_space_allocation(MetadataType mdType) {
224 return mdType == ClassType && using_class_space();
225 }
226
227 };
228
229 // Manages the metaspace portion belonging to a class loader
230 class ClassLoaderMetaspace : public CHeapObj<mtClass> {
231 friend class CollectedHeap; // For expand_and_allocate()
232 friend class Metaspace;
233 friend class MetaspaceUtils;
234 friend class metaspace::PrintCLDMetaspaceInfoClosure;
235 friend class VM_CollectForMetadataAllocation; // For expand_and_allocate()
236
237 private:
238
239 void initialize(Mutex* lock, Metaspace::MetaspaceType type);
240
241 // Initialize the first chunk for a Metaspace. Used for
242 // special cases such as the boot class loader, reflection
243 // class loader and anonymous class loader.
244 void initialize_first_chunk(Metaspace::MetaspaceType type, Metaspace::MetadataType mdtype);
245 metaspace::Metachunk* get_initialization_chunk(Metaspace::MetaspaceType type, Metaspace::MetadataType mdtype);
246
247 const Metaspace::MetaspaceType _space_type;
248 Mutex* const _lock;
249 metaspace::SpaceManager* _vsm;
250 metaspace::SpaceManager* _class_vsm;
251
|
212 MetaspaceObj::Type type, MetadataType mdtype, TRAPS);
213
214 static const char* metadata_type_name(Metaspace::MetadataType mdtype);
215
216 static void print_compressed_class_space(outputStream* st, const char* requested_addr = 0) NOT_LP64({});
217
218 // Return TRUE only if UseCompressedClassPointers is True.
219 static bool using_class_space() {
220 return NOT_LP64(false) LP64_ONLY(UseCompressedClassPointers);
221 }
222
223 static bool is_class_space_allocation(MetadataType mdType) {
224 return mdType == ClassType && using_class_space();
225 }
226
227 };
228
229 // Manages the metaspace portion belonging to a class loader
230 class ClassLoaderMetaspace : public CHeapObj<mtClass> {
231 friend class CollectedHeap; // For expand_and_allocate()
232 friend class ZCollectedHeap; // For expand_and_allocate()
233 friend class Metaspace;
234 friend class MetaspaceUtils;
235 friend class metaspace::PrintCLDMetaspaceInfoClosure;
236 friend class VM_CollectForMetadataAllocation; // For expand_and_allocate()
237
238 private:
239
240 void initialize(Mutex* lock, Metaspace::MetaspaceType type);
241
242 // Initialize the first chunk for a Metaspace. Used for
243 // special cases such as the boot class loader, reflection
244 // class loader and anonymous class loader.
245 void initialize_first_chunk(Metaspace::MetaspaceType type, Metaspace::MetadataType mdtype);
246 metaspace::Metachunk* get_initialization_chunk(Metaspace::MetaspaceType type, Metaspace::MetadataType mdtype);
247
248 const Metaspace::MetaspaceType _space_type;
249 Mutex* const _lock;
250 metaspace::SpaceManager* _vsm;
251 metaspace::SpaceManager* _class_vsm;
252
|