src/share/vm/ci/ciEnv.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File
*** old/src/share/vm/ci/ciEnv.cpp Mon Mar 24 16:31:42 2014
--- new/src/share/vm/ci/ciEnv.cpp Mon Mar 24 16:31:42 2014
*** 924,934 ****
--- 924,935 ----
ExceptionHandlerTable* handler_table,
ImplicitExceptionTable* inc_table,
AbstractCompiler* compiler,
int comp_level,
bool has_unsafe_access,
! bool has_wide_vectors) {
! bool has_wide_vectors,
+ RTMState rtm_state) {
VM_ENTRY_MARK;
nmethod* nm = NULL;
{
// To prevent compile queue updates.
MutexLocker locker(MethodCompileQueue_lock, THREAD);
*** 971,980 ****
--- 972,990 ----
validate_compile_task_dependencies(target);
}
methodHandle method(THREAD, target->get_Method());
+ #if INCLUDE_RTM_OPT
+ if (!failing() && (rtm_state != NoRTM) &&
+ (method()->method_data() != NULL) &&
+ (method()->method_data()->rtm_state() != rtm_state)) {
+ // Preemptive decompile if rtm state was changed.
+ record_failure("RTM state change invalidated rtm code");
+ }
+ #endif
+
if (failing()) {
// While not a true deoptimization, it is a preemptive decompile.
MethodData* mdo = method()->method_data();
if (mdo != NULL) {
mdo->inc_decompile_count();
*** 997,1007 ****
--- 1007,1019 ----
orig_pc_offset,
debug_info(), dependencies(), code_buffer,
frame_words, oop_map_set,
handler_table, inc_table,
compiler, comp_level);
+ #if INCLUDE_RTM_OPT
+ nm->set_rtm_state(rtm_state);
+ #endif
// Free codeBlobs
code_buffer->free_blob();
if (nm != NULL) {
nm->set_has_unsafe_access(has_unsafe_access);
src/share/vm/ci/ciEnv.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File