< prev index next >
src/share/vm/jvmci/jvmciCompiler.cpp
Print this page
rev 9941 : 8147432: JVMCI should report bailouts in PrintCompilation output
*** 132,152 ****
}
JVMCIRuntime::initialize_well_known_classes(CHECK_ABORT);
HandleMark hm;
- ResourceMark rm;
Handle receiver = JVMCIRuntime::get_HotSpotJVMCIRuntime(CHECK_ABORT);
JavaValue method_result(T_OBJECT);
JavaCallArguments args;
args.push_long((jlong) (address) method());
JavaCalls::call_static(&method_result, SystemDictionary::HotSpotResolvedJavaMethodImpl_klass(),
vmSymbols::fromMetaspace_name(), vmSymbols::method_fromMetaspace_signature(), &args, THREAD);
if (!HAS_PENDING_EXCEPTION) {
- JavaValue result(T_VOID);
JavaCallArguments args;
args.push_oop(receiver);
args.push_oop((oop)method_result.get_jobject());
args.push_int(entry_bci);
args.push_long((jlong) (address) env);
--- 132,151 ----
}
JVMCIRuntime::initialize_well_known_classes(CHECK_ABORT);
HandleMark hm;
Handle receiver = JVMCIRuntime::get_HotSpotJVMCIRuntime(CHECK_ABORT);
JavaValue method_result(T_OBJECT);
JavaCallArguments args;
args.push_long((jlong) (address) method());
JavaCalls::call_static(&method_result, SystemDictionary::HotSpotResolvedJavaMethodImpl_klass(),
vmSymbols::fromMetaspace_name(), vmSymbols::method_fromMetaspace_signature(), &args, THREAD);
+ JavaValue result(T_OBJECT);
if (!HAS_PENDING_EXCEPTION) {
JavaCallArguments args;
args.push_oop(receiver);
args.push_oop((oop)method_result.get_jobject());
args.push_int(entry_bci);
args.push_long((jlong) (address) env);
*** 162,176 ****
Handle exception(THREAD, PENDING_EXCEPTION);
CLEAR_PENDING_EXCEPTION;
java_lang_Throwable::java_printStackTrace(exception, THREAD);
! // Something went wrong so disable compilation at this level
! method->set_not_compilable(CompLevel_full_optimization);
} else {
_methodsCompiled++;
}
}
/**
* Aborts the VM due to an unexpected exception.
*/
--- 161,188 ----
Handle exception(THREAD, PENDING_EXCEPTION);
CLEAR_PENDING_EXCEPTION;
java_lang_Throwable::java_printStackTrace(exception, THREAD);
! env->set_failure("exception throw", false);
} else {
+ oop result_object = (oop) result.get_jobject();
+ if (result_object != NULL) {
+ oop failure_message = CompilationRequestResult::failureMessage(result_object);
+ if (failure_message != NULL) {
+ const char* failure_reason = failure_message != NULL ? java_lang_String::as_utf8_string(failure_message) : "unknown reason";
+ env->set_failure(failure_reason, CompilationRequestResult::retry(result_object));
+ } else {
+ if (env->task()->code() == NULL) {
+ env->set_failure("no nmethod produced", true);
+ } else {
+ env->task()->set_num_inlined_bytecodes(CompilationRequestResult::inlinedBytecodes(result_object));
_methodsCompiled++;
}
+ }
+ }
+ }
}
/**
* Aborts the VM due to an unexpected exception.
*/
< prev index next >