Add -verbose:startup

Change-Id: I1ef70c2a9e559893541bbbf381b6893808602555
diff --git a/src/runtime.cc b/src/runtime.cc
index eb5e498..a6977b2 100644
--- a/src/runtime.cc
+++ b/src/runtime.cc
@@ -24,7 +24,8 @@
 Runtime* Runtime::instance_ = NULL;
 
 Runtime::Runtime()
-    : default_stack_size_(Thread::kDefaultStackSize),
+    : verbose_startup_(false),
+      default_stack_size_(Thread::kDefaultStackSize),
       thread_list_(NULL),
       intern_table_(NULL),
       class_linker_(NULL),
@@ -359,6 +360,9 @@
 }
 
 void Runtime::Start() {
+  if (IsVerboseStartup()) {
+    LOG(INFO) << "Runtime::Start entering";
+  }
   InitNativeMethods();
 
   Thread::FinishStartup();
@@ -371,6 +375,10 @@
   started_ = true;
 
   StartDaemonThreads();
+
+  if (IsVerboseStartup()) {
+    LOG(INFO) << "Runtime::Start exiting";
+  }
 }
 
 void Runtime::StartDaemonThreads() {
@@ -397,6 +405,10 @@
     LOG(WARNING) << "Failed to parse options";
     return false;
   }
+  verbose_startup_ = options->IsVerbose("startup");
+  if (IsVerboseStartup()) {
+    LOG(INFO) << "Runtime::Init -verbose:startup enabled";
+  }
 
   boot_class_path_ = options->boot_class_path_string_;
   class_path_ = options->class_path_string_;
@@ -429,10 +441,16 @@
                                       intern_table_,
                                       Heap::GetBootSpace());
 
+  if (IsVerboseStartup()) {
+    LOG(INFO) << "Runtime::Init exiting";
+  }
   return true;
 }
 
 void Runtime::InitNativeMethods() {
+  if (IsVerboseStartup()) {
+    LOG(INFO) << "Runtime::InitNativeMethods entering";
+  }
   Thread* self = Thread::Current();
   JNIEnv* env = self->GetJniEnv();
 
@@ -450,6 +468,9 @@
   // Most JNI libraries can just use System.loadLibrary, but libcore can't because it's
   // the library that implements System.loadLibrary!
   LoadJniLibrary(instance_->GetJavaVM(), "javacore");
+  if (IsVerboseStartup()) {
+    LOG(INFO) << "Runtime::InitNativeMethods exiting";
+  }
 }
 
 void Runtime::RegisterRuntimeNativeMethods(JNIEnv* env) {