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).

-------------

Commit messages:
 - Merge branch 'master' into jimage_preview_mode
 - undo exploded image changes for now
 - Add new files too (oops)
 - Patched jimage preview mode support from lworld

Changes: https://git.openjdk.org/jdk/pull/29414/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=29414&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8377070
  Stats: 3074 lines in 37 files changed: 2060 ins; 588 del; 426 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

Reply via email to