441 |
441 |
442 if (state == atos) { |
442 if (state == atos) { |
443 Register obj = r0; |
443 Register obj = r0; |
444 Register mdp = r1; |
444 Register mdp = r1; |
445 Register tmp = r2; |
445 Register tmp = r2; |
446 __ ldr(mdp, Address(rmethod, Method::method_data_offset())); |
|
447 __ profile_return_type(mdp, obj, tmp); |
446 __ profile_return_type(mdp, obj, tmp); |
448 } |
447 } |
449 |
448 |
450 // Pop N words from the stack |
449 // Pop N words from the stack |
451 __ get_cache_and_index_at_bcp(r1, r2, 1, index_size); |
450 __ get_cache_and_index_at_bcp(r1, r2, 1, index_size); |
1631 const Address do_not_unlock_if_synchronized(rthread, |
1630 const Address do_not_unlock_if_synchronized(rthread, |
1632 in_bytes(JavaThread::do_not_unlock_if_synchronized_offset())); |
1631 in_bytes(JavaThread::do_not_unlock_if_synchronized_offset())); |
1633 __ mov(rscratch2, true); |
1632 __ mov(rscratch2, true); |
1634 __ strb(rscratch2, do_not_unlock_if_synchronized); |
1633 __ strb(rscratch2, do_not_unlock_if_synchronized); |
1635 |
1634 |
1636 Label no_mdp; |
|
1637 Register mdp = r3; |
1635 Register mdp = r3; |
1638 __ ldr(mdp, Address(rmethod, Method::method_data_offset())); |
|
1639 __ cbz(mdp, no_mdp); |
|
1640 __ add(mdp, mdp, in_bytes(MethodData::data_offset())); |
|
1641 __ profile_parameters_type(mdp, r1, r2); |
1636 __ profile_parameters_type(mdp, r1, r2); |
1642 __ bind(no_mdp); |
|
1643 |
1637 |
1644 // increment invocation count & check for overflow |
1638 // increment invocation count & check for overflow |
1645 Label invocation_counter_overflow; |
1639 Label invocation_counter_overflow; |
1646 Label profile_method; |
1640 Label profile_method; |
1647 Label profile_method_continue; |
1641 Label profile_method_continue; |