diff options
author | jfranck <none@none> | 2013-11-14 12:17:37 +0100 |
---|---|---|
committer | jfranck <none@none> | 2013-11-14 12:17:37 +0100 |
commit | 5192d94f7d2fbb585f5413a42460733062c20ab5 (patch) | |
tree | 82b12aa8f81bda3bd34e6c808bf2e07161aa1b9d /src | |
parent | c2adbe03031210f4094b2f7186bcac87cac5a5af (diff) |
8028055: (reflect) invoking Method/Constructor in anonymous classes breaks with -Dsun.reflect.noInflation=true
Reviewed-by: briangoetz
Diffstat (limited to 'src')
-rw-r--r-- | src/share/classes/sun/reflect/ReflectionFactory.java | 5 | ||||
-rw-r--r-- | src/share/classes/sun/reflect/misc/ReflectUtil.java | 2 |
2 files changed, 4 insertions, 3 deletions
diff --git a/src/share/classes/sun/reflect/ReflectionFactory.java b/src/share/classes/sun/reflect/ReflectionFactory.java index de97dfc70..0dbada7d5 100644 --- a/src/share/classes/sun/reflect/ReflectionFactory.java +++ b/src/share/classes/sun/reflect/ReflectionFactory.java @@ -33,6 +33,7 @@ import java.lang.reflect.Modifier; import java.security.AccessController; import java.security.Permission; import java.security.PrivilegedAction; +import sun.reflect.misc.ReflectUtil; /** <P> The master factory for all reflective objects, both those in java.lang.reflect (Fields, Methods, Constructors) as well as their @@ -144,7 +145,7 @@ public class ReflectionFactory { public MethodAccessor newMethodAccessor(Method method) { checkInitted(); - if (noInflation) { + if (noInflation && !ReflectUtil.isVMAnonymousClass(method.getDeclaringClass())) { return new MethodAccessorGenerator(). generateMethod(method.getDeclaringClass(), method.getName(), @@ -181,7 +182,7 @@ public class ReflectionFactory { return new BootstrapConstructorAccessorImpl(c); } - if (noInflation) { + if (noInflation && !ReflectUtil.isVMAnonymousClass(c.getDeclaringClass())) { return new MethodAccessorGenerator(). generateConstructor(c.getDeclaringClass(), c.getParameterTypes(), diff --git a/src/share/classes/sun/reflect/misc/ReflectUtil.java b/src/share/classes/sun/reflect/misc/ReflectUtil.java index 4316d422c..fb9220894 100644 --- a/src/share/classes/sun/reflect/misc/ReflectUtil.java +++ b/src/share/classes/sun/reflect/misc/ReflectUtil.java @@ -305,6 +305,6 @@ public final class ReflectUtil { * (not to be confused with a Java Language anonymous inner class). */ public static boolean isVMAnonymousClass(Class<?> cls) { - return cls.getSimpleName().contains("/"); + return cls.getName().indexOf("/") > -1; } } |