Mercurial > hg > graal-compiler
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 |