changeset 2720:eda6988c0d81

7092236: java/util/EnumSet/EnumSetBash.java fails Reviewed-by: kvn, twisti, jrose
author never
date Tue, 20 Sep 2011 23:50:16 -0700
parents 075ea0ed9e7c
children f08d439fab8c
files src/share/vm/ci/ciEnv.cpp
diffstat 1 files changed, 20 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/src/share/vm/ci/ciEnv.cpp	Tue Sep 20 08:39:40 2011 -0700
+++ b/src/share/vm/ci/ciEnv.cpp	Tue Sep 20 23:50:16 2011 -0700
@@ -910,27 +910,37 @@
   // dependencies were inserted.  Any violated dependences in this
   // case are dumped to the tty.
   bool counter_changed = system_dictionary_modification_counter_changed();
-  bool test_deps = counter_changed;
-  DEBUG_ONLY(test_deps = true);
-  if (!test_deps)  return;
 
-  bool print_failures = false;
-  DEBUG_ONLY(print_failures = !counter_changed);
-  bool keep_going = (print_failures || xtty != NULL);
+  bool verify_deps = trueInDebug;
+  if (!counter_changed && !verify_deps)  return;
+
   int klass_violations = 0;
-
   for (Dependencies::DepStream deps(dependencies()); deps.next(); ) {
     if (!deps.is_klass_type())  continue;  // skip non-klass dependencies
     klassOop witness = deps.check_dependency();
     if (witness != NULL) {
       klass_violations++;
-      if (print_failures)  deps.print_dependency(witness, /*verbose=*/ true);
+      if (!counter_changed) {
+        // Dependence failed but counter didn't change.  Log a message
+        // describing what failed and allow the assert at the end to
+        // trigger.
+        deps.print_dependency(witness);
+      } else if (xtty == NULL) {
+        // If we're not logging then a single violation is sufficient,
+        // otherwise we want to log all the dependences which were
+        // violated.
+        break;
+      }
     }
-    // If there's no log and we're not sanity-checking, we're done.
-    if (!keep_going)  break;
   }
 
   if (klass_violations != 0) {
+#ifdef ASSERT
+    if (!counter_changed && !PrintCompilation) {
+      // Print out the compile task that failed
+      _task->print_line();
+    }
+#endif
     assert(counter_changed, "failed dependencies, but counter didn't change");
     record_failure("concurrent class loading");
   }