summaryrefslogtreecommitdiff
path: root/runtime/native/java_lang_Class.cc
diff options
context:
space:
mode:
author Vladimir Marko <vmarko@google.com> 2018-02-15 10:41:07 +0000
committer Vladimir Marko <vmarko@google.com> 2018-02-15 15:36:21 +0000
commit7287c4d75e38e7a01c7ea3fdebb47d9cfe128a56 (patch)
tree2b43d1b334e05e1c5719fee3f2a16bebaff059d9 /runtime/native/java_lang_Class.cc
parent1efa7cb8c415f4df8a248242cd773a1fc671878e (diff)
Add Class.getPrimitiveClass().
Implement the native part in ART and remove the native parts of the previously needed workaround for java.lang.Void.TYPE. Companion libcore/ change: https://android-review.googlesource.com/619326 Test: m test-art-host-gtest Test: testrunner.py --host --optimizing Test: Pixel 2 XL boots. Bug: 73346078 Change-Id: Icfb201a1f08d8ff2a65c58f7c0ec25aa2296db29
Diffstat (limited to 'runtime/native/java_lang_Class.cc')
-rw-r--r--runtime/native/java_lang_Class.cc7
1 files changed, 7 insertions, 0 deletions
diff --git a/runtime/native/java_lang_Class.cc b/runtime/native/java_lang_Class.cc
index 4597f68f54..e518553292 100644
--- a/runtime/native/java_lang_Class.cc
+++ b/runtime/native/java_lang_Class.cc
@@ -176,6 +176,12 @@ static jclass Class_classForName(JNIEnv* env, jclass, jstring javaName, jboolean
return soa.AddLocalReference<jclass>(c.Get());
}
+static jclass Class_getPrimitiveClass(JNIEnv* env, jclass, jstring name) {
+ ScopedFastNativeObjectAccess soa(env);
+ ObjPtr<mirror::Class> klass = mirror::Class::GetPrimitiveClass(soa.Decode<mirror::String>(name));
+ return soa.AddLocalReference<jclass>(klass);
+}
+
static jstring Class_getNameNative(JNIEnv* env, jobject javaThis) {
ScopedFastNativeObjectAccess soa(env);
StackHandleScope<1> hs(soa.Self());
@@ -869,6 +875,7 @@ static JNINativeMethod gMethods[] = {
FAST_NATIVE_METHOD(Class, getInnerClassFlags, "(I)I"),
FAST_NATIVE_METHOD(Class, getInnerClassName, "()Ljava/lang/String;"),
FAST_NATIVE_METHOD(Class, getInterfacesInternal, "()[Ljava/lang/Class;"),
+ FAST_NATIVE_METHOD(Class, getPrimitiveClass, "(Ljava/lang/String;)Ljava/lang/Class;"),
FAST_NATIVE_METHOD(Class, getNameNative, "()Ljava/lang/String;"),
FAST_NATIVE_METHOD(Class, getPublicDeclaredFields, "()[Ljava/lang/reflect/Field;"),
FAST_NATIVE_METHOD(Class, getSignatureAnnotation, "()[Ljava/lang/String;"),