RFR: 8270459: Conflict inlining decisions by C1/C2 with the same CompileCommand
Jie Fu
jiefu at openjdk.java.net
Wed Jul 14 13:07:28 UTC 2021
Hi all,
Conflict inlining decisions can be observed by C1/C2 with the same CompileCommand.
And I came across this situation while I was analyzing a performance issue using the jmh, which made me quite confused.
For the example in the JBS.
28 1 % 3 TestInline::main @ 11 (43 bytes)
@ 23 TestInline::caller (4 bytes) disallowed by CompileCommand
29 2 3 TestInline::main (43 bytes)
@ 23 TestInline::caller (4 bytes) disallowed by CompileCommand
31 3 % 4 TestInline::main @ 11 (43 bytes)
33 1 % 3 TestInline::main @ 11 (43 bytes) made not entrant
@ 23 TestInline::caller (4 bytes) force inline by CompileCommand
This can be easily reproduced by specifying both the `inline` and `dontinline` compile commands for a method.
-XX:CompileCommand=inline,TestInline::caller \
-XX:CompileCommand=dontinline,TestInline::caller \
The fix will ignore the inline/not-inline directives if both the `inline` and `dontinline` compile commands are specified for a method.
Effect of the patch:
27 1 % 3 TestInline::main @ 11 (43 bytes)
@ 23 TestInline::caller (4 bytes) inline
28 2 3 TestInline::main (43 bytes)
@ 23 TestInline::caller (4 bytes) inline
28 3 % 4 TestInline::main @ 11 (43 bytes)
30 1 % 3 TestInline::main @ 11 (43 bytes) made not entrant
@ 23 TestInline::caller (4 bytes) inline (hot)
31 3 % 4 TestInline::main @ 11 (43 bytes) made not entrant
Testing:
- tier 1~3 on Linux/x64, no regression
Thanks.
Best regards,
Jie
-------------
Commit messages:
- 8270459: Conflict inlining decisions by C1/C2 with the same CompileCommand
Changes: https://git.openjdk.java.net/jdk/pull/4780/files
Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=4780&range=00
Issue: https://bugs.openjdk.java.net/browse/JDK-8270459
Stats: 75 lines in 2 files changed: 73 ins; 0 del; 2 mod
Patch: https://git.openjdk.java.net/jdk/pull/4780.diff
Fetch: git fetch https://git.openjdk.java.net/jdk pull/4780/head:pull/4780
PR: https://git.openjdk.java.net/jdk/pull/4780
More information about the hotspot-compiler-dev
mailing list