changeset 6428:6278ac5829ce

fix for deopt issue with -XX:-UseBiasedLocking (plus a cosmetic fix in graalCodeInstaller.cpp)
author Lukas Stadler <lukas.stadler@jku.at>
date Mon, 24 Sep 2012 18:51:23 +0200
parents 7d6f44854ee3
children 3638582c26eb
files src/share/vm/graal/graalCodeInstaller.cpp src/share/vm/runtime/deoptimization.cpp
diffstat 2 files changed, 6 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- 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);
 }
--- 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(&reg_map);
   // Make sure the calling nmethod is not getting deoptimized and removed