Improve debug-ability of native method registration
If we fail to register a native we construct a stack trace which needs
Throwable and stack trace support. Registering Throwable's natives first
and making Throwable a root supports this. Previously we could only
generate a stack trace when thread start up was complete.
Change-Id: Icc7c1657988c7f36aceb1d4f3e61e7218f55e055
diff --git a/src/runtime.cc b/src/runtime.cc
index d7b0d15..579e591 100644
--- a/src/runtime.cc
+++ b/src/runtime.cc
@@ -650,6 +650,8 @@
void Runtime::RegisterRuntimeNativeMethods(JNIEnv* env) {
#define REGISTER(FN) extern void FN(JNIEnv*); FN(env)
+ // Register Throwable first so that registration of other native methods can throw exceptions
+ REGISTER(register_java_lang_Throwable);
REGISTER(register_dalvik_system_DexFile);
REGISTER(register_dalvik_system_VMDebug);
REGISTER(register_dalvik_system_VMRuntime);
@@ -661,7 +663,6 @@
REGISTER(register_java_lang_String);
REGISTER(register_java_lang_System);
REGISTER(register_java_lang_Thread);
- REGISTER(register_java_lang_Throwable);
REGISTER(register_java_lang_VMClassLoader);
REGISTER(register_java_lang_reflect_Array);
REGISTER(register_java_lang_reflect_Constructor);