> Although SA has some FlatArrayKlass support, it is mostly incomplete. This is > causing heap walking to abort when a flattened array of value objects is > encountered. 4 SA tests are failing in non-obvious ways because of this. > > [JDK-8380769](https://bugs.openjdk.org/browse/JDK-8380769) [lworld] > resourcehogs/serviceability/sa/TestHeapDumpForLargeArray.java fails with > 'truncating to' missing from stdout/stderr with --enable-preview > [JDK-8380851](https://bugs.openjdk.org/browse/JDK-8380851) [lworld] > serviceability/sa/ClhsdbJstackWithConcurrentLock.java fails with "', (a > java/util/concurrent/locks/ReentrantLock$NonfairSync)' not found in jstack > output" when using --enable-preview > [JDK-8380852](https://bugs.openjdk.org/browse/JDK-8380852) [lworld] > serviceability/sa/CDSJMapClstats.java fails with "'BootClassLoader' missing > from stdout/stderr" with "-XX:-UseCompressedOops --enable-preview" > [JDK-8380853](https://bugs.openjdk.org/browse/JDK-8380853) [lworld] > serviceability/sa/ClhsdbJhisto.java fails with "'java.nio.HeapByteBuffer' > missing from stdout/stderr" with "-XX:-UseCompressedOops --enable-preview" > > The main shortcoming is that there is no FlatArray type in SA yet, and also > the code to instantiate it is missing in the following: > > > public Oop newOop(OopHandle handle) { > ... > Klass klass = Oop.getKlassForOopHandle(handle); > if (klass != null) { > if (klass instanceof TypeArrayKlass) return new TypeArray(handle, this); > + if (klass instanceof FlatArrayKlass) return new FlatArray(handle, this); > if (klass instanceof ObjArrayKlass) return new ObjArray(handle, this); > if (klass instanceof InstanceKlass) return new Instance(handle, this); > } > throw new UnknownOopException(handle.toString()); > } > > > Without the added code, this method throws UnknownOopException when it > encounters a flattened array. That in turn causes the heap walking to stop > scanning the region it is in, thinking that it has reached the top of the > used part of the region. See ObjectHeap.iterateLiveRegions(). > > Tested tier1, tier2 svc, and tier5 svc CI testing with and w/o > --enable-preview. Did tier5, tier6, and tier7 with --enable-preview on > linux-x64-debug only.
Chris Plummer has updated the pull request incrementally with two additional commits since the last revision: - fix comment typo - get rid of unused getXXX() methods ------------- Changes: - all: https://git.openjdk.org/valhalla/pull/2271/files - new: https://git.openjdk.org/valhalla/pull/2271/files/b9428cf6..9cb99259 Webrevs: - full: https://webrevs.openjdk.org/?repo=valhalla&pr=2271&range=01 - incr: https://webrevs.openjdk.org/?repo=valhalla&pr=2271&range=00-01 Stats: 44 lines in 1 file changed: 0 ins; 43 del; 1 mod Patch: https://git.openjdk.org/valhalla/pull/2271.diff Fetch: git fetch https://git.openjdk.org/valhalla.git pull/2271/head:pull/2271 PR: https://git.openjdk.org/valhalla/pull/2271
