RFR (M) 8061651 - Interface to the Lookup Index Cache to improve URLClassPath search time (round 3)

Jiangli Zhou jiangli.zhou at oracle.com
Tue Oct 28 02:52:53 UTC 2014


Hi Ioi,

I have a question for following code in AppClassLoader.loadClass(). If a 
class is 'known to not exist' for the AppClassLoader (not in the 
AppClassLoader and parent classloaders' shared lookup cache), it seems 
findLoadedClass() would only find classes that's dynamically loaded by 
the parent loaders. The AppClassLoader would never try to load the 
class. Is the AppClassLoader's lookup cache guaranteed to have all the 
classes in it's path?

  315             if (ucp.knownToNotExist(name)) {
  316                 // The class of the given name is not found in the parent
  317                 // class loader as well as its local URLClassPath.
  318                 // Check if this class has already been defined dynamically;
  319                 // if so, return the loaded class; otherwise, skip the parent
  320                 // delegation and findClass.
  321                 synchronized (getClassLoadingLock(name)) {
  322                     Class<?> c = findLoadedClass(name);
  323                     if (c != null) {
  324                         return c;
  325                     }
  326                 }
  327                 throw new ClassNotFoundException(name);
  328             }


Thanks,
Jiangli

On 10/27/2014 3:32 PM, Ioi Lam wrote:
> Hi David, I have update the latest webrev at:
>
> http://cr.openjdk.java.net/~iklam/8061651-lookup-index-open-v3/
>
> and fixed the "int cache[]" style you mentioned.
>
> This version also contains the JDK test case that Mandy requested:
>
> http://cr.openjdk.java.net/~iklam/8061651-lookup-index-open-v3/jdk/test/sun/misc/URLClassPath/EnableLookupCache.java.html 
>
>
> Thanks
> - Ioi
>


More information about the hotspot-runtime-dev mailing list