> The current loom code makes some assumptions about GC that will not work with > generational ZGC. We should make this code more GC agnostic, and provide a > better interface for talking to the GC. > > In particular, > 1) All GCs have a way of encoding oops inside of the heap differently to oops > outside of the heap. For non-ZGC collectors, that is compressed oops. For > ZGC, that is colored pointers. With generational ZGC, pointers on-heap will > be colored and pointers off-heap will be "colorless". So we need to > generalize encoding and decoding of oops in the heap, for loom. > > 2) The cont_oop is located on a stack. In order to access it we need to > start_processing on that thread, if it isn't the current thread. This > happened to work so far for ZGC, because the stale pointers had enough > colors. But with generational ZGC, these on-stack oops will be colorless, so > we have to be more accurate here and ensure processing really has started on > any thread that cont_oop is used on. To make life a bit easier, I'm moving > the oop processing responsibility for these oops to the thread instead. > Currently there is no more than one of these, so doing it lazily per frame > seems a bit overkill. > > 3) Refactoring the stack chunk allocation code > > Tested with tier1-5 and manually running Skynet. No regressions detected. We > have also been running with this (yet a slightly different backend) in the > generational ZGC repo for a while now.
Erik Österlund has updated the pull request incrementally with one additional commit since the last revision: Fix Richard comments ------------- Changes: - all: https://git.openjdk.org/jdk/pull/11111/files - new: https://git.openjdk.org/jdk/pull/11111/files/b20563f5..3de25624 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=11111&range=03 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=11111&range=02-03 Stats: 5 lines in 2 files changed: 5 ins; 0 del; 0 mod Patch: https://git.openjdk.org/jdk/pull/11111.diff Fetch: git fetch https://git.openjdk.org/jdk pull/11111/head:pull/11111 PR: https://git.openjdk.org/jdk/pull/11111