| /* | |
| * Copyright (C) 2012 The Android Open Source Project | |
| * | |
| * Licensed under the Apache License, Version 2.0 (the "License"); | |
| * you may not use this file except in compliance with the License. | |
| * You may obtain a copy of the License at | |
| * | |
| * http://www.apache.org/licenses/LICENSE-2.0 | |
| * | |
| * Unless required by applicable law or agreed to in writing, software | |
| * distributed under the License is distributed on an "AS IS" BASIS, | |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| * See the License for the specific language governing permissions and | |
| * limitations under the License. | |
| */ | |
| #ifndef ART_RUNTIME_WELL_KNOWN_CLASSES_H_ | |
| #define ART_RUNTIME_WELL_KNOWN_CLASSES_H_ | |
| #include "base/mutex.h" | |
| #include "jni.h" | |
| namespace art { | |
| namespace mirror { | |
| class Class; | |
| } // namespace mirror | |
| // Various classes used in JNI. We cache them so we don't have to keep looking | |
| // them up. Similar to libcore's JniConstants (except there's no overlap, so | |
| // we keep them separate). | |
| jmethodID CacheMethod(JNIEnv* env, jclass c, bool is_static, const char* name, const char* signature); | |
| struct WellKnownClasses { | |
| public: | |
| static void Init(JNIEnv* env); // Run before native methods are registered. | |
| static void LateInit(JNIEnv* env); // Run after native methods are registered. | |
| static mirror::Class* ToClass(jclass global_jclass) | |
| SHARED_LOCKS_REQUIRED(Locks::mutator_lock_); | |
| static jclass com_android_dex_Dex; | |
| static jclass dalvik_system_PathClassLoader; | |
| static jclass java_lang_ClassLoader; | |
| static jclass java_lang_ClassNotFoundException; | |
| static jclass java_lang_Daemons; | |
| static jclass java_lang_Error; | |
| static jclass java_lang_Object; | |
| static jclass java_lang_reflect_AbstractMethod; | |
| static jclass java_lang_reflect_ArtMethod; | |
| static jclass java_lang_reflect_Constructor; | |
| static jclass java_lang_reflect_Field; | |
| static jclass java_lang_reflect_Method; | |
| static jclass java_lang_reflect_Proxy; | |
| static jclass java_lang_RuntimeException; | |
| static jclass java_lang_StackOverflowError; | |
| static jclass java_lang_String; | |
| static jclass java_lang_System; | |
| static jclass java_lang_Thread; | |
| static jclass java_lang_ThreadGroup; | |
| static jclass java_lang_Thread$UncaughtExceptionHandler; | |
| static jclass java_lang_Throwable; | |
| static jclass java_util_Collections; | |
| static jclass java_nio_DirectByteBuffer; | |
| static jclass libcore_util_EmptyArray; | |
| static jclass org_apache_harmony_dalvik_ddmc_Chunk; | |
| static jclass org_apache_harmony_dalvik_ddmc_DdmServer; | |
| static jmethodID com_android_dex_Dex_create; | |
| static jmethodID java_lang_Boolean_valueOf; | |
| static jmethodID java_lang_Byte_valueOf; | |
| static jmethodID java_lang_Character_valueOf; | |
| static jmethodID java_lang_ClassLoader_loadClass; | |
| static jmethodID java_lang_ClassNotFoundException_init; | |
| static jmethodID java_lang_Daemons_requestGC; | |
| static jmethodID java_lang_Daemons_requestHeapTrim; | |
| static jmethodID java_lang_Daemons_start; | |
| static jmethodID java_lang_Double_valueOf; | |
| static jmethodID java_lang_Float_valueOf; | |
| static jmethodID java_lang_Integer_valueOf; | |
| static jmethodID java_lang_Long_valueOf; | |
| static jmethodID java_lang_ref_FinalizerReference_add; | |
| static jmethodID java_lang_ref_ReferenceQueue_add; | |
| static jmethodID java_lang_reflect_Proxy_invoke; | |
| static jmethodID java_lang_Runtime_nativeLoad; | |
| static jmethodID java_lang_Short_valueOf; | |
| static jmethodID java_lang_System_runFinalization; | |
| static jmethodID java_lang_Thread_init; | |
| static jmethodID java_lang_Thread_run; | |
| static jmethodID java_lang_Thread$UncaughtExceptionHandler_uncaughtException; | |
| static jmethodID java_lang_ThreadGroup_removeThread; | |
| static jmethodID java_nio_DirectByteBuffer_init; | |
| static jmethodID org_apache_harmony_dalvik_ddmc_DdmServer_broadcast; | |
| static jmethodID org_apache_harmony_dalvik_ddmc_DdmServer_dispatch; | |
| static jfieldID java_lang_reflect_AbstractMethod_artMethod; | |
| static jfieldID java_lang_reflect_Field_artField; | |
| static jfieldID java_lang_reflect_Proxy_h; | |
| static jfieldID java_lang_Thread_daemon; | |
| static jfieldID java_lang_Thread_group; | |
| static jfieldID java_lang_Thread_lock; | |
| static jfieldID java_lang_Thread_name; | |
| static jfieldID java_lang_Thread_priority; | |
| static jfieldID java_lang_Thread_uncaughtHandler; | |
| static jfieldID java_lang_Thread_nativePeer; | |
| static jfieldID java_lang_ThreadGroup_mainThreadGroup; | |
| static jfieldID java_lang_ThreadGroup_name; | |
| static jfieldID java_lang_ThreadGroup_systemThreadGroup; | |
| static jfieldID java_nio_DirectByteBuffer_capacity; | |
| static jfieldID java_nio_DirectByteBuffer_effectiveDirectAddress; | |
| static jfieldID org_apache_harmony_dalvik_ddmc_Chunk_data; | |
| static jfieldID org_apache_harmony_dalvik_ddmc_Chunk_length; | |
| static jfieldID org_apache_harmony_dalvik_ddmc_Chunk_offset; | |
| static jfieldID org_apache_harmony_dalvik_ddmc_Chunk_type; | |
| }; | |
| } // namespace art | |
| #endif // ART_RUNTIME_WELL_KNOWN_CLASSES_H_ |