RFR: 8280872: Reorder code cache segments to improve code density [v4]
Boris Ulasevich
bulasevich at openjdk.java.net
Wed Mar 9 14:13:38 UTC 2022
> Currently the codecache segment order is [non-nmethod, non-profiled, profiled]. With this change we move the non-nmethod segment between two code segments. It changes nothing for any platform besides AARCH.
>
> In AARCH the offset limit for a branch instruction is 128MB. The bigger jumps are encoded with three instructions. Most of far branches are jumps into the non-nmethod blobs. With the non-nmethod segment in between code segments the jump distance from method to the stub becomes shorter. The result is a 4% reduction in generated code size for the CodeCache range from 128MB to 240MB.
>
> As a side effect, the performance of some tests is slightly improved:
> ``ArraysFill.testCharFill 10 thrpt 15 170235.720 -> 178477.212 ops/ms``
>
> Testing: jdk/hotspot jtreg and microbenchmarks on AMD and AARCH
Boris Ulasevich has updated the pull request incrementally with two additional commits since the last revision:
- moving nops out of far_jump
- minor renaming
-------------
Changes:
- all: https://git.openjdk.java.net/jdk/pull/7517/files
- new: https://git.openjdk.java.net/jdk/pull/7517/files/5f0fe37c..91e62888
Webrevs:
- full: https://webrevs.openjdk.java.net/?repo=jdk&pr=7517&range=03
- incr: https://webrevs.openjdk.java.net/?repo=jdk&pr=7517&range=02-03
Stats: 20 lines in 6 files changed: 6 ins; 5 del; 9 mod
Patch: https://git.openjdk.java.net/jdk/pull/7517.diff
Fetch: git fetch https://git.openjdk.java.net/jdk pull/7517/head:pull/7517
PR: https://git.openjdk.java.net/jdk/pull/7517
More information about the hotspot-dev
mailing list