[pr/110] RFR: 8317812: [Lilliput] Make C2 LoadNKlassCompactHeader more robust
Roman Kennke
rkennke at openjdk.org
Tue Oct 10 20:31:55 UTC 2023
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
-------------
Depends on: https://git.openjdk.org/lilliput/pull/110
Commit messages:
- x86 parts
- Fix offset
- 8317812: [Lilliput] Make C2 LoadNKlassCompactHeader more robust
Changes: https://git.openjdk.org/lilliput/pull/111/files
Webrev: https://webrevs.openjdk.org/?repo=lilliput&pr=111&range=00
Issue: https://bugs.openjdk.org/browse/JDK-8317812
Stats: 37 lines in 6 files changed: 25 ins; 2 del; 10 mod
Patch: https://git.openjdk.org/lilliput/pull/111.diff
Fetch: git fetch https://git.openjdk.org/lilliput.git pull/111/head:pull/111
PR: https://git.openjdk.org/lilliput/pull/111
More information about the lilliput-dev
mailing list