diff options
author | Brian Carlstrom <bdc@google.com> | 2011-09-18 01:38:59 -0700 |
---|---|---|
committer | Brian Carlstrom <bdc@google.com> | 2011-09-18 01:56:40 -0700 |
commit | 5b8e4c810a97c9dc417142b8c6e07871ae15c797 (patch) | |
tree | 1a28a30bfca5e29d2abb33ad8fa27e66ab9beae9 /src/java_lang_Class.cc | |
parent | 3a7b4f26387b3529899f3cf16cdd6f1e200ded80 (diff) | |
download | art-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.cc | 19 |
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) { |