On Mon, 5 Jun 2023 14:42:32 GMT, Adam Sotona <asot...@openjdk.org> wrote:

>> Classfile context object and multi-state options have been discussed at 
>> https://mail.openjdk.org/pipermail/classfile-api-dev/2023-May/000321.html
>> This patch implements the proposed changes in Classfile API and fixes all 
>> affected code across JDK sources and tests.
>> 
>> Please review.
>> 
>> Thanks,
>> Adam
>
> Adam Sotona has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   fixed copyright header

Overall this looks pretty clean.  I like how simply it flows through the 
implementation classes.  There are a number of methods and classes, especially 
in Classfile, which need some more spec.

src/java.base/share/classes/jdk/internal/classfile/Classfile.java line 50:

> 48: /**
> 49:  * Main entry points for parsing, transforming, and generating classfiles.
> 50:  */

Now that this is not just a bag of static methods any more, we need to have 
some spec text about what a Classfile is.  Something like:

Represents a context for parsing, transforming, and generating classfiles.  A 
`Classfile` has a set of options that condition how parsing and generation is 
done.

src/java.base/share/classes/jdk/internal/classfile/Classfile.java line 54:

> 52:         permits ClassfileImpl {
> 53: 
> 54:     static Classfile of() {

Classfile::of needs specification

src/java.base/share/classes/jdk/internal/classfile/Classfile.java line 63:

> 61: 
> 62:     Classfile withOptions(Option... options);
> 63: 

Classfile::withOptions needs specification

src/java.base/share/classes/jdk/internal/classfile/Classfile.java line 66:

> 64:     /**
> 65:      * An option that affects the writing of classfiles.
> 66:      */

Options affect parsing as well as writing now

src/java.base/share/classes/jdk/internal/classfile/constantpool/ConstantPoolBuilder.java
 line 82:

> 80:     static ConstantPoolBuilder of() {
> 81:         return new SplitConstantPool();
> 82:     }

The old ctors here were (ClassModel) and (Options), where the ClassModel 
version had a trail of breadcrumbs back to options.  The new ctors are 
(ClassModel) and no-args, which is a slight departure.  What use did CPB make 
of options in the first place, if any?

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

PR Review: https://git.openjdk.org/jdk/pull/14180#pullrequestreview-1462788383
PR Review Comment: https://git.openjdk.org/jdk/pull/14180#discussion_r1218222043
PR Review Comment: https://git.openjdk.org/jdk/pull/14180#discussion_r1218223437
PR Review Comment: https://git.openjdk.org/jdk/pull/14180#discussion_r1218223102
PR Review Comment: https://git.openjdk.org/jdk/pull/14180#discussion_r1218223991
PR Review Comment: https://git.openjdk.org/jdk/pull/14180#discussion_r1218316864

Reply via email to