Integrated: 8271461: CompileCommand support for hidden class methods
Jie Fu
jiefu at openjdk.java.net
Fri Aug 6 23:39:34 UTC 2021
On Thu, 29 Jul 2021 07:50:59 GMT, Jie Fu <jiefu at openjdk.org> wrote:
> Hi all,
>
> We'd like to improve the CompileCommand to support hidden class methods, which is helpful for debugging and perfmance analysis.
>
> Current implementation of CompileCommand doesn't work for hidden class methods.
> For example, if you run with `java -Xcomp -Xbatch -XX:+PrintCompilation`
> The following hidden class methods were compiled:
>
> 5317 1573 b 3 java.util.ResourceBundle$$Lambda$1/0x00000008010413c8::run (8 bytes)
> 5318 1574 b 4 java.util.ResourceBundle$$Lambda$1/0x00000008010413c8::run (8 bytes)
> 6735 1938 b 3 java.util.ResourceBundle$ResourceBundleProviderHelper$$Lambda$2/0x0000000801041e80::run (12 bytes)
> 6736 1939 b 4 java.util.ResourceBundle$ResourceBundleProviderHelper$$Lambda$2/0x0000000801041e80::run (12 bytes)
> 7060 2029 b 3 java.util.ResourceBundle$ResourceBundleProviderHelper$$Lambda$58/0x800000060::run (8 bytes)
> 7061 2030 b 4 java.util.ResourceBundle$ResourceBundleProviderHelper$$Lambda$58/0x800000060::run (8 bytes)
> 7688 2153 b 3 java.util.ResourceBundle$ResourceBundleProviderHelper$$Lambda$4/0x0000000801043218::run (16 bytes)
> 7688 2154 b 4 java.util.ResourceBundle$ResourceBundleProviderHelper$$Lambda$4/0x0000000801043218::run (16 bytes)
>
>
> Then people may want to exclude the compilation of `java.util.ResourceBundle$$Lambda$1/0x00000008010413c8::run` like this
>
> -XX:CompileCommand=exclude,'java.util.ResourceBundle$$Lambda$1/0x00000008010413c8::run'
>
>
> But unfortunately, it doesn't work.
>
> CompileCommand: An error occurred during parsing
> Error: Method pattern uses '/' together with '::'
> Line: 'exclude,java.util.ResourceBundle$$Lambda$1/0x00000008010413c8::run'
>
> Usage: '-XX:CompileCommand=<option>,<method pattern>' - to set boolean option to true
> Usage: '-XX:CompileCommand=<option>,<method pattern>,<value>'
> Use: '-XX:CompileCommand=help' for more information and to list all option.
>
>
> The failing reason is that the name of `java.util.ResourceBundle$$Lambda$1/0x00000008010413c8::run` is actually `java.util.ResourceBundle$$Lambda$1+0x00000008010413c8::run` in the VM.
> But "+" had been replaced with "/" when it was printed by PrintCompilation [1].
>
> So for a hidden class method, "/" should be replaced with "+" to make CompileCommand work.
>
> Thanks.
> Best regards,
> Jie
>
>
> [1] https://github.com/openjdk/jdk/blob/master/src/hotspot/share/oops/klass.cpp#L685
This pull request has now been integrated.
Changeset: 38ff85c8
Author: Jie Fu <jiefu at openjdk.org>
URL: https://git.openjdk.java.net/jdk/commit/38ff85c824750e7da66fd86f5bde1c4587e529c4
Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod
8271461: CompileCommand support for hidden class methods
Co-authored-by: Tianyelan <vhinf2047 at gmail.com>
Reviewed-by: yyang, xliu, iklam
-------------
PR: https://git.openjdk.java.net/jdk/pull/4926
More information about the hotspot-compiler-dev
mailing list