--- a/jdk/src/share/classes/java/lang/Class.java Fri Jun 27 14:21:31 2014 -0700
+++ b/jdk/src/share/classes/java/lang/Class.java Wed Jul 02 16:47:49 2014 -0400
@@ -134,10 +134,11 @@
* This constructor is not used and prevents the default constructor being
* generated.
*/
- private Class(ClassLoader loader) {
+ private Class(ClassLoader loader, Class<?> arrayComponentType) {
// Initialize final field for classLoader. The initialization value of non-null
// prevents future JIT optimizations from assuming this final field is null.
classLoader = loader;
+ componentType = arrayComponentType;
}
/**
@@ -917,7 +918,16 @@
* @see java.lang.reflect.Array
* @since 1.1
*/
- public native Class<?> getComponentType();
+ public Class<?> getComponentType() {
+ // Only return for array types. Storage may be reused for Class for instance types.
+ if (isArray()) {
+ return componentType;
+ } else {
+ return null;
+ }
+ }
+
+ private final Class<?> componentType;
/**