[master] RFR: Eliminate Klass* word
Roman Kennke
rkennke at openjdk.java.net
Mon Feb 21 15:15:24 UTC 2022
This change removes the dedicated Klass* word in the oop structure, at least in 64 bit builds. It has been usused, except for verification, since integration of #29.
The change makes regular objects smaller, the field layouter can now use the extra space and start laying out fields at offset 8 (instead of 12 or 16, depending on class-compression). However, arrays remain unchanged because they still store the array length in offset 8, and current array code expects the array elements to start at 64bit aligned address, even for smaller data types. I will address this in a subsequent change.
Much of the change is reverting the klass_offset -> nklass_offset change by #29, as promised. I also disabled s390x and ppc64le GHA builds, because they are broken by this change.
I problem-listed a number of SA tests. The SA is broken by this change because it needs to load the Klass* from a regular field. I tried to change it, but it looks very difficult: it doesn't have a way to safely access the object mark word in the face of concurrent activity by the locking subsystem. Fixing the SA is not very high priority at this point, it may ultimately not even be necessary when/if the locking subsystem doesn't use the mark word anymore (or at least, does no longer displace the header).
Testing:
- [x] tier1 (x86_64, x86_32, aarch64)
- [x] tier2 (x86_64, x86_32, aarch64)
- [ ] tier3 (x86_64, x86_32, aarch64)
-------------
Commit messages:
- Remove remainder of s390x and ppc64le build defs
- Merge remote-tracking branch 'origin/no-init-klass-word2' into no-init-klass-word2
- Aarch64 support
- Problem-list spuriously failing ToolTabSnippetTest.java
- Remove broken s390x and ppc64le builds from GHA
- Eliminate Klass* word
Changes: https://git.openjdk.java.net/lilliput/pull/40/files
Webrev: https://webrevs.openjdk.java.net/?repo=lilliput&pr=40&range=00
Stats: 255 lines in 43 files changed: 62 ins; 129 del; 64 mod
Patch: https://git.openjdk.java.net/lilliput/pull/40.diff
Fetch: git fetch https://git.openjdk.java.net/lilliput pull/40/head:pull/40
PR: https://git.openjdk.java.net/lilliput/pull/40
More information about the lilliput-dev
mailing list