src/cpu/x86/vm/templateTable_x86_32.cpp

changeset 2440
bb8e3b66bde6
parent 2423
b1a2afa37ec4
parent 2438
dd031b2226de
child 2552
638119ce7cfd
equal deleted inserted replaced
2426:e24ab3fa6aaf 2440:bb8e3b66bde6
1663 1663
1664 if (UseLoopCounter) { 1664 if (UseLoopCounter) {
1665 if (ProfileInterpreter) { 1665 if (ProfileInterpreter) {
1666 // Out-of-line code to allocate method data oop. 1666 // Out-of-line code to allocate method data oop.
1667 __ bind(profile_method); 1667 __ bind(profile_method);
1668 __ call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::profile_method), rsi); 1668 __ call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::profile_method));
1669 __ load_unsigned_byte(rbx, Address(rsi, 0)); // restore target bytecode 1669 __ load_unsigned_byte(rbx, Address(rsi, 0)); // restore target bytecode
1670 __ movptr(rcx, Address(rbp, method_offset)); 1670 __ set_method_data_pointer_for_bcp();
1671 __ movptr(rcx, Address(rcx, in_bytes(methodOopDesc::method_data_offset())));
1672 __ movptr(Address(rbp, frame::interpreter_frame_mdx_offset * wordSize), rcx);
1673 __ test_method_data_pointer(rcx, dispatch);
1674 // offset non-null mdp by MDO::data_offset() + IR::profile_method()
1675 __ addptr(rcx, in_bytes(methodDataOopDesc::data_offset()));
1676 __ addptr(rcx, rax);
1677 __ movptr(Address(rbp, frame::interpreter_frame_mdx_offset * wordSize), rcx);
1678 __ jmp(dispatch); 1671 __ jmp(dispatch);
1679 } 1672 }
1680 1673
1681 if (UseOnStackReplacement) { 1674 if (UseOnStackReplacement) {
1682 1675

mercurial