Use string length from DEX instead of recomputing

This gives around a 2% improvement in startup time overall. Here are results from a selection of
apps:

com.android.gallery3d/.app.GalleryActivity: 203.2ms → 197.7ms (change: -5.4ms, -2.7%)
com.android.messaging/.ui.conversationlist.ConversationListActivity:
  202.1ms → 199.1ms (change: -3.0ms, -1.5%)
com.android.contacts/.activities.PeopleActivity: 277.3ms → 270.7ms (change: -6.6ms, -2.4%)
com.android.camera2/com.android.camera.CameraLauncher:
  351.7ms → 344.1ms (change: -7.7ms, -2.2%)
com.android.dialer/.main.impl.MainActivity: 259.5ms → 254.2ms (change: -5.3ms, -2.0%)
com.android.settings/.Settings: 189.0ms → 186.5ms (change: -2.4ms, -1.3%)
com.android.email/.activity.Welcome: 222.8ms → 219.3ms (change: -3.6ms, -1.6%)
org.mozilla.firefox/.App: 370.2ms → 358.3ms (change: -11.9ms, -3.2%)

This is the average of 100 runs on a Pixel 2 XL.

Bug: 132691958
Test: device boots, start app many times
Change-Id: I93b6eb5105e32788cfc8159c6c21b400a161f86c
diff --git a/runtime/art_method-inl.h b/runtime/art_method-inl.h
index 61c261c..6bbccb8 100644
--- a/runtime/art_method-inl.h
+++ b/runtime/art_method-inl.h
@@ -200,26 +200,19 @@
     const DexFile* dex_file = GetDexFile();
     return dex_file->GetMethodName(dex_file->GetMethodId(dex_method_idx));
   }
-  Runtime* const runtime = Runtime::Current();
-  if (this == runtime->GetResolutionMethod()) {
-    return "<runtime internal resolution method>";
-  } else if (this == runtime->GetImtConflictMethod()) {
-    return "<runtime internal imt conflict method>";
-  } else if (this == runtime->GetCalleeSaveMethod(CalleeSaveType::kSaveAllCalleeSaves)) {
-    return "<runtime internal callee-save all registers method>";
-  } else if (this == runtime->GetCalleeSaveMethod(CalleeSaveType::kSaveRefsOnly)) {
-    return "<runtime internal callee-save reference registers method>";
-  } else if (this == runtime->GetCalleeSaveMethod(CalleeSaveType::kSaveRefsAndArgs)) {
-    return "<runtime internal callee-save reference and argument registers method>";
-  } else if (this == runtime->GetCalleeSaveMethod(CalleeSaveType::kSaveEverything)) {
-    return "<runtime internal save-every-register method>";
-  } else if (this == runtime->GetCalleeSaveMethod(CalleeSaveType::kSaveEverythingForClinit)) {
-    return "<runtime internal save-every-register method for clinit>";
-  } else if (this == runtime->GetCalleeSaveMethod(CalleeSaveType::kSaveEverythingForSuspendCheck)) {
-    return "<runtime internal save-every-register method for suspend check>";
-  } else {
-    return "<unknown runtime internal method>";
+  return GetRuntimeMethodName();
+}
+
+inline std::string_view ArtMethod::GetNameView() {
+  uint32_t dex_method_idx = GetDexMethodIndex();
+  if (LIKELY(dex_method_idx != dex::kDexNoIndex)) {
+    DCHECK(!IsProxyMethod());
+    const DexFile* dex_file = GetDexFile();
+    uint32_t length = 0;
+    const char* name = dex_file->GetMethodName(dex_file->GetMethodId(dex_method_idx), &length);
+    return StringViewFromUtf16Length(name, length);
   }
+  return GetRuntimeMethodName();
 }
 
 inline ObjPtr<mirror::String> ArtMethod::ResolveNameString() {