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