> Implementation of preview-mode support for jimage modules file, migrated from > Valhalla related work (see JDK-8352750). > > This PR (the first of several) migrates work from Valhalla (lworld) to the > JDK mainline repository in relation to "preview mode" support. It affects the > creation and reading of the jimage file, both in Java > (BasicImageReader/ImageReader) and C++ (imageFile.xpp/jimage.xpp). > > Preview mode is a mechanism by which alternate version of JDK class files and > resources can be made available for class loading and reflection when the > '--enable-preview' flag is passed to the runtime. > > Alternate classes/resource appear in each module under the: > > /<module>/META-INF/preview/<path-to>/<resource-or-class> > > and replace the original: > > /<module>/<path-to>/<resource-or-class> > > files when preview mode is enabled. > > While initially useful for Valhalla work, this mechanism will be used for > other cases where preview features (in the JEP 12 sense) require alternate > classes/resources to be provided. None of the changes in this (or the > follow-up PRs) are Valhalla specific. > > In this PR: > * the writing of jimage files is modified to recognize and handle preview > mode paths > * flags in the jimage file are added or modified to support preview mode > efficiently > * (C++) the class loader is modified to permit reading preview versions of > classes > * (Java) the image reader and associated JRT file-system classes are modified > to permit reading preview files > * unit tests are added to ensure preview mode works as expected when enabled > * (temporary) any code calling into the affected API (other than tests) > specifies that preview mode is disabled > > Future PRs will add the plumbing to enable preview mode correctly, but with > the PR there should be no observable change in behaviour (especially since no > preview classes or resources are being supplied at this point).
David Beaumont has updated the pull request incrementally with one additional commit since the last revision: More feedback tweaks ------------- Changes: - all: https://git.openjdk.org/jdk/pull/29414/files - new: https://git.openjdk.org/jdk/pull/29414/files/b49960b3..c906b3f2 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=29414&range=03 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=29414&range=02-03 Stats: 15 lines in 1 file changed: 1 ins; 0 del; 14 mod Patch: https://git.openjdk.org/jdk/pull/29414.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/29414/head:pull/29414 PR: https://git.openjdk.org/jdk/pull/29414
