comparison src/cpu/x86/vm/templateTable_x86_32.cpp @ 107:93b6525e3b82

6603919: Stackwalking crash on x86 -server with Sun Studio's collect -j on Summary: Rewrite frame::safe_for_sender and friends to be safe for collector/analyzer Reviewed-by: dcubed, kvn
author sgoldman
date Tue, 08 Apr 2008 12:23:15 -0400
parents a61af66fc99e
children d1605aabd0a1 37f87013dfd8
comparison
equal deleted inserted replaced
106:c9314fa4f757 107:93b6525e3b82
1630 1630
1631 // We have the address of an on stack replacement routine in rax, 1631 // We have the address of an on stack replacement routine in rax,
1632 // We need to prepare to execute the OSR method. First we must 1632 // We need to prepare to execute the OSR method. First we must
1633 // migrate the locals and monitors off of the stack. 1633 // migrate the locals and monitors off of the stack.
1634 1634
1635 __ movl(rsi, rax); // save the nmethod 1635 __ movl(rbx, rax); // save the nmethod
1636 1636
1637 const Register thread = rcx; 1637 const Register thread = rcx;
1638 __ get_thread(thread); 1638 __ get_thread(thread);
1639 call_VM(noreg, CAST_FROM_FN_PTR(address, SharedRuntime::OSR_migration_begin)); 1639 call_VM(noreg, CAST_FROM_FN_PTR(address, SharedRuntime::OSR_migration_begin));
1640 // rax, is OSR buffer, move it to expected parameter location 1640 // rax, is OSR buffer, move it to expected parameter location
1686 1686
1687 // push the (possibly adjusted) return address 1687 // push the (possibly adjusted) return address
1688 __ pushl(rdi); 1688 __ pushl(rdi);
1689 1689
1690 // and begin the OSR nmethod 1690 // and begin the OSR nmethod
1691 __ jmp(Address(rsi, nmethod::osr_entry_point_offset())); 1691 __ jmp(Address(rbx, nmethod::osr_entry_point_offset()));
1692 } 1692 }
1693 } 1693 }
1694 } 1694 }
1695 1695
1696 1696