RFR: 8286669: Replace MethodHandle specialization with ASM in mainline [v3]
Jorn Vernee
jvernee at openjdk.java.net
Wed May 18 11:27:29 UTC 2022
On Tue, 17 May 2022 06:00:37 GMT, Rémi Forax <forax at openjdk.org> wrote:
>> Jorn Vernee has updated the pull request incrementally with one additional commit since the last revision:
>>
>> BootstrapMethodError -> ExceptionInInitializerError
>
> src/java.base/share/classes/jdk/internal/foreign/abi/BindingSpecializer.java line 157:
>
>> 155: }
>> 156:
>> 157: static MethodHandle doSpecialize(MethodHandle leafHandle, CallingSequence callingSequence, ABIDescriptor abi) {
>
> I think thise method should be split in to, one version for the upcall, one for the downcall, i do not see the point of merging the two codes.
I've split this method into a specializeDowncall and specializeUpcall method.
> src/java.base/share/classes/jdk/internal/foreign/abi/BindingSpecializer.java line 816:
>
>> 814: return;
>> 815: }
>> 816: if (con instanceof Integer) {
>
> those can use the instanceof + type pattern
Done
> src/java.base/share/classes/jdk/internal/foreign/abi/BindingSpecializer.java line 967:
>
>> 965:
>> 966: // unaligned constants
>> 967: public final static ValueLayout.OfBoolean JAVA_BOOLEAN_UNALIGNED = JAVA_BOOLEAN;
>
> as far as i understand, those constants are accessed from the bytecode, they should be in their own class to cleanly separate the specializer part and the runtime part.
I've put these in a nest `Runtime` class, with a comment explaining that they are referenced from the generated code.
-------------
PR: https://git.openjdk.java.net/jdk/pull/8685
More information about the core-libs-dev
mailing list