RFR: 8278325: excluded class should not be checked again for exclusion

Ioi Lam iklam at openjdk.java.net
Thu Jan 27 01:40:35 UTC 2022


On Wed, 26 Jan 2022 03:52:18 GMT, Yumin Qi <minqi at openjdk.org> wrote:

> Hi, Please review
> 
>   When LambdaFormInvoker regenerate lambda form holder class, the old class with the same name already loaded and is marked for excluded for dump. This class should not be checked against exclusion, or it will output unexpected warning like:
> [0.394s][warning][cds] Skipping java/lang/invoke/BoundMethodHandle$Species_J: Unsupported location
> [0.394s][warning][cds] Skipping java/lang/invoke/BoundMethodHandle$Species_JL: Unsupported location
> [0.394s][warning][cds] Skipping java/lang/invoke/BoundMethodHandle$Species_FL: Unsupported location
> [0.394s][warning][cds] Skipping java/lang/invoke/BoundMethodHandle$Species_F: Unsupported location
>   The fix changed the order for checking exclusion of a class --- only check for those that have not been set for exclusion. Original function DumpTimeClassInfo::is_excluded in fact is checking three conditions in logical OR, it does not tell which reason for exclusion. In this fix, we need check the exact reason which is set for _excluded. Original is_excluded is renamed to should_be_excluded.
> 
> Tests: tier1,tier4 (in testing)
> 
> Thanks
> Yumin

Hi Yumin, due to the history of the bug report (I thought the bug was in a separate place but there was a problem in my test case), it's very difficult to understand what the actual bug is.

Could you close JDK-8278325 as "Not an issue", and file a new bug for the problem that you're trying to fix (preferably with a simple test case that demonstrates the problem)?

Thanks

src/hotspot/share/classfile/systemDictionaryShared.cpp line 1235:

> 1233:     // happens before the classes are copied.
> 1234:     //
> 1235:     // if (SystemDictionaryShared::should_be_excluded_class(info._proxy_klasses->at(0))) {

The change seems unrelated to the PR. We don't have a function named `SystemDictionaryShared::should_be_excluded_class`

test/hotspot/jtreg/runtime/cds/appcds/TestDumpClassListSource.java line 122:

> 120: 
> 121:         output.shouldHaveExitValue(0)
> 122:               .shouldContain(warningMessage);

Why would the above process generate the "Skipping java/lang/invoke/BoundMethodHandle$Species_" message?

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

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


More information about the hotspot-runtime-dev mailing list