# HG changeset patch # User Lukas Stadler # Date 1348505483 -7200 # Node ID 6278ac5829ce719627d29ac98cdd51feedfda690 # Parent 7d6f44854ee3bd4fea4f19aa4422f5478ea171cb fix for deopt issue with -XX:-UseBiasedLocking (plus a cosmetic fix in graalCodeInstaller.cpp) diff -r 7d6f44854ee3 -r 6278ac5829ce src/share/vm/graal/graalCodeInstaller.cpp --- a/src/share/vm/graal/graalCodeInstaller.cpp Mon Sep 24 11:00:35 2012 +0200 +++ b/src/share/vm/graal/graalCodeInstaller.cpp Mon Sep 24 18:51:23 2012 +0200 @@ -510,10 +510,7 @@ DebugToken* expressions_token = _debug_recorder->create_scope_values(expressions); DebugToken* monitors_token = _debug_recorder->create_monitor_values(monitors); - bool throw_exception = false; - if (BytecodeFrame::rethrowException(frame)) { - throw_exception = true; - } + bool throw_exception = BytecodeFrame::rethrowException(frame); _debug_recorder->describe_scope(pc_offset, method, NULL, bci, reexecute, throw_exception, false, false, locals_token, expressions_token, monitors_token); } diff -r 7d6f44854ee3 -r 6278ac5829ce src/share/vm/runtime/deoptimization.cpp --- a/src/share/vm/runtime/deoptimization.cpp Mon Sep 24 11:00:35 2012 +0200 +++ b/src/share/vm/runtime/deoptimization.cpp Mon Sep 24 18:51:23 2012 +0200 @@ -1261,7 +1261,12 @@ thread->inc_in_deopt_handler(); // We need to update the map if we have biased locking. +#ifdef GRAAL + // (lstadler) Graal might need to get an exception from the stack, which in turn requires the register map to be valid + RegisterMap reg_map(thread, true); +#else RegisterMap reg_map(thread, UseBiasedLocking); +#endif frame stub_frame = thread->last_frame(); frame fr = stub_frame.sender(®_map); // Make sure the calling nmethod is not getting deoptimized and removed