[lilliput-jdk17u:lilliput] RFR: 8317957: [Lilliput/JDK17] Make C2 LoadNKlassCompactHeader more robust

Roman Kennke rkennke at openjdk.org
Wed Oct 11 13:36:36 UTC 2023


Backport of https://github.com/openjdk/lilliput/pull/111. I needed to extract the body into helper methods in order to match mainline version. Other than that, the changes are identical.

Lilliput's C2 code for generating LoadNKlass currently assumes that the disp of the incoming address is klass_offset_in_bytes. It then extracts the base register and loads from the mark_offset_in_bytes instead.
Sometimes (apparently very rarely) it happens that C2 emits code that pre-adds obj+klass_offset into a register, and uses that as base, but with offset 0. In this case we would trip the assert or crash in release builds.

- [x] specjvm derby (which triggered the bug)
- [x] tier1 x86_64 +UCOH
- [x] tier1 aarch64 +UCOH

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

Commit messages:
 - 8317957: [Lilliput/JDK17] Make C2 LoadNKlassCompactHeader more robust

Changes: https://git.openjdk.org/lilliput-jdk17u/pull/57/files
 Webrev: https://webrevs.openjdk.org/?repo=lilliput-jdk17u&pr=57&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8317957
  Stats: 79 lines in 6 files changed: 53 ins; 20 del; 6 mod
  Patch: https://git.openjdk.org/lilliput-jdk17u/pull/57.diff
  Fetch: git fetch https://git.openjdk.org/lilliput-jdk17u.git pull/57/head:pull/57

PR: https://git.openjdk.org/lilliput-jdk17u/pull/57


More information about the lilliput-dev mailing list