Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8311724 | 17.0.9 | Fei Yang | P4 | Resolved | Fixed | b01 |
Shortly, the current RVC implementation in the RISC-V backend is a "whitelist mode", merely compressing instructions marked by "CompressibleRegion" that covers just part of C2 matching rules and stub code (only ~5% compression rate). Due to the originally existing large backend code base and to spread the coverage to nearly all instructions generated by the backend, we cannot modify them little by little, but should implement a "blacklist mode" (a compression rate to ~20% if complete), to exclude compressions from:
1. relocations
2. patchable instructions
3. fixed length code slices whose code size is calculated
Please check the discussions in the riscv-port mailing list[1] to go in for more details.
This patch contains the first half of implementations which does not change the program behavior, that just introduces an "IncompressibleRegion" to indicate a piece of code "not compressible", marking out the patchable instructions and fixed-length code slices that are not able to compress by RVC.
Besides, this patch also temporarily removes some automatic compression logic of branch instructions like "jal"s and "beq"s, for MachBranchNodes' fake labels could hamper the automatic compression as well and for making code clean. Please also check the discussions in the thread[1].
Please check the unsquashed commits to have a better review of the patch.
Testing a hotspot tier1 and tier2 with the option UseRVC turning on.
[1] https://mail.openjdk.org/pipermail/riscv-port-dev/2022-September/000615.html
1. relocations
2. patchable instructions
3. fixed length code slices whose code size is calculated
Please check the discussions in the riscv-port mailing list[1] to go in for more details.
This patch contains the first half of implementations which does not change the program behavior, that just introduces an "IncompressibleRegion" to indicate a piece of code "not compressible", marking out the patchable instructions and fixed-length code slices that are not able to compress by RVC.
Besides, this patch also temporarily removes some automatic compression logic of branch instructions like "jal"s and "beq"s, for MachBranchNodes' fake labels could hamper the automatic compression as well and for making code clean. Please also check the discussions in the thread[1].
Please check the unsquashed commits to have a better review of the patch.
Testing a hotspot tier1 and tier2 with the option UseRVC turning on.
[1] https://mail.openjdk.org/pipermail/riscv-port-dev/2022-September/000615.html
- backported by
-
JDK-8311724 RISC-V: Partially mark out incompressible regions
- Resolved
- relates to
-
JDK-8305112 RISC-V: Typo fix for RVC description
- Resolved
- links to
-
Commit openjdk/jdk17u-dev/966fc82d
-
Commit openjdk/jdk/542cc602
-
Review openjdk/jdk17u-dev/1427
-
Review openjdk/jdk/10421
-
Review openjdk/riscv-port-jdk17u/28
(2 links to)