Mercurial > hg > truffle
comparison src/share/vm/ci/ciEnv.cpp @ 13383:938e1e64e28f
8028306: nsk stress tests, CodeCache fills, then safepoint asserts
Summary: Move handle_full_code_cache() out of block that forbids safepoints
Reviewed-by: kvn, iveresov
author | anoll |
---|---|
date | Thu, 14 Nov 2013 19:27:07 +0100 |
parents | e2509677809c |
children | 02f27ecb4f3a 183bd5c00828 |
comparison
equal
deleted
inserted
replaced
13382:570aaefce624 | 13383:938e1e64e28f |
---|---|
1001 compiler, comp_level); | 1001 compiler, comp_level); |
1002 | 1002 |
1003 // Free codeBlobs | 1003 // Free codeBlobs |
1004 code_buffer->free_blob(); | 1004 code_buffer->free_blob(); |
1005 | 1005 |
1006 if (nm == NULL) { | 1006 if (nm != NULL) { |
1007 // The CodeCache is full. Print out warning and disable compilation. | |
1008 record_failure("code cache is full"); | |
1009 { | |
1010 MutexUnlocker ml(Compile_lock); | |
1011 MutexUnlocker locker(MethodCompileQueue_lock); | |
1012 CompileBroker::handle_full_code_cache(); | |
1013 } | |
1014 } else { | |
1015 nm->set_has_unsafe_access(has_unsafe_access); | 1007 nm->set_has_unsafe_access(has_unsafe_access); |
1016 nm->set_has_wide_vectors(has_wide_vectors); | 1008 nm->set_has_wide_vectors(has_wide_vectors); |
1017 | 1009 |
1018 // Record successful registration. | 1010 // Record successful registration. |
1019 // (Put nm into the task handle *before* publishing to the Java heap.) | 1011 // (Put nm into the task handle *before* publishing to the Java heap.) |
1020 if (task() != NULL) task()->set_code(nm); | 1012 if (task() != NULL) { |
1013 task()->set_code(nm); | |
1014 } | |
1021 | 1015 |
1022 if (entry_bci == InvocationEntryBci) { | 1016 if (entry_bci == InvocationEntryBci) { |
1023 if (TieredCompilation) { | 1017 if (TieredCompilation) { |
1024 // If there is an old version we're done with it | 1018 // If there is an old version we're done with it |
1025 nmethod* old = method->code(); | 1019 nmethod* old = method->code(); |
1053 entry_bci); | 1047 entry_bci); |
1054 } | 1048 } |
1055 method->method_holder()->add_osr_nmethod(nm); | 1049 method->method_holder()->add_osr_nmethod(nm); |
1056 } | 1050 } |
1057 } | 1051 } |
1058 } | 1052 } // safepoints are allowed again |
1059 // JVMTI -- compiled method notification (must be done outside lock) | 1053 |
1060 if (nm != NULL) { | 1054 if (nm != NULL) { |
1055 // JVMTI -- compiled method notification (must be done outside lock) | |
1061 nm->post_compiled_method_load_event(); | 1056 nm->post_compiled_method_load_event(); |
1062 } | 1057 } else { |
1063 | 1058 // The CodeCache is full. Print out warning and disable compilation. |
1059 record_failure("code cache is full"); | |
1060 CompileBroker::handle_full_code_cache(); | |
1061 } | |
1064 } | 1062 } |
1065 | 1063 |
1066 | 1064 |
1067 // ------------------------------------------------------------------ | 1065 // ------------------------------------------------------------------ |
1068 // ciEnv::find_system_klass | 1066 // ciEnv::find_system_klass |