On Tue, 17 Sep 2024 13:05:24 GMT, Per Minborg <pminb...@openjdk.org> wrote:

>> This PR suggests introducing an internal class in `java.base` to simplify 
>> the use of some `MethodHandles.Lookup` operations.
>> 
>> While the utility of the methods might appear to be limited in classes with 
>> many static `VarHandle`/`MethodHandle` variables, it should be noted that 
>> the class files become smaller and simpler. Here are some examples:
>> 
>> | Class File                                      | Base [Bytes] | Patch 
>> [Byte] |
>> | --------------------------------| ------------- | ------------ |
>> | FutureTask.class                          |            10,255 |          
>> 10,123 |
>> | AtomicBoolean.class                   |             5,364 |            
>> 5,134 |
>> |AtomicMarkableReference.class |             3,890 |           3,660 |
>> 
>> ![image](https://github.com/user-attachments/assets/fdcbbdfe-c906-4e50-a48c-4944c53c08cc)
>> 
>> The new `MethodHandlesInternal.class` file is of size 1,952 bytes.
>> 
>> In total for `java.base` we have:
>> 
>> | Build map "jdk"  | Size [Bytes] |
>> | ---------------| ------------- |
>> | Base                 |     5,906,457 |
>> | Patch                |     5,905,487 |
>> | Delta                 |                940|
>> 
>> For 60 billion instances, this represents > 50 TB.
>> 
>> Tried and passed tier1-3
>
> Per Minborg has updated the pull request incrementally with two additional 
> commits since the last revision:
> 
>  - Update javadoc
>  - Rename utility class

Overall looks good. Having a concise source construct representing these 
factories will enable jlink or similar pre-processing steps to optimize.

The new class will be lonesome in its own package.
I'd shorten the classname to "MHUtil" making the source lines more readable.

src/java.base/share/classes/jdk/internal/invoke/MethodHandlesUtil.java line 35:

> 33: /**
> 34:  * This class contains a number of static factories for certain
> 35:  * VarHandle/MethodHandle variants.

I'd write this as a more concise 1st line comment.  "This class contains a 
number of" is noise.
"Utility static factories of method handles for fields and methods."
or similar.

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

PR Review: https://git.openjdk.org/jdk/pull/20972#pullrequestreview-2309856171
PR Review Comment: https://git.openjdk.org/jdk/pull/20972#discussion_r1763305393

Reply via email to