(RFR) 8240245: Avoid calling is_shared_class_visible() in SystemDictionary::load_shared_class()

Yumin Qi yumin.qi at oracle.com
Mon Jun 1 23:23:26 UTC 2020


HI, Ioi

Please check the updated webrev: 
http://cr.openjdk.java.net/~minqi/2020/8240245/webrev-02/
I changed the test case to use  OutputAnalyzer to check test result. 
Using CDSUtil.Result will check "sharing" first, in the last test, CDS 
is turned off so it will cause checking "sharing" failed.

Resubmitted mach5 test.

Thanks
Yumin

On 6/1/20 10:37 AM, Ioi Lam wrote:
> Hi Yumin,
>
> I think this check in the old code will be unintentionally skipped by 
> your change:
>
>   int path_index = ik->shared_classpath_index();
>   ClassLoaderData* loader_data = class_loader_data(class_loader);
>   if (path_index < 0) {
>     // path_index < 0 indicates that the class is intended for a 
> custom loader
>     // and should not be loaded by boot/platform/app loaders
>     if (loader_data->is_builtin_class_loader_data()) {
>       return false;
>     } else {
>       return true;
>     }
>   }
>
> I think your optimization should be done after this check.
>
OK, moved the check after this.
> ------------------
>
> 1239 // Check if
> 1240 //   1) -Xbootclasspath/a: specified or
> 1241 //   2) --module-path at runtime
> 1242 // so avoid checking class visibility for builtin loaders.
> 1243 bool continue_check_shared_class_visibility() {
>
> How about changing the function names and comments to:
>
> 1239 // Need to do the expensive visibility check for builtin loader 
> only if
> 1240 //   1) -Xbootclasspath/a: specified or
> 1241 //   2) --module-path at runtime
> 1243 bool need_to_check_builtin_shared_class_visibility() {
>        ....
>      }
>
Done.
> bool SystemDictionary::check_builtin_shared_class_visibility(...) {
>        assert(ik->shared_classpath_index() >= 0, "must be built-in 
> class");
>        assert(loader_data->is_builtin_class_loader_data(), "must be 
> built-in loader");
>        ...
> ------------------
>
> Also, the "ResourceMark rm(THREAD);" can be moved to 
> check_builtin_shared_class_visibility.
>
The ResourceMark has no real usage here, removed.

Thanks
Yumin
> Thanks
> - Ioi
>
>
>
> On 5/29/20 9:50 PM, Yumin Qi wrote:
>> Hi,
>>
>>   Please check the updated webrev at: 
>> http://cr.openjdk.java.net/~minqi/2020/8240245/webrev-01/
>>   In this version, test case 
>> test/hotspot/jtreg/runtime/cds/appcds/jigsaw/modulepath/ModulePathAndCP.java
>>   modfied/added cases to reflect --module-path used at runtime.
>>
>>   Thanks
>>   Yumin*
>> *
>> On 5/22/20 8:45 AM, Yumin Qi wrote:
>>> Hi, Please review
>>>
>>>   bug: 8240245: https://bugs.openjdk.java.net/browse/JDK-8240245
>>>   Webrev: http://cr.openjdk.java.net/~minqi/2020/8240245/webrev-00/
>>>
>>> Summary: When -Xbootclasspath/a: and --module-path are not 
>>> specified, for bultin loaders, is_shared_class_visible will always 
>>> return true so we can skip such check. Another optimization is 
>>> guarding the call to load_shared_class with UseSharedSpaces, save 
>>> unnecessary calls for non-shared run.
>>>
>>> For java -version, the performance data:
>>>
>>> Results of " perf stat -r 40 bin/java -Xshare:on 
>>> -XX:SharedArchiveFile=jdk2.jsa -Xint -version "
>>>    1:     59008853    59008564 (  -289)                41.100 40.342 
>>> ( -0.758)      --
>>>    2:     58983285    59026645 ( 43360)  ++++          39.841 40.708 
>>> (  0.867)    ++
>>>    3:     59008801    59005425 ( -3376)                39.903 40.881 
>>> (  0.978)   +++
>>>    4:     59032045    58990500 (-41545)      ----      39.809 40.443 
>>> (  0.634)    ++
>>>    5:     59029813    58976124 (-53689)      -----     40.121 39.238 
>>> ( -0.883)      --
>>>    6:     59036617    58998279 (-38338)      ----      40.644 39.875 
>>> ( -0.769)      --
>>>    7:     59003768    59005109 (  1341)                39.416 38.991 
>>> ( -0.425)      -
>>>    8:     58972545    58985824 ( 13279)     +          40.811 40.001 
>>> ( -0.810)      --
>>>    9:     59007110    58981883 (-25227)      --        40.969 39.090 
>>> ( -1.879)      -----
>>>   10:     58992934    58987333 ( -5601)      -         40.521 40.371 
>>> ( -0.150)
>>> ============================================================
>>>           59007573    58996566 (-11006)      -         40.310 39.989 
>>> ( -0.321)      -
>>> instr delta =       -11006    -0.0187%
>>> time  delta =       -0.321 ms -0.7966%
>>>
>>> Tests:  tier1,tier2
>>>
>>> Thanks
>>> Yumin
>>
>



More information about the hotspot-runtime-dev mailing list