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 core-libs-dev
mailing list