On Mon, 27 Mar 2023 16:43:17 GMT, Adam Sotona <[email protected]> wrote:
>> java.base java.lang.reflect.ProxyGenerator uses ASM to generate proxy
>> classes and this patch converts it to use Classfile API.
>>
>> Please review.
>>
>> Thank you,
>> Adam
>
> Adam Sotona has updated the pull request incrementally with one additional
> commit since the last revision:
>
> StackMapGenerator performance improvements
Keep-alive.
I believe the changes to cache ClassDesc symbol in ClassEntry and avoid
re-computing hash in Utf8Entry can be in a separate patch delivered before the
current migration patch.
For the StackMapGenerator changes, I don't agree with replacing `TOP_TYPE` with
`null`: currently, top type is `0, null, 0`, which can be the default null
instance after valhalla drops (so filling array will no longer be required at
that point). Using `null` makes the code less readable and maintainable as well.
I also question the design to move away from `MethodTypeDesc`: `ofDescriptor`
is expensive, but we can check the slots of a method type with a
`MethodTypeDesc` easily than tokenizing and skipping the raw descriptor string,
like
var slots = type.parameterCount()
for (var param : type.parameterList()) // when parameterList is optimized
if (param.isPrimitive() && (param.descriptorString.charAt(0) == 'D' ||
param.descriptorString.charAt(0) == 'J')) slots++;
Same for processing invoke instructions: if we can reuse the `MethodTypeDesc`
at `invokeInstruction` call sites, we don't need an ad-hoc type computation
either.
-------------
PR Comment: https://git.openjdk.org/jdk/pull/10991#issuecomment-1520993443