aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorjfranck <none@none>2013-11-14 12:17:37 +0100
committerjfranck <none@none>2013-11-14 12:17:37 +0100
commit5192d94f7d2fbb585f5413a42460733062c20ab5 (patch)
tree82b12aa8f81bda3bd34e6c808bf2e07161aa1b9d /src
parentc2adbe03031210f4094b2f7186bcac87cac5a5af (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.java5
-rw-r--r--src/share/classes/sun/reflect/misc/ReflectUtil.java2
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;
}
}