- 
    Enhancement 
- 
    Resolution: Unresolved
- 
     P2 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:
- 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 -           
- Resolved
 
-         
- 
                    JDK-8325495 C2: implement optimization for series of Add of unique value -           
- Closed
 
-         
- 
                    JDK-8370610 Revisit Stadler's PEA C2 implementation -           
- Open
 
-