diff options
Diffstat (limited to 'runtime/native/java_lang_Class.cc')
-rw-r--r-- | runtime/native/java_lang_Class.cc | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/runtime/native/java_lang_Class.cc b/runtime/native/java_lang_Class.cc index 83736668bb..2abc4935e0 100644 --- a/runtime/native/java_lang_Class.cc +++ b/runtime/native/java_lang_Class.cc @@ -685,8 +685,6 @@ static jstring Class_getSimpleNameNative(JNIEnv* env, jobject javaThis) { ScopedFastNativeObjectAccess soa(env); StackHandleScope<3> hs(soa.Self()); Handle<mirror::Class> klass(hs.NewHandle(DecodeClass(soa, javaThis))); - MutableHandle<mirror::String> h_name(hs.NewHandle<mirror::String>(nullptr)); - MutableHandle<mirror::String> h_inner_name(hs.NewHandle<mirror::String>(nullptr)); if (klass->IsObsoleteObject()) { ThrowRuntimeException("Obsolete Object!"); return nullptr; @@ -695,11 +693,14 @@ static jstring Class_getSimpleNameNative(JNIEnv* env, jobject javaThis) { ObjPtr<mirror::String> class_name = nullptr; if (annotations::GetInnerClass(klass, &class_name)) { if (class_name == nullptr) { // Anonymous class - gc::AllocatorType allocator_type = Runtime::Current()->GetHeap()->GetCurrentAllocator(); - return soa.AddLocalReference<jstring>( - mirror::String::AllocEmptyString(soa.Self(), allocator_type)); + ObjPtr<mirror::Class> j_l_String = + WellKnownClasses::java_lang_String_EMPTY->GetDeclaringClass(); + ObjPtr<mirror::Object> empty_string = + WellKnownClasses::java_lang_String_EMPTY->GetObject(j_l_String); + DCHECK(empty_string != nullptr); + return soa.AddLocalReference<jstring>(empty_string); } - h_inner_name.Assign(class_name); + Handle<mirror::String> h_inner_name(hs.NewHandle<mirror::String>(class_name)); if (annotations::GetDeclaringClass(klass) != nullptr || // member class annotations::GetEnclosingMethod(klass) != nullptr) { // local class return soa.AddLocalReference<jstring>(h_inner_name.Get()); @@ -707,7 +708,7 @@ static jstring Class_getSimpleNameNative(JNIEnv* env, jobject javaThis) { } } - h_name.Assign(mirror::Class::ComputeName(klass)); + Handle<mirror::String> h_name(hs.NewHandle<mirror::String>(mirror::Class::ComputeName(klass))); if (h_name == nullptr) { return nullptr; } |