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

Ioi Lam ioi.lam at oracle.com
Tue Oct 28 05:03:11 UTC 2014


On 10/27/14, 9:52 PM, Mandy Chung wrote:
>
> On 10/27/2014 9:38 PM, Ioi Lam wrote:
>>
>>> What I request to add is a test setting the system property 
>>> (-Dsun.cds.enableSharedLookupCache=true) and continue to load class 
>>> A and B.  Removing line 44-58 should do it and also no need to set 
>>> -Dfoo.foo.bar.
>>>
>> Do you mean change the test to call 
>> System.setProperty("sun.cds.enableSharedLookupCache", "true")?
>>
>> But we know that the property is checked only once, before any app 
>> classes are loaded. So calling System.setProperty in an application 
>> class won't test anything.
>
> No, set it in the command-line (i.e. @run) is fine.
>
> Removing line 44-58  should do it.
>
I will remove the check from line 44 - 48.

I want to keep the -Dfoo.foo.bar=xyz and the corresponding check to make 
sure that the JTREG framework is working as intended. Otherwise JTREG 
could have skipped the -Dsun.cds.enableSharedLookupCache=true and the 
test will still report "PASS" even though the intended action was not 
performed.

>>> It'd be good if you run this test and turn on the debug traces to 
>>> make sure that the application class loader and ext class loader 
>>> will start up with the lookup cache enabled and make up call to the 
>>> VM.  As it doesn't have the app cds archive, it will invalidate the 
>>> cache right away and continue the class lookup with null cache array.
>> In the latest code, if CDS is not available, lookupCacheEnabled will 
>> be set to false inside the static initializer of URLClassPath:
>>
>>     private static volatile boolean lookupCacheEnabled
>>         = 
>> "true".equals(VM.getSavedProperty("sun.cds.enableSharedLookupCache"));
>>
>> later, when the boot/ext/app loaders call into here:
>>
>>     synchronized void initLookupCache(ClassLoader loader) {
>>         if ((lookupCacheURLs = getLookupCacheURLs(loader)) != null) {
>>             lookupCacheLoader = loader;
>>         } else {
>>             // This JVM instance does not support lookup cache.
>>             disableAllLookupCaches();
>>         }
>>     }
>>
>> their lookupCacheURLs[] fields will all be set to null. As a result, 
>> getLookupCacheForClassLoader and knownToNotExist0 will never be called.
>>
>
> It will call getLookupCacheURLs.  It's just a sanity test and it's 
> fine to call one but not all three.
>
>> I can add a DEBUG_LOOKUP_CACHE trace inside disableAllLookupCaches to 
>> print "lookup cache disabled", and check for that in the test. Is 
>> this OK?
>
> As long as A.test and B.test are invoked and finishes, it should be 
> adequate.
>
> Mandy



More information about the hotspot-runtime-dev mailing list