Mercurial > hg > graal-compiler
comparison src/share/vm/ci/ciEnv.cpp @ 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 | c124e2e7463e |
children | 5eb9169b1a14 |
comparison
equal
deleted
inserted
replaced
3958:075ea0ed9e7c | 3959:eda6988c0d81 |
---|---|
908 // recorded in the log. In debug mode check dependencies even if | 908 // recorded in the log. In debug mode check dependencies even if |
909 // the system dictionary hasn't changed to verify that no invalid | 909 // the system dictionary hasn't changed to verify that no invalid |
910 // dependencies were inserted. Any violated dependences in this | 910 // dependencies were inserted. Any violated dependences in this |
911 // case are dumped to the tty. | 911 // case are dumped to the tty. |
912 bool counter_changed = system_dictionary_modification_counter_changed(); | 912 bool counter_changed = system_dictionary_modification_counter_changed(); |
913 bool test_deps = counter_changed; | 913 |
914 DEBUG_ONLY(test_deps = true); | 914 bool verify_deps = trueInDebug; |
915 if (!test_deps) return; | 915 if (!counter_changed && !verify_deps) return; |
916 | 916 |
917 bool print_failures = false; | |
918 DEBUG_ONLY(print_failures = !counter_changed); | |
919 bool keep_going = (print_failures || xtty != NULL); | |
920 int klass_violations = 0; | 917 int klass_violations = 0; |
921 | |
922 for (Dependencies::DepStream deps(dependencies()); deps.next(); ) { | 918 for (Dependencies::DepStream deps(dependencies()); deps.next(); ) { |
923 if (!deps.is_klass_type()) continue; // skip non-klass dependencies | 919 if (!deps.is_klass_type()) continue; // skip non-klass dependencies |
924 klassOop witness = deps.check_dependency(); | 920 klassOop witness = deps.check_dependency(); |
925 if (witness != NULL) { | 921 if (witness != NULL) { |
926 klass_violations++; | 922 klass_violations++; |
927 if (print_failures) deps.print_dependency(witness, /*verbose=*/ true); | 923 if (!counter_changed) { |
928 } | 924 // Dependence failed but counter didn't change. Log a message |
929 // If there's no log and we're not sanity-checking, we're done. | 925 // describing what failed and allow the assert at the end to |
930 if (!keep_going) break; | 926 // trigger. |
927 deps.print_dependency(witness); | |
928 } else if (xtty == NULL) { | |
929 // If we're not logging then a single violation is sufficient, | |
930 // otherwise we want to log all the dependences which were | |
931 // violated. | |
932 break; | |
933 } | |
934 } | |
931 } | 935 } |
932 | 936 |
933 if (klass_violations != 0) { | 937 if (klass_violations != 0) { |
938 #ifdef ASSERT | |
939 if (!counter_changed && !PrintCompilation) { | |
940 // Print out the compile task that failed | |
941 _task->print_line(); | |
942 } | |
943 #endif | |
934 assert(counter_changed, "failed dependencies, but counter didn't change"); | 944 assert(counter_changed, "failed dependencies, but counter didn't change"); |
935 record_failure("concurrent class loading"); | 945 record_failure("concurrent class loading"); |
936 } | 946 } |
937 } | 947 } |
938 | 948 |