-
Bug
-
Resolution: Duplicate
-
P2
-
24
-
aarch64
The current behaviour is to only add implicit null checks when the offset is within a page size (16K). This means that 32 and 64bit loads/stores are addressable. However, using 8 or 16bit loads/stores (and I assume unaligned accesses as well where the offset is 8 or 16 bit scale) will cause problems as they are expected to be implicitly null check by C2, but are not addressable resulting in unexpected extra code emission.
I will attach a reproducer which is a modified version of `test/hotspot/jtreg/compiler/codegen/TestConvertImplicitNullCheck.java` where a large amount of `char` fields are added and a field with a non addressable offset is used.
This tests crashes with mainline (head: 63e611cd5d7eb4fc6ea6633ff9123e4bee5f5993) and passes with `-XX:-ImplicitNullChecks`
After reverting
- duplicates
-
JDK-8341612 [BACKOUT] 8338442: AArch64: Clean up IndOffXX type and let legitimize_address() fix out-of-range operands
- Resolved
- relates to
-
JDK-8336245 AArch64: remove extra register copy when converting from long to pointer
- Resolved
-
JDK-8338442 AArch64: Clean up IndOffXX type and let legitimize_address() fix out-of-range operands
- Resolved