RFR: 8267954: Shared classes that failed to load should not be loaded again

Yumin Qi minqi at openjdk.java.net
Wed Jun 9 17:42:19 UTC 2021


On Wed, 9 Jun 2021 17:09:52 GMT, Ioi Lam <iklam at openjdk.org> wrote:

>> Hi, Please review
>>   Shared classes should not be loaded again at failed loading from CDS. In the failed case, restore_unshareable_info failed due to some reason (OOM), but the class already polluted and failed to be loaded again.
>>   Using the unused bit in _misc_flags indicates shared loading status to prevent it from being loaded again.
>> 
>> Tests: tier1,tier2,tier3,tier4,tier7
>> Local tests: jtreg/hotspot/runtime/cds
>> TestDynamicDumpAtOom.java (which failed in tier7) with variant allocation sizes (used to reproduce the failure) passed.
>> 
>> Thanks
>> Yumin
>
> src/hotspot/share/classfile/systemDictionary.hpp line 84:
> 
>> 82: class TableStatistics;
>> 83: 
>> 84: class SharedClassLoadingMark {
> 
> I think it's better to put this class into systemDictionaryShared.hpp

The move to systemDictionaryShared.hpp will cause zero build failed. We need a guard for CDS at:
1294     if (k != NULL) {
1295       SharedClassLoadingMark slm(THREAD, k);
1296       k = find_or_define_instance_class(class_name, class_loader, k, CHECK_NULL);
1297     }
That makes the code looks fragmented. Do you agree to keep it not moved?

-------------

PR: https://git.openjdk.java.net/jdk/pull/4434


More information about the hotspot-runtime-dev mailing list