diff src/share/vm/graal/graalRuntime.cpp @ 9820:1b60f639ac4b

implemented alternative implementation for loading the exception object from the thread at the start of an exception dispatcher
author Doug Simon <doug.simon@oracle.com>
date Sat, 25 May 2013 23:42:11 +0200
parents aa8f3fc0a9a9
children 62ea8789b88a
line wrap: on
line diff
--- a/src/share/vm/graal/graalRuntime.cpp	Sat May 25 23:33:03 2013 +0200
+++ b/src/share/vm/graal/graalRuntime.cpp	Sat May 25 23:42:11 2013 +0200
@@ -380,6 +380,13 @@
   report_vm_error(__FILE__, __LINE__, error_msg, detail_msg);
 JRT_END
 
+JRT_LEAF(oop, GraalRuntime::load_and_clear_exception(JavaThread* thread))
+  oop exception = thread->exception_oop();
+  assert(exception != NULL, "npe");
+  thread->set_exception_oop(NULL);
+  thread->set_exception_pc(0);
+  return exception;
+JRT_END
 
 JRT_LEAF(void, GraalRuntime::log_printf(JavaThread* thread, oop format, jlong v1, jlong v2, jlong v3))
   ResourceMark rm;