diff src/share/vm/runtime/sharedRuntime.cpp @ 3055:fecdb0a65fb2

runtime profiles exceptions at the call site
author Lukas Stadler <lukas.stadler@jku.at>
date Tue, 21 Jun 2011 11:13:52 +0200
parents 5ee0f57bb18c
children be4ca325525a
line wrap: on
line diff
--- a/src/share/vm/runtime/sharedRuntime.cpp	Mon Jun 20 11:47:57 2011 +0200
+++ b/src/share/vm/runtime/sharedRuntime.cpp	Tue Jun 21 11:13:52 2011 +0200
@@ -636,8 +636,15 @@
 
 #ifdef COMPILER1
   if (t == NULL && nm->is_compiled_by_c1()) {
-    assert(nm->unwind_handler_begin() != NULL, "");
-    return nm->unwind_handler_begin();
+    if (UseGraal) {
+      nm->make_not_entrant();
+      JavaThread::current()->set_exception_pc(ret_pc);
+      JavaThread::current()->set_exception_oop(exception());
+      return SharedRuntime::deopt_blob()->unpack_with_exception_in_tls();
+    } else {
+      assert(nm->unwind_handler_begin() != NULL, "");
+      return nm->unwind_handler_begin();
+    }
   }
 #endif