RFR: 8294972: Convert jdk.jlink internal plugins to use the Classfile API [v8]
Mandy Chung
mchung at openjdk.org
Thu Mar 16 18:43:34 UTC 2023
On Thu, 16 Mar 2023 17:00:59 GMT, Naoto Sato <naoto at openjdk.org> wrote:
>> @naotoj as these localedata resource files are not `.class`, the plugin should not use ASM (or Classfile API) to parse it but ASM ClassReader just happens to work. Is the format documented anywhere?
>>
>> @asotona I agree that this ASM dependency should be replaced with a simple class to parse the localedata resources. We can create a follow-up issue to document or validate the file format if appropriate.
>
> There is no common binary format for "localedata", the file in question is the custom format specific for `BreakIterator`, ancient code from Taligent. IIUC, only description of the format is in the source: https://github.com/openjdk/jdk/blob/2f23c80e0de44815d26a7d541701e16c9c1d32bc/src/java.base/share/classes/sun/text/RuleBasedBreakIterator.java#L325
I further clarified with Naoto and I now understand the problem. The plugin intends to transform `.class` that implements `LocaleDataMetaInfo` in `jdk.localedata` module. It's a bug in the plugin `--include-locales=*` which will read all resources from `jdk.localedata` with ASM ClassReader and the plugin just happens to work. The plugin should only read `.class` entries or specific `LocaleDataMetaInfo` implementation classes. I created https://bugs.openjdk.org/browse/JDK-8304367 that Naoto will help fixing.
@asotona your previous version converting it to ClassFile API should work after JDK-8304367.
-------------
PR: https://git.openjdk.org/jdk/pull/12944
More information about the core-libs-dev
mailing list