[master] RFR: JVMTI: Don't use object header for marking
Roman Kennke
rkennke at openjdk.java.net
Thu Mar 24 19:18:52 UTC 2022
JVMTI marks objects in order to track whether or not it has already visited objects during heap walking. This uses the usual GC marking bits in the object header. However, this proves to be confusing and brittle because some GCs also uses those header bits for marking and/or indicating forwarded objects. In particular, it becomes unreliable for Shenandoah GC to distinguish JVMTI marked objects from forwarded objects.
JVMTI should have no business in marking objects in their header. This change proposes to let JVMTI use its own (temporary) marking bitmap instead. This decouples JVMTI better from GCs.
Testing:
- [x] tier1
- [x] tier2
- [ ] tier3
-------------
Commit messages:
- Revert leftover changes
- GC abstraction for ObjectMarker
- JVMTI: Don't use object header for marking
Changes: https://git.openjdk.java.net/lilliput/pull/45/files
Webrev: https://webrevs.openjdk.java.net/?repo=lilliput&pr=45&range=00
Stats: 414 lines in 6 files changed: 277 ins; 129 del; 8 mod
Patch: https://git.openjdk.java.net/lilliput/pull/45.diff
Fetch: git fetch https://git.openjdk.java.net/lilliput pull/45/head:pull/45
PR: https://git.openjdk.java.net/lilliput/pull/45
More information about the lilliput-dev
mailing list