1500 nmethod* nm = CodeCache::find_nmethod(caller_frame.pc()); |
1500 nmethod* nm = CodeCache::find_nmethod(caller_frame.pc()); |
1501 assert (nm != NULL, "no more nmethod?"); |
1501 assert (nm != NULL, "no more nmethod?"); |
1502 nm->make_not_entrant(); |
1502 nm->make_not_entrant(); |
1503 |
1503 |
1504 methodHandle m(nm->method()); |
1504 methodHandle m(nm->method()); |
1505 if (ProfileInterpreter) { |
1505 MethodData* mdo = m->method_data(); |
1506 MethodData* mdo = m->method_data(); |
1506 |
1507 |
1507 if (mdo == NULL && !HAS_PENDING_EXCEPTION) { |
1508 if (mdo == NULL && !HAS_PENDING_EXCEPTION) { |
1508 // Build an MDO. Ignore errors like OutOfMemory; |
1509 // Build an MDO. Ignore errors like OutOfMemory; |
1509 // that simply means we won't have an MDO to update. |
1510 // that simply means we won't have an MDO to update. |
1510 Method::build_interpreter_method_data(m, THREAD); |
1511 Method::build_interpreter_method_data(m, THREAD); |
1511 if (HAS_PENDING_EXCEPTION) { |
1512 if (HAS_PENDING_EXCEPTION) { |
1512 assert((PENDING_EXCEPTION->is_a(SystemDictionary::OutOfMemoryError_klass())), "we expect only an OOM error here"); |
1513 assert((PENDING_EXCEPTION->is_a(SystemDictionary::OutOfMemoryError_klass())), "we expect only an OOM error here"); |
1513 CLEAR_PENDING_EXCEPTION; |
1514 CLEAR_PENDING_EXCEPTION; |
1514 } |
1515 } |
1515 mdo = m->method_data(); |
1516 mdo = m->method_data(); |
1516 } |
1517 } |
1517 |
1518 |
1518 if (mdo != NULL) { |
1519 if (mdo != NULL) { |
1519 mdo->inc_trap_count(Deoptimization::Reason_none); |
1520 mdo->inc_trap_count(Deoptimization::Reason_none); |
|
1521 } |
|
1522 } |
1520 } |
1523 |
1521 |
1524 if (TracePredicateFailedTraps) { |
1522 if (TracePredicateFailedTraps) { |
1525 stringStream ss1, ss2; |
1523 stringStream ss1, ss2; |
1526 vframeStream vfst(thread); |
1524 vframeStream vfst(thread); |