xref: /aosp_15_r20/art/runtime/well_known_classes.h (revision 795d594fd825385562da6b089ea9b2033f3abf5a)
1*795d594fSAndroid Build Coastguard Worker /*
2*795d594fSAndroid Build Coastguard Worker  * Copyright (C) 2012 The Android Open Source Project
3*795d594fSAndroid Build Coastguard Worker  *
4*795d594fSAndroid Build Coastguard Worker  * Licensed under the Apache License, Version 2.0 (the "License");
5*795d594fSAndroid Build Coastguard Worker  * you may not use this file except in compliance with the License.
6*795d594fSAndroid Build Coastguard Worker  * You may obtain a copy of the License at
7*795d594fSAndroid Build Coastguard Worker  *
8*795d594fSAndroid Build Coastguard Worker  *      http://www.apache.org/licenses/LICENSE-2.0
9*795d594fSAndroid Build Coastguard Worker  *
10*795d594fSAndroid Build Coastguard Worker  * Unless required by applicable law or agreed to in writing, software
11*795d594fSAndroid Build Coastguard Worker  * distributed under the License is distributed on an "AS IS" BASIS,
12*795d594fSAndroid Build Coastguard Worker  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*795d594fSAndroid Build Coastguard Worker  * See the License for the specific language governing permissions and
14*795d594fSAndroid Build Coastguard Worker  * limitations under the License.
15*795d594fSAndroid Build Coastguard Worker  */
16*795d594fSAndroid Build Coastguard Worker 
17*795d594fSAndroid Build Coastguard Worker #ifndef ART_RUNTIME_WELL_KNOWN_CLASSES_H_
18*795d594fSAndroid Build Coastguard Worker #define ART_RUNTIME_WELL_KNOWN_CLASSES_H_
19*795d594fSAndroid Build Coastguard Worker 
20*795d594fSAndroid Build Coastguard Worker #include "base/locks.h"
21*795d594fSAndroid Build Coastguard Worker #include "base/macros.h"
22*795d594fSAndroid Build Coastguard Worker #include "jni.h"
23*795d594fSAndroid Build Coastguard Worker #include "obj_ptr.h"
24*795d594fSAndroid Build Coastguard Worker #include "read_barrier_option.h"
25*795d594fSAndroid Build Coastguard Worker 
26*795d594fSAndroid Build Coastguard Worker namespace art HIDDEN {
27*795d594fSAndroid Build Coastguard Worker 
28*795d594fSAndroid Build Coastguard Worker class ArtField;
29*795d594fSAndroid Build Coastguard Worker class ArtMethod;
30*795d594fSAndroid Build Coastguard Worker 
31*795d594fSAndroid Build Coastguard Worker namespace mirror {
32*795d594fSAndroid Build Coastguard Worker class Class;
33*795d594fSAndroid Build Coastguard Worker }  // namespace mirror
34*795d594fSAndroid Build Coastguard Worker 
35*795d594fSAndroid Build Coastguard Worker namespace detail {
36*795d594fSAndroid Build Coastguard Worker 
37*795d594fSAndroid Build Coastguard Worker template <typename MemberType, MemberType** kMember>
38*795d594fSAndroid Build Coastguard Worker struct ClassFromMember {
39*795d594fSAndroid Build Coastguard Worker   template <ReadBarrierOption kReadBarrierOption = kWithReadBarrier>
40*795d594fSAndroid Build Coastguard Worker   static ObjPtr<mirror::Class> Get() REQUIRES_SHARED(Locks::mutator_lock_);
41*795d594fSAndroid Build Coastguard Worker 
42*795d594fSAndroid Build Coastguard Worker   mirror::Class* operator->() const REQUIRES_SHARED(Locks::mutator_lock_);
43*795d594fSAndroid Build Coastguard Worker };
44*795d594fSAndroid Build Coastguard Worker 
45*795d594fSAndroid Build Coastguard Worker template <typename MemberType, MemberType** kMember>
46*795d594fSAndroid Build Coastguard Worker bool operator==(const ClassFromMember<MemberType, kMember> lhs, ObjPtr<mirror::Class> rhs)
47*795d594fSAndroid Build Coastguard Worker     REQUIRES_SHARED(Locks::mutator_lock_);
48*795d594fSAndroid Build Coastguard Worker 
49*795d594fSAndroid Build Coastguard Worker template <typename MemberType, MemberType** kMember>
50*795d594fSAndroid Build Coastguard Worker bool operator==(ObjPtr<mirror::Class> lhs, const ClassFromMember<MemberType, kMember> rhs)
51*795d594fSAndroid Build Coastguard Worker     REQUIRES_SHARED(Locks::mutator_lock_);
52*795d594fSAndroid Build Coastguard Worker 
53*795d594fSAndroid Build Coastguard Worker template <typename MemberType, MemberType** kMember>
54*795d594fSAndroid Build Coastguard Worker bool operator!=(const ClassFromMember<MemberType, kMember> lhs, ObjPtr<mirror::Class> rhs)
55*795d594fSAndroid Build Coastguard Worker     REQUIRES_SHARED(Locks::mutator_lock_);
56*795d594fSAndroid Build Coastguard Worker 
57*795d594fSAndroid Build Coastguard Worker template <typename MemberType, MemberType** kMember>
58*795d594fSAndroid Build Coastguard Worker bool operator!=(ObjPtr<mirror::Class> lhs, const ClassFromMember<MemberType, kMember> rhs)
59*795d594fSAndroid Build Coastguard Worker     REQUIRES_SHARED(Locks::mutator_lock_);
60*795d594fSAndroid Build Coastguard Worker 
61*795d594fSAndroid Build Coastguard Worker }  // namespace detail
62*795d594fSAndroid Build Coastguard Worker 
63*795d594fSAndroid Build Coastguard Worker // Various classes used in JNI. We cache them so we don't have to keep looking them up.
64*795d594fSAndroid Build Coastguard Worker 
65*795d594fSAndroid Build Coastguard Worker struct EXPORT WellKnownClasses {
66*795d594fSAndroid Build Coastguard Worker  public:
67*795d594fSAndroid Build Coastguard Worker   // Run before native methods are registered.
68*795d594fSAndroid Build Coastguard Worker   static void Init(JNIEnv* env);
69*795d594fSAndroid Build Coastguard Worker   // Run after native methods are registered.
70*795d594fSAndroid Build Coastguard Worker   static void LateInit(JNIEnv* env);
71*795d594fSAndroid Build Coastguard Worker 
72*795d594fSAndroid Build Coastguard Worker   static void Clear();
73*795d594fSAndroid Build Coastguard Worker 
74*795d594fSAndroid Build Coastguard Worker   static void HandleJniIdTypeChange(JNIEnv* env);
75*795d594fSAndroid Build Coastguard Worker 
76*795d594fSAndroid Build Coastguard Worker   static void InitStringInit(ObjPtr<mirror::Class> string_class,
77*795d594fSAndroid Build Coastguard Worker                              ObjPtr<mirror::Class> string_builder_class)
78*795d594fSAndroid Build Coastguard Worker       REQUIRES_SHARED(Locks::mutator_lock_);
79*795d594fSAndroid Build Coastguard Worker   static ArtMethod* StringInitToStringFactory(ArtMethod* method);
80*795d594fSAndroid Build Coastguard Worker   static uint32_t StringInitToEntryPoint(ArtMethod* method);
81*795d594fSAndroid Build Coastguard Worker 
82*795d594fSAndroid Build Coastguard Worker   static ObjPtr<mirror::Class> ToClass(jclass global_jclass) REQUIRES_SHARED(Locks::mutator_lock_);
83*795d594fSAndroid Build Coastguard Worker 
84*795d594fSAndroid Build Coastguard Worker  private:
85*795d594fSAndroid Build Coastguard Worker   static void InitFieldsAndMethodsOnly(JNIEnv* env);
86*795d594fSAndroid Build Coastguard Worker 
87*795d594fSAndroid Build Coastguard Worker   template <ArtMethod** kMethod>
88*795d594fSAndroid Build Coastguard Worker   using ClassFromMethod = detail::ClassFromMember<ArtMethod, kMethod>;
89*795d594fSAndroid Build Coastguard Worker 
90*795d594fSAndroid Build Coastguard Worker   template <ArtField** kField>
91*795d594fSAndroid Build Coastguard Worker   using ClassFromField = detail::ClassFromMember<ArtField, kField>;
92*795d594fSAndroid Build Coastguard Worker 
93*795d594fSAndroid Build Coastguard Worker  public:
94*795d594fSAndroid Build Coastguard Worker   static jclass dalvik_annotation_optimization_CriticalNative;
95*795d594fSAndroid Build Coastguard Worker   static jclass dalvik_annotation_optimization_FastNative;
96*795d594fSAndroid Build Coastguard Worker   static jclass dalvik_annotation_optimization_NeverCompile;
97*795d594fSAndroid Build Coastguard Worker   static jclass dalvik_annotation_optimization_NeverInline;
98*795d594fSAndroid Build Coastguard Worker   static jclass java_lang_annotation_Annotation__array;
99*795d594fSAndroid Build Coastguard Worker   static jclass java_lang_ClassValue;
100*795d594fSAndroid Build Coastguard Worker   static jclass java_lang_Record;
101*795d594fSAndroid Build Coastguard Worker   static jclass java_lang_reflect_Parameter__array;
102*795d594fSAndroid Build Coastguard Worker   static jclass java_lang_StringFactory;
103*795d594fSAndroid Build Coastguard Worker   static jclass java_lang_System;
104*795d594fSAndroid Build Coastguard Worker   static jclass java_lang_Void;
105*795d594fSAndroid Build Coastguard Worker   static jclass libcore_reflect_AnnotationMember__array;
106*795d594fSAndroid Build Coastguard Worker 
107*795d594fSAndroid Build Coastguard Worker   static ArtMethod* dalvik_system_BaseDexClassLoader_getLdLibraryPath;
108*795d594fSAndroid Build Coastguard Worker   static ArtMethod* dalvik_system_DelegateLastClassLoader_init;  // Only for the declaring class.
109*795d594fSAndroid Build Coastguard Worker   static ArtMethod* dalvik_system_DexClassLoader_init;  // Only for the declaring class.
110*795d594fSAndroid Build Coastguard Worker   static ArtMethod* dalvik_system_InMemoryDexClassLoader_init;  // Only for the declaring class.
111*795d594fSAndroid Build Coastguard Worker   static ArtMethod* dalvik_system_PathClassLoader_init;  // Only for the declaring class.
112*795d594fSAndroid Build Coastguard Worker   static ArtMethod* dalvik_system_VMRuntime_hiddenApiUsed;
113*795d594fSAndroid Build Coastguard Worker   static ArtMethod* java_lang_Boolean_valueOf;
114*795d594fSAndroid Build Coastguard Worker   static ArtMethod* java_lang_BootClassLoader_init;  // Only for the declaring class.
115*795d594fSAndroid Build Coastguard Worker   static ArtMethod* java_lang_Byte_valueOf;
116*795d594fSAndroid Build Coastguard Worker   static ArtMethod* java_lang_Character_valueOf;
117*795d594fSAndroid Build Coastguard Worker   static ArtMethod* java_lang_ClassLoader_loadClass;
118*795d594fSAndroid Build Coastguard Worker   static ArtMethod* java_lang_ClassNotFoundException_init;
119*795d594fSAndroid Build Coastguard Worker   static ArtMethod* java_lang_Daemons_start;
120*795d594fSAndroid Build Coastguard Worker   static ArtMethod* java_lang_Daemons_stop;
121*795d594fSAndroid Build Coastguard Worker   static ArtMethod* java_lang_Daemons_waitForDaemonStart;
122*795d594fSAndroid Build Coastguard Worker   static ArtMethod* java_lang_Double_doubleToRawLongBits;
123*795d594fSAndroid Build Coastguard Worker   static ArtMethod* java_lang_Double_valueOf;
124*795d594fSAndroid Build Coastguard Worker   static ArtMethod* java_lang_Error_init;  // Only for the declaring class.
125*795d594fSAndroid Build Coastguard Worker   static ArtMethod* java_lang_Float_floatToRawIntBits;
126*795d594fSAndroid Build Coastguard Worker   static ArtMethod* java_lang_Float_valueOf;
127*795d594fSAndroid Build Coastguard Worker   static ArtMethod* java_lang_IllegalAccessError_init;  // Only for the declaring class.
128*795d594fSAndroid Build Coastguard Worker   static ArtMethod* java_lang_Integer_valueOf;
129*795d594fSAndroid Build Coastguard Worker   static ArtMethod* java_lang_Long_valueOf;
130*795d594fSAndroid Build Coastguard Worker   static ArtMethod* java_lang_NoClassDefFoundError_init;  // Only for the declaring class.
131*795d594fSAndroid Build Coastguard Worker   static ArtMethod* java_lang_OutOfMemoryError_init;  // Only for the declaring class.
132*795d594fSAndroid Build Coastguard Worker   static ArtMethod* java_lang_Runtime_nativeLoad;
133*795d594fSAndroid Build Coastguard Worker   static ArtMethod* java_lang_RuntimeException_init;  // Only for the declaring class.
134*795d594fSAndroid Build Coastguard Worker   static ArtMethod* java_lang_Short_valueOf;
135*795d594fSAndroid Build Coastguard Worker   static ArtMethod* java_lang_StackOverflowError_init;  // Only for the declaring class.
136*795d594fSAndroid Build Coastguard Worker   static ArtMethod* java_lang_String_charAt;
137*795d594fSAndroid Build Coastguard Worker   static ArtMethod* java_lang_Thread_dispatchUncaughtException;
138*795d594fSAndroid Build Coastguard Worker   static ArtMethod* java_lang_Thread_init;
139*795d594fSAndroid Build Coastguard Worker   static ArtMethod* java_lang_Thread_run;
140*795d594fSAndroid Build Coastguard Worker   static ArtMethod* java_lang_ThreadGroup_add;
141*795d594fSAndroid Build Coastguard Worker   static ArtMethod* java_lang_ThreadGroup_threadTerminated;
142*795d594fSAndroid Build Coastguard Worker   static ArtMethod* java_lang_invoke_MethodHandle_asType;
143*795d594fSAndroid Build Coastguard Worker   static ArtMethod* java_lang_invoke_MethodHandle_invokeExact;
144*795d594fSAndroid Build Coastguard Worker   static ArtMethod* java_lang_invoke_MethodHandleImpl_init;
145*795d594fSAndroid Build Coastguard Worker   static ArtMethod* java_lang_invoke_MethodHandles_lookup;
146*795d594fSAndroid Build Coastguard Worker   static ArtMethod* java_lang_invoke_MethodHandles_makeIdentity;
147*795d594fSAndroid Build Coastguard Worker   static ArtMethod* java_lang_invoke_MethodHandles_Lookup_findConstructor;
148*795d594fSAndroid Build Coastguard Worker   static ArtMethod* java_lang_invoke_MethodType_makeImpl;
149*795d594fSAndroid Build Coastguard Worker   static ArtMethod* java_lang_ref_FinalizerReference_add;
150*795d594fSAndroid Build Coastguard Worker   static ArtMethod* java_lang_ref_ReferenceQueue_add;
151*795d594fSAndroid Build Coastguard Worker   static ArtMethod* java_lang_reflect_InvocationTargetException_init;
152*795d594fSAndroid Build Coastguard Worker   static ArtMethod* java_lang_reflect_Parameter_init;
153*795d594fSAndroid Build Coastguard Worker   static ArtMethod* java_lang_reflect_Proxy_init;
154*795d594fSAndroid Build Coastguard Worker   static ArtMethod* java_lang_reflect_Proxy_invoke;
155*795d594fSAndroid Build Coastguard Worker   static ArtMethod* java_nio_Buffer_isDirect;
156*795d594fSAndroid Build Coastguard Worker   static ArtMethod* java_nio_DirectByteBuffer_init;
157*795d594fSAndroid Build Coastguard Worker   static ArtMethod* java_util_function_Consumer_accept;
158*795d594fSAndroid Build Coastguard Worker   static ArtMethod* jdk_internal_math_FloatingDecimal_getBinaryToASCIIConverter_D;
159*795d594fSAndroid Build Coastguard Worker   static ArtMethod* jdk_internal_math_FloatingDecimal_getBinaryToASCIIConverter_F;
160*795d594fSAndroid Build Coastguard Worker   static ArtMethod* jdk_internal_math_FloatingDecimal_BinaryToASCIIBuffer_getChars;
161*795d594fSAndroid Build Coastguard Worker   static ArtMethod* libcore_reflect_AnnotationFactory_createAnnotation;
162*795d594fSAndroid Build Coastguard Worker   static ArtMethod* libcore_reflect_AnnotationMember_init;
163*795d594fSAndroid Build Coastguard Worker   static ArtMethod* org_apache_harmony_dalvik_ddmc_DdmServer_broadcast;
164*795d594fSAndroid Build Coastguard Worker   static ArtMethod* org_apache_harmony_dalvik_ddmc_DdmServer_dispatch;
165*795d594fSAndroid Build Coastguard Worker 
166*795d594fSAndroid Build Coastguard Worker   static ArtField* dalvik_system_BaseDexClassLoader_pathList;
167*795d594fSAndroid Build Coastguard Worker   static ArtField* dalvik_system_BaseDexClassLoader_sharedLibraryLoaders;
168*795d594fSAndroid Build Coastguard Worker   static ArtField* dalvik_system_BaseDexClassLoader_sharedLibraryLoadersAfter;
169*795d594fSAndroid Build Coastguard Worker   static ArtField* dalvik_system_DexFile_cookie;
170*795d594fSAndroid Build Coastguard Worker   static ArtField* dalvik_system_DexFile_fileName;
171*795d594fSAndroid Build Coastguard Worker   static ArtField* dalvik_system_DexPathList_dexElements;
172*795d594fSAndroid Build Coastguard Worker   static ArtField* dalvik_system_DexPathList__Element_dexFile;
173*795d594fSAndroid Build Coastguard Worker   static ArtField* dalvik_system_VMRuntime_nonSdkApiUsageConsumer;
174*795d594fSAndroid Build Coastguard Worker   static ArtField* java_io_FileDescriptor_descriptor;
175*795d594fSAndroid Build Coastguard Worker   static ArtField* java_lang_ClassLoader_parent;
176*795d594fSAndroid Build Coastguard Worker   static ArtField* java_lang_String_EMPTY;
177*795d594fSAndroid Build Coastguard Worker   static ArtField* java_lang_Thread_parkBlocker;
178*795d594fSAndroid Build Coastguard Worker   static ArtField* java_lang_Thread_daemon;
179*795d594fSAndroid Build Coastguard Worker   static ArtField* java_lang_Thread_group;
180*795d594fSAndroid Build Coastguard Worker   static ArtField* java_lang_Thread_lock;
181*795d594fSAndroid Build Coastguard Worker   static ArtField* java_lang_Thread_name;
182*795d594fSAndroid Build Coastguard Worker   static ArtField* java_lang_Thread_priority;
183*795d594fSAndroid Build Coastguard Worker   static ArtField* java_lang_Thread_nativePeer;
184*795d594fSAndroid Build Coastguard Worker   static ArtField* java_lang_Thread_systemDaemon;
185*795d594fSAndroid Build Coastguard Worker   static ArtField* java_lang_Thread_unparkedBeforeStart;
186*795d594fSAndroid Build Coastguard Worker   static ArtField* java_lang_ThreadGroup_groups;
187*795d594fSAndroid Build Coastguard Worker   static ArtField* java_lang_ThreadGroup_ngroups;
188*795d594fSAndroid Build Coastguard Worker   static ArtField* java_lang_ThreadGroup_mainThreadGroup;
189*795d594fSAndroid Build Coastguard Worker   static ArtField* java_lang_ThreadGroup_name;
190*795d594fSAndroid Build Coastguard Worker   static ArtField* java_lang_ThreadGroup_parent;
191*795d594fSAndroid Build Coastguard Worker   static ArtField* java_lang_ThreadGroup_systemThreadGroup;
192*795d594fSAndroid Build Coastguard Worker   static ArtField* java_lang_Throwable_cause;
193*795d594fSAndroid Build Coastguard Worker   static ArtField* java_lang_Throwable_detailMessage;
194*795d594fSAndroid Build Coastguard Worker   static ArtField* java_lang_Throwable_stackTrace;
195*795d594fSAndroid Build Coastguard Worker   static ArtField* java_lang_Throwable_stackState;
196*795d594fSAndroid Build Coastguard Worker   static ArtField* java_lang_Throwable_suppressedExceptions;
197*795d594fSAndroid Build Coastguard Worker   static ArtField* java_nio_Buffer_address;
198*795d594fSAndroid Build Coastguard Worker   static ArtField* java_nio_Buffer_capacity;
199*795d594fSAndroid Build Coastguard Worker   static ArtField* java_nio_Buffer_elementSizeShift;
200*795d594fSAndroid Build Coastguard Worker   static ArtField* java_nio_Buffer_limit;
201*795d594fSAndroid Build Coastguard Worker   static ArtField* java_nio_Buffer_position;
202*795d594fSAndroid Build Coastguard Worker   static ArtField* java_nio_ByteBuffer_hb;
203*795d594fSAndroid Build Coastguard Worker   static ArtField* java_nio_ByteBuffer_isReadOnly;
204*795d594fSAndroid Build Coastguard Worker   static ArtField* java_nio_ByteBuffer_offset;
205*795d594fSAndroid Build Coastguard Worker   static ArtField* java_util_Collections_EMPTY_LIST;
206*795d594fSAndroid Build Coastguard Worker   static ArtField* java_util_concurrent_ThreadLocalRandom_seeder;
207*795d594fSAndroid Build Coastguard Worker   static ArtField* jdk_internal_math_FloatingDecimal_BinaryToASCIIBuffer_buffer;
208*795d594fSAndroid Build Coastguard Worker   static ArtField* jdk_internal_math_FloatingDecimal_ExceptionalBinaryToASCIIBuffer_image;
209*795d594fSAndroid Build Coastguard Worker   static ArtField* libcore_util_EmptyArray_STACK_TRACE_ELEMENT;
210*795d594fSAndroid Build Coastguard Worker   static ArtField* org_apache_harmony_dalvik_ddmc_Chunk_data;
211*795d594fSAndroid Build Coastguard Worker   static ArtField* org_apache_harmony_dalvik_ddmc_Chunk_length;
212*795d594fSAndroid Build Coastguard Worker   static ArtField* org_apache_harmony_dalvik_ddmc_Chunk_offset;
213*795d594fSAndroid Build Coastguard Worker   static ArtField* org_apache_harmony_dalvik_ddmc_Chunk_type;
214*795d594fSAndroid Build Coastguard Worker 
215*795d594fSAndroid Build Coastguard Worker   static ArtField* java_lang_Byte_ByteCache_cache;
216*795d594fSAndroid Build Coastguard Worker   static ArtField* java_lang_Character_CharacterCache_cache;
217*795d594fSAndroid Build Coastguard Worker   static ArtField* java_lang_Short_ShortCache_cache;
218*795d594fSAndroid Build Coastguard Worker   static ArtField* java_lang_Integer_IntegerCache_cache;
219*795d594fSAndroid Build Coastguard Worker   static ArtField* java_lang_Long_LongCache_cache;
220*795d594fSAndroid Build Coastguard Worker 
221*795d594fSAndroid Build Coastguard Worker   static ArtField* java_lang_Byte_value;
222*795d594fSAndroid Build Coastguard Worker   static ArtField* java_lang_Character_value;
223*795d594fSAndroid Build Coastguard Worker   static ArtField* java_lang_Short_value;
224*795d594fSAndroid Build Coastguard Worker   static ArtField* java_lang_Integer_value;
225*795d594fSAndroid Build Coastguard Worker   static ArtField* java_lang_Long_value;
226*795d594fSAndroid Build Coastguard Worker 
227*795d594fSAndroid Build Coastguard Worker   static constexpr ClassFromField<&dalvik_system_BaseDexClassLoader_pathList>
228*795d594fSAndroid Build Coastguard Worker       dalvik_system_BaseDexClassLoader;
229*795d594fSAndroid Build Coastguard Worker   static constexpr ClassFromMethod<&dalvik_system_DelegateLastClassLoader_init>
230*795d594fSAndroid Build Coastguard Worker       dalvik_system_DelegateLastClassLoader;
231*795d594fSAndroid Build Coastguard Worker   static constexpr ClassFromMethod<&dalvik_system_DexClassLoader_init>
232*795d594fSAndroid Build Coastguard Worker       dalvik_system_DexClassLoader;
233*795d594fSAndroid Build Coastguard Worker   static constexpr ClassFromField<&dalvik_system_DexFile_cookie> dalvik_system_DexFile;
234*795d594fSAndroid Build Coastguard Worker   static constexpr ClassFromField<&dalvik_system_DexPathList_dexElements> dalvik_system_DexPathList;
235*795d594fSAndroid Build Coastguard Worker   static constexpr ClassFromField<&dalvik_system_DexPathList__Element_dexFile>
236*795d594fSAndroid Build Coastguard Worker       dalvik_system_DexPathList__Element;
237*795d594fSAndroid Build Coastguard Worker   static constexpr ClassFromMethod<&dalvik_system_InMemoryDexClassLoader_init>
238*795d594fSAndroid Build Coastguard Worker       dalvik_system_InMemoryDexClassLoader;
239*795d594fSAndroid Build Coastguard Worker   static constexpr ClassFromMethod<&dalvik_system_PathClassLoader_init>
240*795d594fSAndroid Build Coastguard Worker       dalvik_system_PathClassLoader;
241*795d594fSAndroid Build Coastguard Worker   static constexpr ClassFromMethod<&java_lang_BootClassLoader_init> java_lang_BootClassLoader;
242*795d594fSAndroid Build Coastguard Worker   static constexpr ClassFromField<&java_lang_ClassLoader_parent> java_lang_ClassLoader;
243*795d594fSAndroid Build Coastguard Worker   static constexpr ClassFromMethod<&java_lang_Daemons_start> java_lang_Daemons;
244*795d594fSAndroid Build Coastguard Worker   static constexpr ClassFromMethod<&java_lang_Error_init> java_lang_Error;
245*795d594fSAndroid Build Coastguard Worker   static constexpr ClassFromMethod<&java_lang_IllegalAccessError_init>
246*795d594fSAndroid Build Coastguard Worker       java_lang_IllegalAccessError;
247*795d594fSAndroid Build Coastguard Worker   static constexpr ClassFromMethod<&java_lang_NoClassDefFoundError_init>
248*795d594fSAndroid Build Coastguard Worker       java_lang_NoClassDefFoundError;
249*795d594fSAndroid Build Coastguard Worker   static constexpr ClassFromMethod<&java_lang_OutOfMemoryError_init> java_lang_OutOfMemoryError;
250*795d594fSAndroid Build Coastguard Worker   static constexpr ClassFromMethod<&java_lang_RuntimeException_init> java_lang_RuntimeException;
251*795d594fSAndroid Build Coastguard Worker   static constexpr ClassFromMethod<&java_lang_StackOverflowError_init>
252*795d594fSAndroid Build Coastguard Worker       java_lang_StackOverflowError;
253*795d594fSAndroid Build Coastguard Worker   static constexpr ClassFromField<&java_lang_Thread_daemon> java_lang_Thread;
254*795d594fSAndroid Build Coastguard Worker   static constexpr ClassFromField<&java_lang_ThreadGroup_groups> java_lang_ThreadGroup;
255*795d594fSAndroid Build Coastguard Worker   static constexpr ClassFromMethod<&java_lang_invoke_MethodHandle_invokeExact>
256*795d594fSAndroid Build Coastguard Worker       java_lang_invoke_MethodHandle;
257*795d594fSAndroid Build Coastguard Worker   static constexpr ClassFromMethod<&java_lang_invoke_MethodType_makeImpl>
258*795d594fSAndroid Build Coastguard Worker       java_lang_invoke_MethodType;
259*795d594fSAndroid Build Coastguard Worker   static constexpr ClassFromMethod<&java_lang_reflect_InvocationTargetException_init>
260*795d594fSAndroid Build Coastguard Worker       java_lang_reflect_InvocationTargetException;
261*795d594fSAndroid Build Coastguard Worker   static constexpr ClassFromMethod<&java_lang_reflect_Parameter_init>
262*795d594fSAndroid Build Coastguard Worker       java_lang_reflect_Parameter;
263*795d594fSAndroid Build Coastguard Worker   static constexpr ClassFromField<&java_nio_Buffer_address> java_nio_Buffer;
264*795d594fSAndroid Build Coastguard Worker   static constexpr ClassFromField<&java_util_Collections_EMPTY_LIST> java_util_Collections;
265*795d594fSAndroid Build Coastguard Worker   static constexpr ClassFromField<&libcore_util_EmptyArray_STACK_TRACE_ELEMENT>
266*795d594fSAndroid Build Coastguard Worker       libcore_util_EmptyArray;
267*795d594fSAndroid Build Coastguard Worker 
268*795d594fSAndroid Build Coastguard Worker   static constexpr ClassFromField<&java_lang_Byte_ByteCache_cache> java_lang_Byte_ByteCache;
269*795d594fSAndroid Build Coastguard Worker   static constexpr ClassFromField<&java_lang_Character_CharacterCache_cache>
270*795d594fSAndroid Build Coastguard Worker       java_lang_Character_CharacterCache;
271*795d594fSAndroid Build Coastguard Worker   static constexpr ClassFromField<&java_lang_Short_ShortCache_cache> java_lang_Short_ShortCache;
272*795d594fSAndroid Build Coastguard Worker   static constexpr ClassFromField<&java_lang_Integer_IntegerCache_cache>
273*795d594fSAndroid Build Coastguard Worker       java_lang_Integer_IntegerCache;
274*795d594fSAndroid Build Coastguard Worker   static constexpr ClassFromField<&java_lang_Long_LongCache_cache> java_lang_Long_LongCache;
275*795d594fSAndroid Build Coastguard Worker 
276*795d594fSAndroid Build Coastguard Worker   static constexpr ClassFromMethod<&java_lang_Boolean_valueOf> java_lang_Boolean;
277*795d594fSAndroid Build Coastguard Worker   static constexpr ClassFromMethod<&java_lang_Byte_valueOf> java_lang_Byte;
278*795d594fSAndroid Build Coastguard Worker   static constexpr ClassFromMethod<&java_lang_Character_valueOf> java_lang_Character;
279*795d594fSAndroid Build Coastguard Worker   static constexpr ClassFromMethod<&java_lang_Short_valueOf> java_lang_Short;
280*795d594fSAndroid Build Coastguard Worker   static constexpr ClassFromMethod<&java_lang_Integer_valueOf> java_lang_Integer;
281*795d594fSAndroid Build Coastguard Worker   static constexpr ClassFromMethod<&java_lang_Float_valueOf> java_lang_Float;
282*795d594fSAndroid Build Coastguard Worker   static constexpr ClassFromMethod<&java_lang_Long_valueOf> java_lang_Long;
283*795d594fSAndroid Build Coastguard Worker   static constexpr ClassFromMethod<&java_lang_Double_valueOf> java_lang_Double;
284*795d594fSAndroid Build Coastguard Worker };
285*795d594fSAndroid Build Coastguard Worker 
286*795d594fSAndroid Build Coastguard Worker }  // namespace art
287*795d594fSAndroid Build Coastguard Worker 
288*795d594fSAndroid Build Coastguard Worker #endif  // ART_RUNTIME_WELL_KNOWN_CLASSES_H_
289