On Wed, 16 Oct 2024 23:16:00 GMT, Ashutosh Mehra <asme...@openjdk.org> wrote:
>> Ioi Lam has updated the pull request incrementally with one additional >> commit since the last revision: >> >> Fixed typo in last commit; fixed header inclusion order > > src/hotspot/share/cds/dumpTimeClassInfo.hpp line 45: > >> 43: bool _is_early_klass; >> 44: bool _has_checked_exclusion; >> 45: bool _is_required; > > Is this flag only used for hidden classes? I changed it to `_is_required_hidden_class`. > src/hotspot/share/cds/heapShared.cpp line 717: > >> 715: }; >> 716: >> 717: void HeapShared::find_archivable_hidden_classes_in_object(oop root) { > > If this function find archivable hidden classes, shouldn't there be a check > for`is_hidden()` on the InstanceKlass being marked as `required`. Am I > missing something? I added the `ik->is_hidden()` check as you suggested. I also renamed the `find_archivable_hidden_classes_xxx` functions to `find_required_hidden_classes_xxx()`. This is to avoid confusion with `HeapShared::is_archivable_hidden_klass()`, which means "it is possible to archive X", but not "it is necessary to archive X". > src/hotspot/share/cds/heapShared.cpp line 790: > >> 788: >> 789: init_seen_objects_table(); >> 790: { > > Why was this scope introduced? To indicate that these calls must be made while the "see objects" table is available. > src/hotspot/share/classfile/systemDictionaryShared.cpp line 675: > >> 673: >> 674: // Returns true if the class should be excluded. This can be called >> before >> 675: // SystemDictionaryShared::check_excluded_classes(). > > There are a couple of references to check_excluded_classes() in the comments > but this function no longer exists. Can you please update the comment > accordingly. I replaced with the new name of the function `find_all_archivable_classes()`. > src/hotspot/share/classfile/systemDictionaryShared.cpp line 759: > >> 757: if (k->is_hidden() && should_hidden_class_be_archived(k)) { >> 758: SystemDictionaryShared::check_for_exclusion(k, &info); >> 759: if (info.is_excluded()) { > > Is it possible that a hidden class for which > `should_hidden_class_be_archived()` returns true is marked for exclusion by > `SDS::check_for exclusion`? I guess only possibility is if for some reason > its super or interface is excluded. Is that possible? We filter out hidden classes that cannot be supported (e.g., when a Lambda uses an interface using "old" bytecodes). See https://github.com/openjdk/jdk/pull/21143/files#diff-fc60af483d061250f01054372fd56eba517a6b8dd37a742a66dfb0e15cb68e40R366-R372 https://github.com/openjdk/jdk/pull/21143/files#diff-2520dedd703ec600cd3037ec0008e9d7f45c6a41acaefac019339641bc749163R149-R152 ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/21143#discussion_r1809709541 PR Review Comment: https://git.openjdk.org/jdk/pull/21143#discussion_r1809709627 PR Review Comment: https://git.openjdk.org/jdk/pull/21143#discussion_r1809709670 PR Review Comment: https://git.openjdk.org/jdk/pull/21143#discussion_r1809709979 PR Review Comment: https://git.openjdk.org/jdk/pull/21143#discussion_r1809710069