Several fixes for proper creation and use of vmap tables

Change-Id: I7696115af4263df18ede0777ae14de7a3a7ada3b
diff --git a/src/class_linker.cc b/src/class_linker.cc
index 64d4025..0232ee3 100644
--- a/src/class_linker.cc
+++ b/src/class_linker.cc
@@ -214,7 +214,9 @@
   Split(class_path, ':', parsed);
   for (size_t i = 0; i < parsed.size(); ++i) {
     const DexFile* dex_file = DexFile::Open(parsed[i], Runtime::Current()->GetHostPrefix());
-    if (dex_file != NULL) {
+    if (dex_file == NULL) {
+      LOG(WARNING) << "Failed to open dex file " << parsed[i];
+    } else {
       class_path_vector.push_back(dex_file);
     }
   }
@@ -223,7 +225,7 @@
 void ClassLinker::Init(const std::string& boot_class_path) {
   const Runtime* runtime = Runtime::Current();
   if (runtime->IsVerboseStartup()) {
-    LOG(INFO) << "ClassLinker::InitFrom entering";
+    LOG(INFO) << "ClassLinker::InitFrom entering boot_class_path=" << boot_class_path;
   }
 
   CHECK(!init_done_);
@@ -310,6 +312,7 @@
   // use AllocObjectArray to create DexCache instances
   std::vector<const DexFile*> boot_class_path_vector;
   CreateClassPath(boot_class_path, boot_class_path_vector);
+  CHECK_NE(0U, boot_class_path_vector.size());
   for (size_t i = 0; i != boot_class_path_vector.size(); ++i) {
     const DexFile* dex_file = boot_class_path_vector[i];
     CHECK(dex_file != NULL);