RFR: 8335662: [AArch64] C1: guarantee(val < (1ULL << nbits)) failed: Field too big for insn [v2]

Tobias Hartmann thartmann at openjdk.org
Wed Oct 16 12:12:12 UTC 2024


On Tue, 15 Oct 2024 18:53:45 GMT, Chad Rakoczy <duke at openjdk.org> wrote:

>> [JDK-8335662](https://bugs.openjdk.org/browse/JDK-8335662)
>> 
>> Crash occurs in C1 during OSR when copying locks from interpreter frame to compiled frame. All loads used immediate offset regardless of offset size causing crash when it is over the max size for the instruction (32760). Fix is to check the size before preforming the load and storing the offset in a register if needed.
>> 
>> I believe the risk is low because there will be no change to the instruction if the immediate offset fits in the load instruction. The instruction is only updated when the `offset_ok_for_immed` check fails which would cause the crash anyways
>> 
>> Confirmed that added test fails before patch and passes after
>
> Chad Rakoczy has updated the pull request incrementally with two additional commits since the last revision:
> 
>  - Add blank line at end of test
>  - Add jasm and update test description

test/hotspot/jtreg/compiler/c1/ComplexLockingAndMultiThreading.jasm line 13:

> 11:          return;
> 12:   }
> 13:   public static Method main:"([Ljava/lang/String;)V"

There's no need to have the main method in jasm, right? I think it's only `synchronizedMethod` which triggers the issue. So ideally, the jasm file is as compact as possible to ease future maintenance of the test.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/21473#discussion_r1802980004


More information about the hotspot-compiler-dev mailing list