changeset 23329:bc5552dc384b

Use VM routines to print stack traces from C++ code.
author Roland Schatz <roland.schatz@oracle.com>
date Mon, 21 Mar 2016 13:52:18 +0100
parents d6cbb275d6ce
children 83b296a07c33
files src/share/vm/jvmci/jvmciCompiler.cpp src/share/vm/jvmci/jvmciRuntime.cpp src/share/vm/jvmci/jvmciRuntime.hpp
diffstat 3 files changed, 8 insertions(+), 22 deletions(-) [+]
line wrap: on
line diff
--- a/src/share/vm/jvmci/jvmciCompiler.cpp	Fri Mar 18 12:47:49 2016 -0700
+++ b/src/share/vm/jvmci/jvmciCompiler.cpp	Mon Mar 21 13:52:18 2016 +0100
@@ -155,10 +155,10 @@
     Handle throwable = PENDING_EXCEPTION;
     CLEAR_PENDING_EXCEPTION;
 
-    JVMCIRuntime::call_printStackTrace(throwable, THREAD);
-    if (HAS_PENDING_EXCEPTION) {
-      CLEAR_PENDING_EXCEPTION;
-    }
+    java_lang_Throwable::print(throwable, tty);
+    tty->cr();
+    java_lang_Throwable::print_stack_trace(throwable(), tty);
+
     env->set_failure("exception throw", false);
   } else {
     oop result_object = (oop) result.get_jobject();
--- a/src/share/vm/jvmci/jvmciRuntime.cpp	Fri Mar 18 12:47:49 2016 -0700
+++ b/src/share/vm/jvmci/jvmciRuntime.cpp	Mon Mar 21 13:52:18 2016 +0100
@@ -913,23 +913,14 @@
   return false;
 }
 
-void JVMCIRuntime::call_printStackTrace(Handle exception, Thread* thread) {
-  assert(exception->is_a(SystemDictionary::Throwable_klass()), "Throwable instance expected");
-  JavaValue result(T_VOID);
-  JavaCalls::call_virtual(&result,
-                          exception,
-                          KlassHandle(thread,
-                          SystemDictionary::Throwable_klass()),
-                          vmSymbols::printStackTrace_name(),
-                          vmSymbols::void_method_signature(),
-                          thread);
-}
-
 void JVMCIRuntime::abort_on_pending_exception(Handle exception, const char* message, bool dump_core) {
   Thread* THREAD = Thread::current();
   CLEAR_PENDING_EXCEPTION;
   tty->print_raw_cr(message);
-  call_printStackTrace(exception, THREAD);
+
+  java_lang_Throwable::print(exception, tty);
+  tty->cr();
+  java_lang_Throwable::print_stack_trace(exception(), tty);
 
   // Give other aborting threads to also print their stack traces.
   // This can be very useful when debugging class initialization
--- a/src/share/vm/jvmci/jvmciRuntime.hpp	Fri Mar 18 12:47:49 2016 -0700
+++ b/src/share/vm/jvmci/jvmciRuntime.hpp	Mon Mar 21 13:52:18 2016 +0100
@@ -155,11 +155,6 @@
    */
   static void abort_on_pending_exception(Handle exception, const char* message, bool dump_core = false);
 
-  /**
-   * Calls Throwable.printStackTrace() on a given exception.
-   */
-  static void call_printStackTrace(Handle exception, Thread* thread);
-
 #define CHECK_ABORT THREAD); \
   if (HAS_PENDING_EXCEPTION) { \
     char buf[256]; \