diff src/share/vm/c1/c1_Runtime1.cpp @ 4673:8021e46f4a99

another fix for resolving the issue with biased monitor and deoptimization
author Christian Haeubl <christian.haeubl@oracle.com>
date Wed, 22 Feb 2012 16:53:23 -0800
parents 723df37192d6
children 9d48ccb39292
line wrap: on
line diff
--- a/src/share/vm/c1/c1_Runtime1.cpp	Wed Feb 22 17:27:11 2012 +0100
+++ b/src/share/vm/c1/c1_Runtime1.cpp	Wed Feb 22 16:53:23 2012 -0800
@@ -558,7 +558,7 @@
     thread->set_exception_pc(pc);
 
     // the exception cache is used only by non-implicit exceptions
-    if (continuation != NULL) {
+    if (continuation != NULL && !SharedRuntime::deopt_blob()->contains(continuation)) {
       nm->add_handler_for_exception_and_pc(exception, pc, continuation);
     }
   }
@@ -595,7 +595,6 @@
     continuation = exception_handler_for_pc_helper(thread, exception, pc, nm);
   }
   // Back in JAVA, use no oops DON'T safepoint
-
   // Now check to see if the nmethod we were called from is now deoptimized.
   // If so we must return to the deopt blob and deoptimize the nmethod
   if (nm != NULL && caller_is_deopted()) {