summaryrefslogtreecommitdiffstats
path: root/src/java_lang_Class.cc
diff options
context:
space:
mode:
authorBrian Carlstrom <bdc@google.com>2011-09-18 01:38:59 -0700
committerBrian Carlstrom <bdc@google.com>2011-09-18 01:56:40 -0700
commit5b8e4c810a97c9dc417142b8c6e07871ae15c797 (patch)
tree1a28a30bfca5e29d2abb33ad8fa27e66ab9beae9 /src/java_lang_Class.cc
parent3a7b4f26387b3529899f3cf16cdd6f1e200ded80 (diff)
downloadart-5b8e4c810a97c9dc417142b8c6e07871ae15c797.zip
art-5b8e4c810a97c9dc417142b8c6e07871ae15c797.tar.gz
art-5b8e4c810a97c9dc417142b8c6e07871ae15c797.tar.bz2
Change Class::component_type_ and implement reflect.Array
Change-Id: I9e06f31577551c738eca2621146c8d2328119442
Diffstat (limited to 'src/java_lang_Class.cc')
-rw-r--r--src/java_lang_Class.cc19
1 files changed, 1 insertions, 18 deletions
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 @@ jobject Class_getClassLoader(JNIEnv* env, jclass, jobject javaClass) {
}
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) {