Mercurial > hg > truffle
changeset 3959: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"); }