-
Enhancement
-
Resolution: Unresolved
-
P2
-
23
This is an umbrella to keep track of investigating and fixing C2 performance issues identified by the "JVM Performance Comparison for JDK 21":
https://ionutbalosin.com/2024/02/jvm-performance-comparison-for-jdk-21/
The goal is to list benchmarks that identify performance issues in C2, file corresponding RFEs and link them here:
- ArithmeticCanonicalizationBenchmark:JDK-8325495
- MethodArgsBusterBenchmark: JDK-8325467
- IfConditionalBranchBenchmark: JDK-8317424
- ScalarEvolutionAndLoopOptimizationBenchmark: JDK-8317424 (vectorization would do most of the trick, but maybe we want to do it with a special formula?)
- LockCoarseningBenchmark : JDK-8341404
Known issues:
- Escape Analysis:
-JDK-8276455, JDK-8287061, JDK-8289943, JDK-8155769
- Partial Escape Analysis in HotSpot C2: https://mail.openjdk.org/pipermail/hotspot-compiler-dev/2022-November/059990.html, https://mail.openjdk.org/pipermail/hotspot-compiler-dev/2023-March/063118.html, https://cr.openjdk.org/~cslucas/escape-analysis/EscapeAnalysis.html
- https://github.com/microsoft/openjdk-proposals/blob/main/stack_allocation/Stack_Allocation_JEP.md
- Inlining:
- Missing support for polymorphic guarded inlining in C2, see https://mail.openjdk.org/pipermail/hotspot-compiler-dev/2020-February/036901.html
- JDK-8280365
- Vectorization:
- see benchmark: IfConditionalBranchBenchmark, ScalarEvolutionAndLoopOptimizationBenchmark
- requires if-conversion and improved reduction heuristic
- see AutoVectorization umbrella JDK-8317424
- Loop Fission / Fusion
- benchmark: LoopFissionBenchmark, LoopFusionBenchmark
- generally difficult to get right, would need a good heuristic / cost model
- also tricky with safepoints: would have to remove all safepoints in the scope of the fused / fissioned loops.
https://ionutbalosin.com/2024/02/jvm-performance-comparison-for-jdk-21/
The goal is to list benchmarks that identify performance issues in C2, file corresponding RFEs and link them here:
- ArithmeticCanonicalizationBenchmark:
- MethodArgsBusterBenchmark: JDK-8325467
- IfConditionalBranchBenchmark: JDK-8317424
- ScalarEvolutionAndLoopOptimizationBenchmark: JDK-8317424 (vectorization would do most of the trick, but maybe we want to do it with a special formula?)
- LockCoarseningBenchmark : JDK-8341404
Known issues:
- Escape Analysis:
-
- Partial Escape Analysis in HotSpot C2: https://mail.openjdk.org/pipermail/hotspot-compiler-dev/2022-November/059990.html, https://mail.openjdk.org/pipermail/hotspot-compiler-dev/2023-March/063118.html, https://cr.openjdk.org/~cslucas/escape-analysis/EscapeAnalysis.html
- https://github.com/microsoft/openjdk-proposals/blob/main/stack_allocation/Stack_Allocation_JEP.md
- Inlining:
- Missing support for polymorphic guarded inlining in C2, see https://mail.openjdk.org/pipermail/hotspot-compiler-dev/2020-February/036901.html
- JDK-8280365
- Vectorization:
- see benchmark: IfConditionalBranchBenchmark, ScalarEvolutionAndLoopOptimizationBenchmark
- requires if-conversion and improved reduction heuristic
- see AutoVectorization umbrella JDK-8317424
- Loop Fission / Fusion
- benchmark: LoopFissionBenchmark, LoopFusionBenchmark
- generally difficult to get right, would need a good heuristic / cost model
- also tricky with safepoints: would have to remove all safepoints in the scope of the fused / fissioned loops.
- relates to
-
JDK-8317424 C2 SuperWord Umbrella: improvements
-
- Open
-
-
JDK-8341404 C2: investigate why synchronized method is made not compilable
-
- Open
-
-
JDK-8325467 Support methods with many arguments in C2
-
- In Progress
-
-
JDK-8325495 C2: implement optimization for series of Add of unique value
-
- Closed
-