On Tue, 18 Oct 2022 02:03:06 GMT, Mandy Chung <mch...@openjdk.org> wrote:

>> Ioi Lam has updated the pull request with a new target base due to a merge 
>> or a rebase. The incremental webrev excludes the unrelated changes brought 
>> in by the merge/rebase. The pull request contains four additional commits 
>> since the last revision:
>> 
>>  - Merge branch 'master' into 
>> 8295302-no-arraylist-for-single-classdata-for-lambdaform
>>  - @mlchung comments
>>  - @iwanowww comments
>>  - 8295302: Do not use ArrayList when LambdaForm has a single ClassData
>
> src/java.base/share/classes/java/lang/invoke/InvokerBytecodeGenerator.java 
> line 346:
> 
>> 344: 
>> 345:     /**
>> 346:      * Returns an object to pass this.classData to the <clinit> method 
>> of the
> 
> What about:
> 
> Suggestion:
> 
>      * Returns the class data object that will be passed to 
> `Lookup.defineHiddenClass`.
>      * The classData is loaded in the <clinit> method of the generated class.
>      * If the class data contains only one single object, this method returns 
>  that single object.
>      * If the class data contains more than one objects, this method returns 
> a List.
>      *
>      * This method returns null if no class data.

Actually, the classData is passed here:


    private MemberName loadMethod(byte[] classFile) {
        Class<?> invokerClass = LOOKUP.makeHiddenClassDefiner(className, 
classFile, Set.of())
                                      .defineClass(true, classDataValues());
        return resolveInvokerMember(invokerClass, invokerName, invokerType);
    }


So it doesn't go through `Lookup.defineHiddenClass`.

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

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

Reply via email to