Mercurial > hg > truffle
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"); |