Thanks, pushed as https://bugs.openjdk.java.net/browse/JDK-8242208

/Claes

On 2020-04-06 13:38, Chris Hegarty wrote:
The changes look good to me.

-Chris.

On 6 Apr 2020, at 11:44, Claes Redestad <claes.redes...@oracle.com> wrote:

Hi,

looks good and trivial to me. I'll sponsor.

/Claes

(I hope we can wrap up https://bugs.openjdk.java.net/browse/JDK-8029019
some day, soon)

On 2020-04-03 12:19, Christoph Dreis wrote:
Hi,
I noticed that the JDK itself still uses Method.getParameterTypes().length in a 
couple of places.
This could be replaced with Method.getParameterCount() to avoid unnecessary 
cloning overhead.
While this is often optimized away, I guess it's still good to not rely on 
that. Additionally, it's a little more concise to read.
If you think this is worthwhile, I would need someone to sponsor that tiny 
change.
P.S.: There is another occurrence in ForkJoinTask where I wasn't sure if I 
should change that, because it's usually changed under the JSR166 umbrella 
afaik.
Cheers,
Christoph
==== PATCH ====
diff --git 
a/src/java.base/share/classes/java/lang/invoke/MethodHandleProxies.java 
b/src/java.base/share/classes/java/lang/invoke/MethodHandleProxies.java
--- a/src/java.base/share/classes/java/lang/invoke/MethodHandleProxies.java
+++ b/src/java.base/share/classes/java/lang/invoke/MethodHandleProxies.java
@@ -276,13 +276,13 @@
          switch (m.getName()) {
          case "toString":
              return (m.getReturnType() == String.class
-                    && m.getParameterTypes().length == 0);
+                    && m.getParameterCount() == 0);
          case "hashCode":
              return (m.getReturnType() == int.class
-                    && m.getParameterTypes().length == 0);
+                    && m.getParameterCount() == 0);
          case "equals":
              return (m.getReturnType() == boolean.class
-                    && m.getParameterTypes().length == 1
+                    && m.getParameterCount() == 1
                      && m.getParameterTypes()[0] == Object.class);
          }
          return false;
diff --git a/src/java.base/share/classes/java/lang/reflect/Executable.java 
b/src/java.base/share/classes/java/lang/reflect/Executable.java
--- a/src/java.base/share/classes/java/lang/reflect/Executable.java
+++ b/src/java.base/share/classes/java/lang/reflect/Executable.java
@@ -378,7 +378,7 @@
      private void verifyParameters(final Parameter[] parameters) {
          final int mask = Modifier.FINAL | Modifier.SYNTHETIC | 
Modifier.MANDATED;
-        if (getParameterTypes().length != parameters.length)
+        if (getParameterCount() != parameters.length)
              throw new MalformedParametersException("Wrong number of parameters in 
MethodParameters attribute");
          for (Parameter parameter : parameters) {
diff --git 
a/src/java.base/share/classes/sun/reflect/annotation/AnnotationType.java 
b/src/java.base/share/classes/sun/reflect/annotation/AnnotationType.java
--- a/src/java.base/share/classes/sun/reflect/annotation/AnnotationType.java
+++ b/src/java.base/share/classes/sun/reflect/annotation/AnnotationType.java
@@ -121,7 +121,7 @@
              if (Modifier.isPublic(method.getModifiers()) &&
                  Modifier.isAbstract(method.getModifiers()) &&
                  !method.isSynthetic()) {
-                if (method.getParameterTypes().length != 0) {
+                if (method.getParameterCount() != 0) {
                      throw new IllegalArgumentException(method + " has 
params");
                  }
                  String name = method.getName();

Reply via email to