equal
deleted
inserted
replaced
959 ExceptionHandlerTable* handler_table, |
959 ExceptionHandlerTable* handler_table, |
960 ImplicitExceptionTable* inc_table, |
960 ImplicitExceptionTable* inc_table, |
961 AbstractCompiler* compiler, |
961 AbstractCompiler* compiler, |
962 int comp_level, |
962 int comp_level, |
963 bool has_unsafe_access, |
963 bool has_unsafe_access, |
964 bool has_wide_vectors) { |
964 bool has_wide_vectors, |
|
965 RTMState rtm_state) { |
965 VM_ENTRY_MARK; |
966 VM_ENTRY_MARK; |
966 nmethod* nm = NULL; |
967 nmethod* nm = NULL; |
967 { |
968 { |
968 // To prevent compile queue updates. |
969 // To prevent compile queue updates. |
969 MutexLocker locker(MethodCompileQueue_lock, THREAD); |
970 MutexLocker locker(MethodCompileQueue_lock, THREAD); |
999 // Check for {class loads, evolution, breakpoints, ...} during compilation |
1000 // Check for {class loads, evolution, breakpoints, ...} during compilation |
1000 validate_compile_task_dependencies(target); |
1001 validate_compile_task_dependencies(target); |
1001 } |
1002 } |
1002 |
1003 |
1003 methodHandle method(THREAD, target->get_Method()); |
1004 methodHandle method(THREAD, target->get_Method()); |
|
1005 |
|
1006 #if INCLUDE_RTM_OPT |
|
1007 if (!failing() && (rtm_state != NoRTM) && |
|
1008 (method()->method_data() != NULL) && |
|
1009 (method()->method_data()->rtm_state() != rtm_state)) { |
|
1010 // Preemptive decompile if rtm state was changed. |
|
1011 record_failure("RTM state change invalidated rtm code"); |
|
1012 } |
|
1013 #endif |
1004 |
1014 |
1005 if (failing()) { |
1015 if (failing()) { |
1006 // While not a true deoptimization, it is a preemptive decompile. |
1016 // While not a true deoptimization, it is a preemptive decompile. |
1007 MethodData* mdo = method()->method_data(); |
1017 MethodData* mdo = method()->method_data(); |
1008 if (mdo != NULL) { |
1018 if (mdo != NULL) { |
1026 orig_pc_offset, |
1036 orig_pc_offset, |
1027 debug_info(), dependencies(), code_buffer, |
1037 debug_info(), dependencies(), code_buffer, |
1028 frame_words, oop_map_set, |
1038 frame_words, oop_map_set, |
1029 handler_table, inc_table, |
1039 handler_table, inc_table, |
1030 compiler, comp_level); |
1040 compiler, comp_level); |
1031 |
1041 #if INCLUDE_RTM_OPT |
|
1042 nm->set_rtm_state(rtm_state); |
|
1043 #endif |
1032 // Free codeBlobs |
1044 // Free codeBlobs |
1033 code_buffer->free_blob(); |
1045 code_buffer->free_blob(); |
1034 |
1046 |
1035 if (nm != NULL) { |
1047 if (nm != NULL) { |
1036 nm->set_has_unsafe_access(has_unsafe_access); |
1048 nm->set_has_unsafe_access(has_unsafe_access); |