review for 7088020: SEGV in JNIHandleBlock::release_block
vladimir.kozlov at oracle.com
Wed Sep 7 21:35:22 PDT 2011
Can we use pushptr(Address(r12, 0)) instead of using RDI in next code?:
+ __ mov(r12, rsp);
+ __ movptr(rdi, Address(rsp, 0)); // Pick up the return address
+ __ andptr(rsp, -StackAlignmentInBytes); // Align the stack for the ABI
+ __ push(rdi);
On 9/7/11 9:12 PM, Vladimir Kozlov wrote:
> Looks good.
> On 9/7/11 8:40 PM, Tom Rodriguez wrote:
>> Strangely the WMT cases all seemed to work fine but another test was failing. Running with +WalkStackALot showed that
>> I wasn't moving the return address so I propagated the frame adjustment outside the enter/leave.
>> On Sep 7, 2011, at 2:24 PM, Vladimir Kozlov wrote:
>>> Where r12 is restored? It contains coop base.
>>> Tom Rodriguez wrote:
>>>> 150 lines changed: 88 ins; 50 del; 12 mod; 10143 unchg
>>>> 7088020: SEGV in JNIHandleBlock::release_block
>>>> The throw_WrongMethodTypeException stub on x64 needs to align the
>>>> stack before calling into the runtime or it might crash. I also
>>>> noticed that two stubs were dead which made an extra argument dead so
>>>> I cleaned that up at the same time. Tested on linux-amd64 with new
>>>> regression test and failing tests from report.
More information about the hotspot-compiler-dev