8355658: Allow transforms to run on elements generated by a builder #24908
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Transforms can run on a stream of class file elements. Currently, that stream can only be from a CompoundElement. We can allow a ClassFileBuilder to provide such a stream too; a recent request https://mail.openjdk.org/pipermail/classfile-api-dev/2025-April/000698.html asks for this as well.
With this patch, we can now emulate this ASM pattern easily:
Notably, this patch introduces a source incompatibility (but not binary) in order to allow users to call
transform(model, (xb, xe) -> {})
ortransforming((xb1, xe) -> {}, xb1 -> {})
. This has little impact if users don't useClassFileBuilder
as a type directly (which according to grep.app, there are only two sites on whole GitHub, both updated in this PR). A release note has been created for this incompatibility at https://bugs.openjdk.org/browse/JDK-8355665; please review too.Progress
Issues
Reviewing
Using
git
Checkout this PR locally:
$ git fetch https://git.openjdk.org/jdk.git pull/24908/head:pull/24908
$ git checkout pull/24908
Update a local copy of the PR:
$ git checkout pull/24908
$ git pull https://git.openjdk.org/jdk.git pull/24908/head
Using Skara CLI tools
Checkout this PR locally:
$ git pr checkout 24908
View PR using the GUI difftool:
$ git pr show -t 24908
Using diff file
Download this PR as a diff file:
https://git.openjdk.org/jdk/pull/24908.diff
Using Webrev
Link to Webrev Comment