On Fri, 25 Oct 2024 18:14:38 GMT, Ashutosh Mehra <asme...@openjdk.org> wrote:

>> src/hotspot/share/classfile/systemDictionaryShared.cpp line 685:
>> 
>>> 683:     InstanceKlass* ik = InstanceKlass::cast(k);
>>> 684: 
>>> 685:     if (SafepointSynchronize::is_at_safepoint()) {
>> 
>> Why is this piece of block required?
>> It calls `is_excluded_class` which reads `DumpTimeClassInfo::_excluded` 
>> without checking for `has_checked_exclusion`. That means it can return false 
>> (the default value) even for classes that may later be marked for exclusion 
>> by `check_for_exclusion(ik, p)`.
>> <del>On the same note, I think we should add an assert in 
>> `DumpTimeClassInfo::is_excluded` that `has_checked_exclusion()` is true.<del>
>
> Does the check `SafepointSynchronize::is_at_safepoint` imply that exclusion 
> checks for all classes have already been done?

I renamed the public function to `should_be_excluded(InstanceKlass*)` to avoid 
confusion with the private function `check_for_exclusion(InstanceKlass*, 
DumpTimeClassInfo*)`. I also added code to make sure that exclusion has been 
checked for the class, even when in safepoint.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/21642#discussion_r1823688154

Reply via email to