< prev index next >

src/share/vm/memory/universe.cpp

Print this page

        

@@ -1101,10 +1101,21 @@
     ResourceMark rm;
     heap()->print_on(log.trace_stream());
   }
 }
 
+bool Universe::should_verify_subset(const char* subset) {
+  if (VerifySubSet == NULL || VerifySubSet[0] == '\0') {
+    // VerifySubSet is not specified, verify everything
+    return true;
+  }
+  if (strstr(VerifySubSet, subset)) {
+    return true;
+  }
+  return false;
+}
+
 void Universe::verify(VerifyOption option, const char* prefix) {
   // The use of _verify_in_progress is a temporary work around for
   // 6320749.  Don't bother with a creating a class to set and clear
   // it since it is only used in this method and the control flow is
   // straight forward.

@@ -1120,37 +1131,59 @@
   HandleMark hm;  // Handles created during verification can be zapped
   _verify_count++;
 
   FormatBuffer<> title("Verifying %s", prefix);
   GCTraceTime(Info, gc, verify) tm(title.buffer());
+  if (should_verify_subset("threads")) {
   log_debug(gc, verify)("Threads");
   Threads::verify();
+  }
+  if (should_verify_subset("heap")) {
   log_debug(gc, verify)("Heap");
   heap()->verify(option);
+  }
+  if (should_verify_subset("symbol_table")) {
   log_debug(gc, verify)("SymbolTable");
   SymbolTable::verify();
+  }
+  if (should_verify_subset("string_table")) {
   log_debug(gc, verify)("StringTable");
   StringTable::verify();
+  }
+  if (should_verify_subset("codecache")) {
   {
     MutexLockerEx mu(CodeCache_lock, Mutex::_no_safepoint_check_flag);
     log_debug(gc, verify)("CodeCache");
     CodeCache::verify();
   }
+  }
+  if (should_verify_subset("dictionary")) {
   log_debug(gc, verify)("SystemDictionary");
   SystemDictionary::verify();
+  }
 #ifndef PRODUCT
+  if (should_verify_subset("classloader_data_graph")) {
   log_debug(gc, verify)("ClassLoaderDataGraph");
   ClassLoaderDataGraph::verify();
+  }
 #endif
+  if (should_verify_subset("metaspace")) {
   log_debug(gc, verify)("MetaspaceAux");
   MetaspaceAux::verify_free_chunks();
+  }
+  if (should_verify_subset("jni_handles")) {
   log_debug(gc, verify)("JNIHandles");
   JNIHandles::verify();
+  }
+  if (should_verify_subset("c-heap")) {
   log_debug(gc, verify)("C-heap");
   os::check_heap();
+  }
+  if (should_verify_subset("codecache_oops")) {
   log_debug(gc, verify)("CodeCache Oops");
   CodeCache::verify_oops();
+  }
 
   _verify_in_progress = false;
 }
 
 
< prev index next >