RFR: 8336831: Optimize StringConcatHelper.simpleConcat [v5]
Shaojin Wen
duke at openjdk.org
Sat Jul 20 06:30:32 UTC 2024
On Fri, 19 Jul 2024 21:42:09 GMT, Shaojin Wen <duke at openjdk.org> wrote:
>> Currently simpleConcat is implemented using mix and prepend, but in this simple scenario, it can be implemented in a simpler way and can improve performance.
>
> Shaojin Wen has updated the pull request incrementally with two additional commits since the last revision:
>
> - Update src/java.base/share/classes/java/lang/String.java
>
> Co-authored-by: Chen Liang <liach at openjdk.org>
> - add comments
Now StringCconcatFactory constructs MethodHandle through StringConcatHelper.lookupStatic, so it can access the private methods of StringConcatHelper.
If code is generated through ClassFile, how to access the private methods of classes such as String/StringConcatHelper?
I made a try and found it was wrong:
Exception in thread "main" java.lang.IllegalAccessError: failed to access class java.lang.StringConcatHelper from class jdk.tools.jlink.internal.Utils$$StringConcat/0x00000070000d2000 (java.lang.StringConcatHelper is in module java.base of loader 'bootstrap'; jdk.tools.jlink.internal.Utils$$StringConcat/0x00000070000d2000 is in module jdk.jlink of loader 'app')
at jdk.jlink/jdk.tools.jlink.internal.Utils.getPathMatcher(Utils.java:96)
at jdk.jlink/jdk.tools.jmod.JmodTask$PathMatcherConverter.convert(JmodTask.java:1256)
at jdk.jlink/jdk.tools.jmod.JmodTask$PathMatcherConverter.convert(JmodTask.java:1252)
at jdk.internal.opt/jdk.internal.joptsimple.internal.Reflection.convertWith(Reflection.java:154)
at jdk.internal.opt/jdk.internal.joptsimple.AbstractOptionSpec.convertWith(AbstractOptionSpec.java:120)
at jdk.internal.opt/jdk.internal.joptsimple.ArgumentAcceptingOptionSpec.convert(ArgumentAcceptingOptionSpec.java:308)
at jdk.internal.opt/jdk.internal.joptsimple.OptionSet.valuesOf(OptionSet.java:253)
at jdk.jlink/jdk.tools.jmod.JmodTask.handleOptions(JmodTask.java:1490)
at jdk.jlink/jdk.tools.jmod.JmodTask.run(JmodTask.java:181)
at jdk.jlink/jdk.tools.jmod.Main.main(Main.java:35)
-------------
PR Comment: https://git.openjdk.org/jdk/pull/20253#issuecomment-2240950163
More information about the core-libs-dev
mailing list