Integrated: 8280872: Reorder code cache segments to improve code density

Boris Ulasevich bulasevich at openjdk.java.net
Wed Apr 6 09:35:59 UTC 2022


On Thu, 17 Feb 2022 15:40:07 GMT, Boris Ulasevich <bulasevich at openjdk.org> wrote:

> Currently the codecache segment order is [non-nmethod, non-profiled, profiled]. With this change we move the non-nmethod segment between two code segments. Currently only the aarch64 backend is adapted to make use of these changes.
> 
> 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

This pull request has now been integrated.

Changeset: e524107a
Author:    Boris Ulasevich <bulasevich at openjdk.org>
URL:       https://git.openjdk.java.net/jdk/commit/e524107a74d149354c505372e7b4a8af87d6ad02
Stats:     203 lines in 7 files changed: 185 ins; 1 del; 17 mod

8280872: Reorder code cache segments to improve code density

Reviewed-by: simonis, kvn

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

PR: https://git.openjdk.java.net/jdk/pull/7517


More information about the hotspot-dev mailing list