RFR: 8320682: [AArch64] C1 compilation fails with "Field too big for insn"

Daniel Lundén duke at openjdk.org
Wed Dec 6 10:59:39 UTC 2023


On Mon, 4 Dec 2023 14:19:10 GMT, Daniel Lundén <duke at openjdk.org> wrote:

> This changeset fixes an issue on aarch64 where addresses for float and double constants were sometimes out of range for PC-relative offsets using `adr`.
> 
> Changes:
> - Fix the issue by replacing `adr` with `lea`.
> - Add a regression test.
> 
> Thanks to @fisk  and @xmas92 for the assistance.
> 
> ### Testing
> Tests: tier1, tier2, tier3, tier4, tier5
> Platforms: windows-x64, linux-x64, linux-aarch64, macosx-x64, macosx-aarch64

Thanks Andrew. The trigger for this issue was a test case that I added as part of [JDK-8318817](https://bugs.openjdk.org/browse/JDK-8318817) (in `TestC1Globals.java`). Specifically, the test uses a very large value for `-XX:NMethodSizeLimit`, which causes the non-nmethod code heap to take up most of the code cache (leaving the profiled and non-profiled code heaps at minimum size, usually 4KB).

If there is an implicit assumption regarding the cache size in more places, we should perhaps not integrate this fix and instead ensure the cache size is always properly sized. We are, for example, considering setting some more reasonable upper bound for `-XX:NMethodSizeLimit`. What do you think Andrew?

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

PR Comment: https://git.openjdk.org/jdk/pull/16951#issuecomment-1842641915


More information about the hotspot-compiler-dev mailing list