Remove some unnecessary items from WellKnownClasses.

Replace a few uses with alternatives, namely
mirror::{Constructor,Method,Field}::StaticClass().
Alternatively, we could use class roots in the ClassLinker.

And clear dalvik_system_VMRuntime_nonSdkApiUsageConsumer
in WellKnownClasses::Clear().

Test: testrunner.py --host
Bug: 74943277
Change-Id: I7561db76cd62d376c22efd4386dffd83ec74aa66
diff --git a/runtime/check_jni.cc b/runtime/check_jni.cc
index 900ce0e..c625a97 100644
--- a/runtime/check_jni.cc
+++ b/runtime/check_jni.cc
@@ -37,6 +37,8 @@
 #include "java_vm_ext.h"
 #include "jni_internal.h"
 #include "mirror/class-inl.h"
+#include "mirror/field.h"
+#include "mirror/method.h"
 #include "mirror/object-inl.h"
 #include "mirror/object_array-inl.h"
 #include "mirror/string-inl.h"
@@ -599,9 +601,8 @@
       AbortF("expected non-null method");
       return false;
     }
-    mirror::Class* c = method->GetClass();
-    if (soa.Decode<mirror::Class>(WellKnownClasses::java_lang_reflect_Method) != c &&
-        soa.Decode<mirror::Class>(WellKnownClasses::java_lang_reflect_Constructor) != c) {
+    ObjPtr<mirror::Class> c = method->GetClass();
+    if (mirror::Method::StaticClass() != c && mirror::Constructor::StaticClass() != c) {
       AbortF("expected java.lang.reflect.Method or "
           "java.lang.reflect.Constructor but got object of type %s: %p",
           method->PrettyTypeOf().c_str(), jmethod);
@@ -630,8 +631,8 @@
       AbortF("expected non-null java.lang.reflect.Field");
       return false;
     }
-    mirror::Class* c = field->GetClass();
-    if (soa.Decode<mirror::Class>(WellKnownClasses::java_lang_reflect_Field) != c) {
+    ObjPtr<mirror::Class> c = field->GetClass();
+    if (mirror::Field::StaticClass() != c) {
       AbortF("expected java.lang.reflect.Field but got object of type %s: %p",
              field->PrettyTypeOf().c_str(), jfield);
       return false;
diff --git a/runtime/native/java_lang_Class.cc b/runtime/native/java_lang_Class.cc
index a8b203b..82300fe 100644
--- a/runtime/native/java_lang_Class.cc
+++ b/runtime/native/java_lang_Class.cc
@@ -683,8 +683,7 @@
   }
   ObjPtr<mirror::Object> method = annotations::GetEnclosingMethod(klass);
   if (method != nullptr) {
-    if (soa.Decode<mirror::Class>(WellKnownClasses::java_lang_reflect_Constructor) ==
-        method->GetClass()) {
+    if (mirror::Constructor::StaticClass() == method->GetClass()) {
       return soa.AddLocalReference<jobject>(method);
     }
   }
@@ -700,8 +699,7 @@
   }
   ObjPtr<mirror::Object> method = annotations::GetEnclosingMethod(klass);
   if (method != nullptr) {
-    if (soa.Decode<mirror::Class>(WellKnownClasses::java_lang_reflect_Method) ==
-        method->GetClass()) {
+    if (mirror::Method::StaticClass() == method->GetClass()) {
       return soa.AddLocalReference<jobject>(method);
     }
   }
diff --git a/runtime/well_known_classes.cc b/runtime/well_known_classes.cc
index 742e713..f5d112c 100644
--- a/runtime/well_known_classes.cc
+++ b/runtime/well_known_classes.cc
@@ -58,10 +58,6 @@
 jclass WellKnownClasses::java_lang_NoClassDefFoundError;
 jclass WellKnownClasses::java_lang_Object;
 jclass WellKnownClasses::java_lang_OutOfMemoryError;
-jclass WellKnownClasses::java_lang_reflect_Constructor;
-jclass WellKnownClasses::java_lang_reflect_Executable;
-jclass WellKnownClasses::java_lang_reflect_Field;
-jclass WellKnownClasses::java_lang_reflect_Method;
 jclass WellKnownClasses::java_lang_reflect_Parameter;
 jclass WellKnownClasses::java_lang_reflect_Parameter__array;
 jclass WellKnownClasses::java_lang_reflect_Proxy;
@@ -145,7 +141,6 @@
 jfieldID WellKnownClasses::java_lang_Throwable_stackTrace;
 jfieldID WellKnownClasses::java_lang_Throwable_stackState;
 jfieldID WellKnownClasses::java_lang_Throwable_suppressedExceptions;
-jfieldID WellKnownClasses::java_lang_reflect_Executable_artMethod;
 jfieldID WellKnownClasses::java_lang_reflect_Proxy_h;
 jfieldID WellKnownClasses::java_nio_ByteBuffer_address;
 jfieldID WellKnownClasses::java_nio_ByteBuffer_hb;
@@ -333,10 +328,6 @@
   java_lang_invoke_MethodHandle = CacheClass(env, "java/lang/invoke/MethodHandle");
   java_lang_invoke_VarHandle = CacheClass(env, "java/lang/invoke/VarHandle");
   java_lang_NoClassDefFoundError = CacheClass(env, "java/lang/NoClassDefFoundError");
-  java_lang_reflect_Constructor = CacheClass(env, "java/lang/reflect/Constructor");
-  java_lang_reflect_Executable = CacheClass(env, "java/lang/reflect/Executable");
-  java_lang_reflect_Field = CacheClass(env, "java/lang/reflect/Field");
-  java_lang_reflect_Method = CacheClass(env, "java/lang/reflect/Method");
   java_lang_reflect_Parameter = CacheClass(env, "java/lang/reflect/Parameter");
   java_lang_reflect_Parameter__array = CacheClass(env, "[Ljava/lang/reflect/Parameter;");
   java_lang_reflect_Proxy = CacheClass(env, "java/lang/reflect/Proxy");
@@ -412,7 +403,6 @@
   java_lang_Throwable_stackTrace = CacheField(env, java_lang_Throwable, false, "stackTrace", "[Ljava/lang/StackTraceElement;");
   java_lang_Throwable_stackState = CacheField(env, java_lang_Throwable, false, "backtrace", "Ljava/lang/Object;");
   java_lang_Throwable_suppressedExceptions = CacheField(env, java_lang_Throwable, false, "suppressedExceptions", "Ljava/util/List;");
-  java_lang_reflect_Executable_artMethod = CacheField(env, java_lang_reflect_Executable, false, "artMethod", "J");
   java_nio_ByteBuffer_address = CacheField(env, java_nio_ByteBuffer, false, "address", "J");
   java_nio_ByteBuffer_hb = CacheField(env, java_nio_ByteBuffer, false, "hb", "[B");
   java_nio_ByteBuffer_isReadOnly = CacheField(env, java_nio_ByteBuffer, false, "isReadOnly", "Z");
@@ -484,10 +474,6 @@
   java_lang_NoClassDefFoundError = nullptr;
   java_lang_Object = nullptr;
   java_lang_OutOfMemoryError = nullptr;
-  java_lang_reflect_Constructor = nullptr;
-  java_lang_reflect_Executable = nullptr;
-  java_lang_reflect_Field = nullptr;
-  java_lang_reflect_Method = nullptr;
   java_lang_reflect_Parameter = nullptr;
   java_lang_reflect_Parameter__array = nullptr;
   java_lang_reflect_Proxy = nullptr;
@@ -551,7 +537,7 @@
   dalvik_system_DexFile_fileName = nullptr;
   dalvik_system_DexPathList_dexElements = nullptr;
   dalvik_system_DexPathList__Element_dexFile = nullptr;
-  java_lang_reflect_Executable_artMethod = nullptr;
+  dalvik_system_VMRuntime_nonSdkApiUsageConsumer = nullptr;
   java_lang_reflect_Proxy_h = nullptr;
   java_lang_Thread_daemon = nullptr;
   java_lang_Thread_group = nullptr;
diff --git a/runtime/well_known_classes.h b/runtime/well_known_classes.h
index 7b1a294..25c07b2 100644
--- a/runtime/well_known_classes.h
+++ b/runtime/well_known_classes.h
@@ -68,10 +68,6 @@
   static jclass java_lang_NoClassDefFoundError;
   static jclass java_lang_Object;
   static jclass java_lang_OutOfMemoryError;
-  static jclass java_lang_reflect_Constructor;
-  static jclass java_lang_reflect_Executable;
-  static jclass java_lang_reflect_Field;
-  static jclass java_lang_reflect_Method;
   static jclass java_lang_reflect_Parameter;
   static jclass java_lang_reflect_Parameter__array;
   static jclass java_lang_reflect_Proxy;
@@ -138,7 +134,6 @@
   static jfieldID dalvik_system_DexPathList_dexElements;
   static jfieldID dalvik_system_DexPathList__Element_dexFile;
   static jfieldID dalvik_system_VMRuntime_nonSdkApiUsageConsumer;
-  static jfieldID java_lang_reflect_Executable_artMethod;
   static jfieldID java_lang_reflect_Proxy_h;
   static jfieldID java_lang_Thread_daemon;
   static jfieldID java_lang_Thread_group;