RFR: 8356022: Migrate descriptor parsing from generics to BytecodeDescriptor

Shaojin Wen swen at openjdk.org
Fri May 2 05:23:45 UTC 2025


On Thu, 1 May 2025 00:01:08 GMT, Chen Liang <liach at openjdk.org> wrote:

> As another step toward the removal of the old generics infrastructure, I propose to remove the usages of generic parsing utilities and use the facilities provided by BytecodeDescriptor, already used by MethodType.fromDescriptorString. This also prevents extra validation cost in use sites to defend against generic types.
> 
> In this patch, BytecodeDescriptor and Wrapper see minor updates, mainly for better exception messages - previously, an unparseable char in the descriptor string just reports that char, and now the whole descriptor string is reported.
> 
> These behaviors are already covered by the tests added in JDK-8350704 #23788.
> 
> Testing: reflect/annotation/Class, running tier 1+2

src/java.base/share/classes/sun/invoke/util/BytecodeDescriptor.java line 48:

> 46:         int[] i = {0};
> 47:         var ret = parseSig(descriptor, i, descriptor.length(), loader);
> 48:         if (i[0] != descriptor.length() || ret == null) {

var ret = parseSig(descriptor, new int[] {0}, descriptor.length(), loader);
        if (descriptor.length() != 0 || ret == null) {

Can it be rewritten like this?

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

PR Review Comment: https://git.openjdk.org/jdk/pull/24978#discussion_r2071109091


More information about the core-libs-dev mailing list