comparison src/share/vm/classfile/classLoaderData.cpp @ 7446:e51c9860cf66

8005082: NPG: Add specialized Metachunk sizes for reflection and anonymous classloaders Reviewed-by: johnc, coleenp
author jmasa
date Mon, 03 Dec 2012 15:09:39 -0800
parents c52660592f37
children 59a58e20dc60
comparison
equal deleted inserted replaced
7445:cd962e15c08e 7446:e51c9860cf66
328 if (_metaspace != NULL) { 328 if (_metaspace != NULL) {
329 return _metaspace; 329 return _metaspace;
330 } 330 }
331 if (this == the_null_class_loader_data()) { 331 if (this == the_null_class_loader_data()) {
332 assert (class_loader() == NULL, "Must be"); 332 assert (class_loader() == NULL, "Must be");
333 size_t word_size = Metaspace::first_chunk_word_size(); 333 set_metaspace(new Metaspace(_metaspace_lock, Metaspace::BootMetaspaceType));
334 set_metaspace(new Metaspace(_metaspace_lock, word_size)); 334 } else if (is_anonymous()) {
335 if (TraceClassLoaderData && Verbose && class_loader() != NULL) {
336 tty->print_cr("is_anonymous: %s", class_loader()->klass()->internal_name());
337 }
338 set_metaspace(new Metaspace(_metaspace_lock, Metaspace::AnonymousMetaspaceType));
339 } else if (class_loader()->is_a(SystemDictionary::reflect_DelegatingClassLoader_klass())) {
340 if (TraceClassLoaderData && Verbose && class_loader() != NULL) {
341 tty->print_cr("is_reflection: %s", class_loader()->klass()->internal_name());
342 }
343 set_metaspace(new Metaspace(_metaspace_lock, Metaspace::ReflectionMetaspaceType));
335 } else { 344 } else {
336 set_metaspace(new Metaspace(_metaspace_lock)); // default size for now. 345 set_metaspace(new Metaspace(_metaspace_lock, Metaspace::StandardMetaspaceType));
337 } 346 }
338 } 347 }
339 return _metaspace; 348 return _metaspace;
340 } 349 }
341 350
670 assert(DumpSharedSpaces, "only use this for dumping shared spaces"); 679 assert(DumpSharedSpaces, "only use this for dumping shared spaces");
671 assert(this == ClassLoaderData::the_null_class_loader_data(), 680 assert(this == ClassLoaderData::the_null_class_loader_data(),
672 "only supported for null loader data for now"); 681 "only supported for null loader data for now");
673 assert (!_shared_metaspaces_initialized, "only initialize once"); 682 assert (!_shared_metaspaces_initialized, "only initialize once");
674 MutexLockerEx ml(metaspace_lock(), Mutex::_no_safepoint_check_flag); 683 MutexLockerEx ml(metaspace_lock(), Mutex::_no_safepoint_check_flag);
675 _ro_metaspace = new Metaspace(_metaspace_lock, SharedReadOnlySize/wordSize); 684 _ro_metaspace = new Metaspace(_metaspace_lock, Metaspace::ROMetaspaceType);
676 _rw_metaspace = new Metaspace(_metaspace_lock, SharedReadWriteSize/wordSize); 685 _rw_metaspace = new Metaspace(_metaspace_lock, Metaspace::ReadWriteMetaspaceType);
677 _shared_metaspaces_initialized = true; 686 _shared_metaspaces_initialized = true;
678 } 687 }
679 688
680 Metaspace* ClassLoaderData::ro_metaspace() { 689 Metaspace* ClassLoaderData::ro_metaspace() {
681 assert(_ro_metaspace != NULL, "should already be initialized"); 690 assert(_ro_metaspace != NULL, "should already be initialized");