Details
-
Enhancement
-
Resolution: Fixed
-
P3
-
11, 14, 15
-
b04
-
generic
-
generic
Description
C2 has a loop optimization phase called intrinsify_fill [1]. It recognizes the code pattern of Java array initialization in a loop and generates calls to some array fill stub routines for better performance and smaller code size. But in latest jdk master (14/15), the calls to array fill stubs are not generated. Generated code shows the array initialization loops are automatically unrolled and vectorized.
If this phase works, methods of java.util.Arrays.fill() should be optimized as well. We should check why this doen't work and try to fix it if this phase.
[1] http://hg.openjdk.java.net/jdk/jdk/file/f1f88e6fad02/src/hotspot/share/opto/loopTransform.cpp#l3421
If this phase works, methods of java.util.Arrays.fill() should be optimized as well. We should check why this doen't work and try to fix it if this phase.
[1] http://hg.openjdk.java.net/jdk/jdk/file/f1f88e6fad02/src/hotspot/share/opto/loopTransform.cpp#l3421
Attachments
Issue Links
- relates to
-
JDK-8299179 ArrayFill with store on backedge needs to reduce length by 1
- Resolved
-
JDK-8186027 C2: loop strip mining
- Resolved
-
JDK-8264063 Outer Safepoint poll load should not reference the head of inner strip mined loop.
- Resolved
-
JDK-8263352 assert(use == polladr) failed: the use should be a safepoint polling
- Resolved
-
JDK-8283408 Fix a C2 crash when filling arrays with unsafe
- Resolved
-
JDK-8275047 Optimize existing fill stubs for AVX-512 target
- Resolved
(1 relates to)