This change optimizes the runtime of `Class.getMethod(String, Class<?>[])` in two ways:
1. While iterating across each Method to find a match (existing logic) it now compares parameter count before checking method name. This check is substantially faster. 2. While iterating (existing logic) if the requested method has no arguments, the loop terminates early after finding one match. This works because there can only be one zero-arg method with the matching name in the specific class. A benchmark and unit tests are included; benchmark results (below) show an improvement in all cases, and an especially large gain when the immediate class contains the no-arg target. Base: Benchmark Mode Cnt Score Error Units ClassGetMethod.getConcreteFiveArg avgt 6 90.866 ± 2.698 ns/op ClassGetMethod.getConcreteNoArg avgt 6 72.472 ± 10.225 ns/op ClassGetMethod.getIntfFiveArg avgt 6 198.524 ± 7.089 ns/op ClassGetMethod.getIntfNoArg avgt 6 191.739 ± 4.695 ns/op ClassGetMethod.getNoSuchMethod avgt 10 2254.308 ± 42.829 ns/op ClassGetMethod.getSuperFiveArg avgt 6 165.897 ± 4.370 ns/op ClassGetMethod.getSuperNoArg avgt 6 148.361 ± 4.573 ns/op Modified: Benchmark Mode Cnt Score Error Units ClassGetMethod.getConcreteFiveArg avgt 6 77.059 ± 2.644 ns/op ClassGetMethod.getConcreteNoArg avgt 6 47.666 ± 6.544 ns/op ClassGetMethod.getIntfFiveArg avgt 6 164.427 ± 4.356 ns/op ClassGetMethod.getIntfNoArg avgt 6 161.256 ± 6.832 ns/op ClassGetMethod.getNoSuchMethod avgt 10 2158.844 ± 43.716 ns/op ClassGetMethod.getSuperFiveArg avgt 6 129.047 ± 4.414 ns/op ClassGetMethod.getSuperNoArg avgt 6 123.728 ± 6.182 ns/op ------------- Commit messages: - Adding copyright statements - 8343559: Optimize Class.getMethod(String, Class<?>...) Changes: https://git.openjdk.org/jdk/pull/21929/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=21929&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8343559 Stats: 404 lines in 3 files changed: 398 ins; 0 del; 6 mod Patch: https://git.openjdk.org/jdk/pull/21929.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/21929/head:pull/21929 PR: https://git.openjdk.org/jdk/pull/21929