RFR(S): 8156992: [ppc] Implement template interpreter stack overflow checks as on x86/sparc.

Daniel D. Daugherty daniel.daugherty at oracle.com
Thu May 19 17:19:21 UTC 2016


The correct bug ID for this email thread is:

JDK-8156922 [ppc] Implement template interpreter stack overflow checks 
as on x86/sparc
https://bugs.openjdk.java.net/browse/JDK-8156922

when this fix reaches the commit phase, please make sure
that 8156922 is used instead of 8156992.

Dan


On 5/19/16 11:13 AM, dean.long at oracle.com wrote:
> Hi Goetz.  Thanks for the explanation.  So using the shadow size in 
> MAX2 is so that the
> stack bang that comes next does not "overshoot" the red zone and stomp 
> on memory
> that might be mapped for other purposes?  That makes sense if 
> bang_stack_shadow_pages()
> was only banging one page, but when called from 
> generate_normal_entry(), "native_call" is
> set to false, so we bang from 1 to n_shadow_pages.  If I'm now 
> understanding the code
> correctly, there may be an opportunity for a performance improvement 
> here, by banging
> just 1 page instead of n_shadow_pages.
>
> I reread the description in 8156922, and I'm having troubling 
> following the note that
> starts with "The x86/sparc design can not handle frames bigger than 
> ...."  Is the that
> "overshoot" problem I described above?
>
>
> thanks,
>
> dl
>
>
> On 5/19/16 6:38 AM, Lindenmaier, Goetz wrote:
>>
>> Hi,
>>
>> reading the mail again I think I understand your question better now:
>>
>> I think this is because we first want to push the frame of the called 
>> method
>>
>> and then do the real stack bang.
>>
>> But at least it must be checked that this frame fits on the stack 
>> below the yellow zone.
>>
>> Obviously the person who implemented this also wanted to make sure 
>> that a
>>
>> stack bang on top of this frame does not exceed stack_end(), 
>> therefore the MAX2.
>>
>> If it does not fit, a stack overflow error is thrown without going 
>> through the
>>
>> signal handler – only the space of the shadow zone is used.
>>
>> If the frame fits, the real stack bang is executed. The frames below 
>> are all fine, thus
>>
>> the signal handler and code on top can walk the stack.
>>
>> Best regards,
>>
>> Goetz.
>>
>> *From:*dean.long at oracle.com [mailto:dean.long at oracle.com]
>> *Sent:* Thursday, May 19, 2016 2:15 AM
>> *To:* Lindenmaier, Goetz <goetz.lindenmaier at sap.com>; 
>> hotspot-runtime-dev at openjdk.java.net
>> *Subject:* Re: RFR(S): 8156992: [ppc] Implement template interpreter 
>> stack overflow checks as on x86/sparc.
>>
>> By changing the value of the _stack_overflow_limit field, does the 
>> following x86/sparc comment
>> still make sense?
>>
>> // TODO: rather than touching all pages, check against 
>> stack_overflow_limit and bang yellow page to
>> // generate exception
>>
>> Also, I have to admit that I don't understand why we use different 
>> values for stack checks/bang in different places, especially the 
>> using MAX2 instead of +.  Can anyone explain this?  The + makes sense 
>> to me, but the MAX2 does not.
>>
>> dl
>>
>> On 5/18/16 3:02 AM, Lindenmaier, Goetz wrote:
>>
>>     Hi,
>>
>>     When porting the template interpreter, we implemented a different 
>> approach to
>>
>>     Stack overflow handling.  See also the detailed description in 
>> the Jira bug.
>>
>>     This change implements the stack overflow check as on x86/sparc.
>>
>>     It requires simple shared changes, but only to code only used on 
>> ppc.
>>
>>     The changes should not affect the other platforms.
>>
>>     Please review this change. I please need a sponsor.
>>
>> http://cr.openjdk.java.net/~goetz/wr16/8156922-ppcStackFix/webrev.01/
>> <http://cr.openjdk.java.net/%7Egoetz/wr16/8156922-ppcStackFix/webrev.01/>
>>
>>     Best regards,
>>
>>        Goetz.
>>
>
>



More information about the hotspot-runtime-dev mailing list