Hi all, This change strengthens our Valhalla-specific classloading test suite and guards against regressions. An overview of the new changes is as follows: * `BigClassTreeClassLoader`: a utility classloader that generates huge class trees on the fly. The idea is to generate a tree that is deep (lots of parent classes) and very wide (classes have lots of value classes as fields, which have value class fields, etc.). * `ConcurrentClassLoadingTest` strains the classloading and preloading by classloading many classes at the same time. * `LoadableDescriptorsTest` ensures that the `LoadableDescriptors` attribute can handle unexpected data. This may need to be revisited if https://bugs.openjdk.org/browse/JDK-8366907 changes the semantics. * `PreLoadCircularityTest` ensures that preloading happens even when there are cycles (via inheritance, fields, and both). * `PreLoadDoesNotInitTest` is a regression test that ensures preloading will not initialize a class. * `PreLoadFailuresDoNotImpactApplicationTest` ensures that a flaky classloader during preloading will not cause crashes as long as the classloader can find the class when it is actually used. * `ValueClassInheritanceTest` is a regression test that ensures one cannot have a value class inherit from something that's not an abstract value class.
------------- Commit messages: - Reindent. - More reviewer comments. - Incorporate feedback. - Move to JUnit and refactor. - Concurrent non-deadlocking huge tree test. - Iterate. - First draft. Changes: https://git.openjdk.org/valhalla/pull/1552/files Webrev: https://webrevs.openjdk.org/?repo=valhalla&pr=1552&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8327257 Stats: 892 lines in 11 files changed: 892 ins; 0 del; 0 mod Patch: https://git.openjdk.org/valhalla/pull/1552.diff Fetch: git fetch https://git.openjdk.org/valhalla.git pull/1552/head:pull/1552 PR: https://git.openjdk.org/valhalla/pull/1552
