RFR 8180325: Use ClassLoaderData::classes_do for CDS classes

Ioi Lam ioi.lam at oracle.com
Mon May 15 15:51:52 UTC 2017


HI Coleen,

The changes look good.

FYI

1998 void InstanceKlass::remove_unshareable_info() {
1999 Klass::remove_unshareable_info();
2000
2001 if (is_in_error_state()) {
2002 // Classes are attempted to link during dumping and may fail,
2003 // but these classes are still in the dictionary and class list in 
CLD.
2004 // Check in_error state first because in_error is > linked state, so
2005 // is_linked() is true.
2006 // If there's a linking error, there is nothing else to remove.
2007 return;
2008 }
2009

The above code will be changed to an assert with JDK-8072061 
(Automatically determine optimal sizes for the CDS regions), because 
JDK-8072061 will eliminate all classes in error state.

Thanks
- Ioi

On 5/12/17 3:46 PM, coleen.phillimore at oracle.com wrote:
> Summary: Use closures and ClassLoaderData::classes_do instead of 
> SystemDictionary::classes_do
>
> Migrate CDS code to ClassLoaderData::loaded_classes_do.  The 
> loaded_classes_do function should be called without a lock, like the 
> rest of the ClassLoaderData::classes_do functions.  Also, I didn't 
> filter anonymous classes with the CDS functions because at the moment, 
> we don't encounter them (there's an assert).  If the code changes so 
> that we do encounter them, we might want to link them or decide what 
> to do with them at that time.
>
> open webrev at http://cr.openjdk.java.net/~coleenp/8180325.01/webrev
> bug link https://bugs.openjdk.java.net/browse/JDK-8180325
>
> Tested with nightly rbt run on linux x86, including and additionally 
> all the CDS tests locally.
>
> Thanks,
> Coleen
>



More information about the hotspot-runtime-dev mailing list