Mercurial > hg > graal-jvmci-8
diff src/share/vm/interpreter/interpreterRuntime.cpp @ 14909:4ca6dc0799b6
Backout jdk9 merge
author | Gilles Duboscq <duboscq@ssw.jku.at> |
---|---|
date | Tue, 01 Apr 2014 13:57:07 +0200 |
parents | d8041d695d19 |
children | 4062efea018b |
line wrap: on
line diff
--- a/src/share/vm/interpreter/interpreterRuntime.cpp Tue Apr 01 14:09:03 2014 +0200 +++ b/src/share/vm/interpreter/interpreterRuntime.cpp Tue Apr 01 13:57:07 2014 +0200 @@ -241,15 +241,18 @@ //------------------------------------------------------------------------------------------------------------------------ // Exceptions -void InterpreterRuntime::note_trap_inner(JavaThread* thread, int reason, - methodHandle trap_method, int trap_bci, TRAPS) { +// Assume the compiler is (or will be) interested in this event. +// If necessary, create an MDO to hold the information, and record it. +void InterpreterRuntime::note_trap(JavaThread* thread, int reason, TRAPS) { + assert(ProfileTraps, "call me only if profiling"); + methodHandle trap_method(thread, method(thread)); + if (trap_method.not_null()) { MethodData* trap_mdo = trap_method->method_data(); if (trap_mdo == NULL) { Method::build_interpreter_method_data(trap_method, THREAD); if (HAS_PENDING_EXCEPTION) { - assert((PENDING_EXCEPTION->is_a(SystemDictionary::OutOfMemoryError_klass())), - "we expect only an OOM error here"); + assert((PENDING_EXCEPTION->is_a(SystemDictionary::OutOfMemoryError_klass())), "we expect only an OOM error here"); CLEAR_PENDING_EXCEPTION; } trap_mdo = trap_method->method_data(); @@ -258,42 +261,12 @@ if (trap_mdo != NULL) { // Update per-method count of trap events. The interpreter // is updating the MDO to simulate the effect of compiler traps. + int trap_bci = trap_method->bci_from(bcp(thread)); Deoptimization::update_method_data_from_interpreter(trap_mdo, trap_bci, reason); } } } -// Assume the compiler is (or will be) interested in this event. -// If necessary, create an MDO to hold the information, and record it. -void InterpreterRuntime::note_trap(JavaThread* thread, int reason, TRAPS) { - assert(ProfileTraps, "call me only if profiling"); - methodHandle trap_method(thread, method(thread)); - int trap_bci = trap_method->bci_from(bcp(thread)); - note_trap_inner(thread, reason, trap_method, trap_bci, THREAD); -} - -#ifdef CC_INTERP -// As legacy note_trap, but we have more arguments. -IRT_ENTRY(void, InterpreterRuntime::note_trap(JavaThread* thread, int reason, Method *method, int trap_bci)) - methodHandle trap_method(method); - note_trap_inner(thread, reason, trap_method, trap_bci, THREAD); -IRT_END - -// Class Deoptimization is not visible in BytecodeInterpreter, so we need a wrapper -// for each exception. -void InterpreterRuntime::note_nullCheck_trap(JavaThread* thread, Method *method, int trap_bci) - { if (ProfileTraps) note_trap(thread, Deoptimization::Reason_null_check, method, trap_bci); } -void InterpreterRuntime::note_div0Check_trap(JavaThread* thread, Method *method, int trap_bci) - { if (ProfileTraps) note_trap(thread, Deoptimization::Reason_div0_check, method, trap_bci); } -void InterpreterRuntime::note_rangeCheck_trap(JavaThread* thread, Method *method, int trap_bci) - { if (ProfileTraps) note_trap(thread, Deoptimization::Reason_range_check, method, trap_bci); } -void InterpreterRuntime::note_classCheck_trap(JavaThread* thread, Method *method, int trap_bci) - { if (ProfileTraps) note_trap(thread, Deoptimization::Reason_class_check, method, trap_bci); } -void InterpreterRuntime::note_arrayCheck_trap(JavaThread* thread, Method *method, int trap_bci) - { if (ProfileTraps) note_trap(thread, Deoptimization::Reason_array_check, method, trap_bci); } -#endif // CC_INTERP - - static Handle get_preinitialized_exception(Klass* k, TRAPS) { // get klass InstanceKlass* klass = InstanceKlass::cast(k); @@ -464,7 +437,7 @@ #ifdef GRAAL if (h_method->method_data() != NULL) { ResourceMark rm(thread); - ProfileData* pdata = h_method->method_data()->allocate_bci_to_data(current_bci, NULL); + ProfileData* pdata = h_method->method_data()->allocate_bci_to_data(current_bci); if (pdata != NULL && pdata->is_BitData()) { BitData* bit_data = (BitData*) pdata; bit_data->set_exception_seen();