Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-2177341 | 7 | Erik Trimble | P3 | Closed | Fixed | b40 |
JDK-2172819 | 6u14 | Abhijit Saha | P3 | Resolved | Fixed | b01 |
The server compiler currently computes block frequencies based on branch estimates and probabilities collected from profiling data.
The frequency data can be leveraged create a block layout that:
- reduces the number of branches emitted
- improves icache locality
- rotates loops to end with a conditional branch
- naturally moves uncommon code sequences out of line without using an arbitrary frequency cutoff
While only modest improvement in performance should be expected, a reduction in the methods for which "spaghetti code" is emitted, should make assembly code more readable.
The frequency data can be leveraged create a block layout that:
- reduces the number of branches emitted
- improves icache locality
- rotates loops to end with a conditional branch
- naturally moves uncommon code sequences out of line without using an arbitrary frequency cutoff
While only modest improvement in performance should be expected, a reduction in the methods for which "spaghetti code" is emitted, should make assembly code more readable.
- backported by
-
JDK-2172819 frequency based block layout
- Resolved
-
JDK-2177341 frequency based block layout
- Closed
- relates to
-
JDK-6763452 Loop induction variable incremented on back edge
- Open
-
JDK-6810845 Performance regression in mpegaudio on x64
- Resolved
-
JDK-6765180 Block::is_uncommon() gives wrong answer sometimes
- Closed