Change Class::component_type_ and implement reflect.Array
Change-Id: I9e06f31577551c738eca2621146c8d2328119442
diff --git a/src/java_lang_Class.cc b/src/java_lang_Class.cc
index 0c6bbe5..3e80c6b 100644
--- a/src/java_lang_Class.cc
+++ b/src/java_lang_Class.cc
@@ -35,24 +35,7 @@
}
jclass Class_getComponentType(JNIEnv* env, jobject javaThis) {
- Class* c = Decode<Class*>(env, javaThis);
- if (!c->IsArrayClass()) {
- return NULL;
- }
-
- /*
- * We can't just return c->GetComponentType(), because that gives
- * us the base type (e.g. X[][][] returns X). If this is a multi-
- * dimensional array, we have to do the lookup by name.
- */
- Class* result;
- std::string descriptor(c->GetDescriptor()->ToModifiedUtf8());
- if (descriptor[1] == '[') {
- result = Runtime::Current()->GetClassLinker()->FindClass(descriptor.c_str() + 1, c->GetClassLoader());
- } else {
- result = c->GetComponentType();
- }
- return AddLocalReference<jclass>(env, result);
+ return AddLocalReference<jclass>(env, Decode<Class*>(env, javaThis)->GetComponentType());
}
jobjectArray Class_getDeclaredClasses(JNIEnv* env, jclass java_lang_Class_class, jclass c, jboolean publicOnly) {