src/share/vm/ci/ciEnv.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File
*** old/src/share/vm/ci/ciEnv.cpp Tue Sep 20 10:34:10 2011
--- new/src/share/vm/ci/ciEnv.cpp Tue Sep 20 10:34:10 2011
*** 908,938 ****
--- 908,948 ----
// recorded in the log. In debug mode check dependencies even if
// the system dictionary hasn't changed to verify that no invalid
// 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);
int klass_violations = 0;
! 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,
+ // other 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");
}
}
src/share/vm/ci/ciEnv.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File