review for 7088020: SEGV in JNIHandleBlock::release_block

Vladimir Kozlov 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);

Vladimir

On 9/7/11 9:12 PM, Vladimir Kozlov wrote:
> Looks good.
>
> Vladimir
>
> 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.
>>
>> tom
>>
>> On Sep 7, 2011, at 2:24 PM, Vladimir Kozlov wrote:
>>
>>> Where r12 is restored? It contains coop base.
>>>
>>> Vladimir
>>>
>>> Tom Rodriguez wrote:
>>>> http://cr.openjdk.java.net/~never/7088020
>>>> 150 lines changed: 88 ins; 50 del; 12 mod; 10143 unchg
>>>> 7088020: SEGV in JNIHandleBlock::release_block
>>>> Reviewed-by:
>>>> 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 mailing list