Parsing performance of `j.l.c.MethodTypeDescriptor::ofDescriptor` can be significantly improved and add performance boost to intensive users.
Two main reasons have been identified and fixed in this patch: First glitch is late insertion of return type to the first position of `j.u.ArrayList`, causing all previously parsed parameter types to shift using `System::arraycopy`. Proposed patch inserts a placeholder for the return type first and replaces it with return type later. Second performance degradation is in `MethodTypeDescriptor::skipOverFieldSignature`, where each identified class descriptor is exactly located by `String::indexOf`, extracted by `String::substring`, and passed for for the purpose of verification to `ConstantUtils::verifyUnqualifiedClassName`. Proposed patch inlines the unqualified class name verification into `ConstantUtils::skipOverFieldSignature` parsing loop and so eliminates calls of `String::indexOf` and `String::substring`. Package private method `ConstantUtils::verifyUnqualifiedClassName` has no other use within the package, so it is removed. Please review proposed performance improving patch. Thanks, Adam ------------- Commit messages: - 8294062: Improve parsing performance of j.l.c.MethodTypeDesc Changes: https://git.openjdk.org/jdk/pull/10358/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=10358&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8294062 Stats: 39 lines in 1 file changed: 8 ins; 22 del; 9 mod Patch: https://git.openjdk.org/jdk/pull/10358.diff Fetch: git fetch https://git.openjdk.org/jdk pull/10358/head:pull/10358 PR: https://git.openjdk.org/jdk/pull/10358