977 MutexLocker ml(RetData_lock); |
977 MutexLocker ml(RetData_lock); |
978 |
978 |
979 // ProfileData is essentially a wrapper around a derived oop, so we |
979 // ProfileData is essentially a wrapper around a derived oop, so we |
980 // need to take the lock before making any ProfileData structures. |
980 // need to take the lock before making any ProfileData structures. |
981 ProfileData* data = h_mdo->data_at(h_mdo->dp_to_di(fr.interpreter_frame_mdp())); |
981 ProfileData* data = h_mdo->data_at(h_mdo->dp_to_di(fr.interpreter_frame_mdp())); |
|
982 guarantee(data != NULL, "profile data must be valid"); |
982 RetData* rdata = data->as_RetData(); |
983 RetData* rdata = data->as_RetData(); |
983 address new_mdp = rdata->fixup_ret(return_bci, h_mdo); |
984 address new_mdp = rdata->fixup_ret(return_bci, h_mdo); |
984 fr.interpreter_frame_set_mdp(new_mdp); |
985 fr.interpreter_frame_set_mdp(new_mdp); |
985 IRT_END |
986 IRT_END |
986 |
987 |