> 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). > > --------- > - [x] I confirm that I make this contribution in accordance with the [OpenJDK > Interim AI Policy](https://openjdk.org/legal/ai).
David Beaumont has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains 22 commits: - Merge branch 'master' into jimage_preview_mode - fix test failure in linkable image - update test with correct dep - Fix issue with resource lookup in ImageReader - Merge branch 'master' into jimage_preview_mode - High level test for preview mode - renaming based on feedback - Rename ModuleReference to ModuleLink - tweak comments - Feedback changes - ... and 12 more: https://git.openjdk.org/jdk/compare/c8bb46be...7f17aa52 ------------- Changes: https://git.openjdk.org/jdk/pull/29414/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=29414&range=14 Stats: 3365 lines in 39 files changed: 2318 ins; 589 del; 458 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
