Start adding implementations for runtime-provided native methods.

The library can't do everything...

Change-Id: Ib808c00570c7214aeb2ca058b1a66cacbeb372f1
diff --git a/src/runtime.cc b/src/runtime.cc
index b126ad9..01abc44 100644
--- a/src/runtime.cc
+++ b/src/runtime.cc
@@ -63,6 +63,14 @@
   // notreached
 }
 
+void Runtime::CallExitHook(jint status) {
+  if (exit_ != NULL) {
+    ScopedThreadStateChange tsc(Thread::Current(), Thread::kNative);
+    exit_(status);
+    LOG(WARNING) << "Exit hook returned instead of exiting!";
+  }
+}
+
 // Parse a string of the form /[0-9]+[kKmMgG]?/, which is used to specify
 // memory sizes.  [kK] indicates kilobytes, [mM] megabytes, and
 // [gG] gigabytes.
@@ -356,10 +364,10 @@
   //REGISTER(register_dalvik_system_VMStack);
   //REGISTER(register_dalvik_system_Zygote);
   //REGISTER(register_java_lang_Class);
-  //REGISTER(register_java_lang_Object);
-  //REGISTER(register_java_lang_Runtime);
-  //REGISTER(register_java_lang_String);
-  //REGISTER(register_java_lang_System_); // The _ avoids collision with libcore.
+  REGISTER(register_java_lang_Object);
+  REGISTER(register_java_lang_Runtime);
+  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);
@@ -369,7 +377,7 @@
   //REGISTER(register_java_lang_reflect_Field);
   //REGISTER(register_java_lang_reflect_Method);
   //REGISTER(register_java_lang_reflect_Proxy);
-  //REGISTER(register_java_util_concurrent_atomic_AtomicLong);
+  REGISTER(register_java_util_concurrent_atomic_AtomicLong);
   //REGISTER(register_org_apache_harmony_dalvik_ddmc_DdmServer);
   //REGISTER(register_org_apache_harmony_dalvik_ddmc_DdmVmInternal);
   //REGISTER(register_sun_misc_Unsafe);