RFR: 8280872: Reorder code cache segments to improve code density [v8]

Boris Ulasevich bulasevich at openjdk.java.net
Thu Mar 24 13:36:27 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 with a new target base due to a merge or a rebase. The pull request now contains eight commits:

 - Merge branch 'openjdk:master' into codecache_segments_order
 - review findings: use instruction_size istead of raw constant, strengthen the assert, check alignment, move comments, segments order: profiled - non_method - non_profiled
 - rename, adding test
 - moving nops out of far_jump
 - minor renaming
 - review comments. remove far_call limit. undo trampoline-to-farcall. add trampoline_needs_far_jump func
 - fix name: is_non_nmethod, adding target_needs_far_branch func
 - change codecache segments order: nonprofiled-nonmethod-profiled
   increase far jump threshold: sideof(codecache)=128M -> sizeof(nonprofiled+nonmethod)=128M

-------------

Changes: https://git.openjdk.java.net/jdk/pull/7517/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=7517&range=07
  Stats: 203 lines in 7 files changed: 185 ins; 1 del; 17 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