RFR: 8292914: Drop the counter from lambda class names [v8]

David M. Lloyd duke at openjdk.org
Fri Feb 24 14:21:12 UTC 2023


On Thu, 23 Feb 2023 23:50:16 GMT, Mandy Chung <mchung at openjdk.org> wrote:

>> David M. Lloyd has updated the pull request incrementally with two additional commits since the last revision:
>> 
>>  - Many tests have patterns for lambda class names; update them
>>  - Update comments and javadoc showin the old pattern
>
> src/java.base/share/classes/java/lang/invoke/InnerClassLambdaMetafactory.java line 370:
> 
>> 368:                 if (useImplMethodHandle) {
>> 369:                     lookup = caller.defineHiddenClassWithClassData(classBytes, implementation, !disableEagerInitialization,
>> 370:                         NESTMATE, STRONG);
> 
> nit: formatting - align this line to the first argument `classBytes` in L369.

Done.

> src/java.base/share/classes/java/lang/invoke/InnerClassLambdaMetafactory.java line 374:
> 
>> 372:                     lookup = caller.defineHiddenClass(classBytes, !disableEagerInitialization, NESTMATE, STRONG);
>> 373:                 }
>> 374:             } catch (Throwable t) {
> 
> suggest to use try-finally in writing the file.
> 
> 
>             Lookup lookup = null;
>             try {
>                 if (useImplMethodHandle) {
>                     lookup = caller.defineHiddenClassWithClassData(classBytes, implementation, !disableEagerInitialization,
>                                                                    NESTMATE, STRONG);
>                 } else {
>                     lookup = caller.defineHiddenClass(classBytes, !disableEagerInitialization, NESTMATE, STRONG);
>                 }
>             } finally {
>                 // If requested, dump out to a file for debugging purposes
>                 if (dumper != null) {
>                     final String name;
>                     if (lookup != null) {
>                         String definedName = lookup.lookupClass().getName();
>                         int suffixIdx = definedName.lastIndexOf('/');
>                         assert suffixIdx != -1;
>                         name = lambdaClassName + '.' + definedName.substring(suffixIdx + 1);
>                     } else {
>                         name = lambdaClassName + ".failed-" + counter.incrementAndGet();
>                     }
>                     doDump(name, classBytes);
>                 }
>             }
>             return lookup.lookupClass();

Done, with the small difference that I move the `return lookup.lookupClass()` into the `try` block because IntelliJ IDEA thought that `lookup` could be `null` at the point of the `return` statement; I figure, if IDEA can get that wrong then a casual reader might get it wrong too.

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

PR: https://git.openjdk.org/jdk/pull/12579


More information about the core-libs-dev mailing list