diff -r 390e8993b88e -r 4dbcb3a642d2 hotspot/src/share/vm/prims/jvm.cpp --- a/hotspot/src/share/vm/prims/jvm.cpp Tue Mar 22 18:41:09 2016 -0700 +++ b/hotspot/src/share/vm/prims/jvm.cpp Wed Mar 23 23:36:29 2016 +0100 @@ -210,9 +210,9 @@ const char * to = to_class->external_name(); // print in a single call to reduce interleaving between threads if (source_file != NULL) { - log_info(classresolve)("%s %s %s:%d (%s)", from, to, source_file, line_number, trace); + log_debug(classresolve)("%s %s %s:%d (%s)", from, to, source_file, line_number, trace); } else { - log_info(classresolve)("%s %s (%s)", from, to, trace); + log_debug(classresolve)("%s %s (%s)", from, to, trace); } } } @@ -518,19 +518,13 @@ JVM_END -JVM_ENTRY(jint, JVM_GetStackTraceDepth(JNIEnv *env, jobject throwable)) - JVMWrapper("JVM_GetStackTraceDepth"); - oop exception = JNIHandles::resolve(throwable); - return java_lang_Throwable::get_stack_trace_depth(exception, THREAD); -JVM_END - - -JVM_ENTRY(jobject, JVM_GetStackTraceElement(JNIEnv *env, jobject throwable, jint index)) - JVMWrapper("JVM_GetStackTraceElement"); - JvmtiVMObjectAllocEventCollector oam; // This ctor (throughout this module) may trigger a safepoint/GC - oop exception = JNIHandles::resolve(throwable); - oop element = java_lang_Throwable::get_stack_trace_element(exception, index, CHECK_NULL); - return JNIHandles::make_local(env, element); +JVM_ENTRY(void, JVM_GetStackTraceElements(JNIEnv *env, jobject throwable, jobjectArray stackTrace)) + JVMWrapper("JVM_GetStackTraceElements"); + Handle exception(THREAD, JNIHandles::resolve(throwable)); + objArrayOop st = objArrayOop(JNIHandles::resolve(stackTrace)); + objArrayHandle stack_trace(THREAD, st); + // Fill in the allocated stack trace + java_lang_Throwable::get_stack_trace_elements(exception, stack_trace, CHECK); JVM_END @@ -839,7 +833,7 @@ return NULL; } - if (log_is_enabled(Info, classresolve)) { + if (log_is_enabled(Debug, classresolve)) { trace_class_resolution(k); } return (jclass) JNIHandles::make_local(env, k->java_mirror()); @@ -876,7 +870,7 @@ jclass result = find_class_from_class_loader(env, h_name, init, h_loader, h_prot, false, THREAD); - if (log_is_enabled(Info, classresolve) && result != NULL) { + if (log_is_enabled(Debug, classresolve) && result != NULL) { trace_class_resolution(java_lang_Class::as_Klass(JNIHandles::resolve_non_null(result))); } return result; @@ -906,7 +900,7 @@ jclass result = find_class_from_class_loader(env, h_name, init, h_loader, h_prot, true, thread); - if (log_is_enabled(Info, classresolve) && result != NULL) { + if (log_is_enabled(Debug, classresolve) && result != NULL) { // this function is generally only used for class loading during verification. ResourceMark rm; oop from_mirror = JNIHandles::resolve_non_null(from); @@ -916,7 +910,7 @@ oop mirror = JNIHandles::resolve_non_null(result); Klass* to_class = java_lang_Class::as_Klass(mirror); const char * to = to_class->external_name(); - log_info(classresolve)("%s %s (verification)", from_name, to); + log_debug(classresolve)("%s %s (verification)", from_name, to); } return result; @@ -984,7 +978,7 @@ &st, CHECK_NULL); - if (log_is_enabled(Info, classresolve) && k != NULL) { + if (log_is_enabled(Debug, classresolve) && k != NULL) { trace_class_resolution(k); }