RFR(S): 8154836: VM crash due to "Base pointers must match"

Doerr, Martin martin.doerr at sap.com
Wed Apr 27 08:46:46 UTC 2016


Hi Zoltan,

I will comment on the skipping the transformation on non-x86 platforms in 8154826 and include Roland who is changing final graph reshaping of the AddP nodes.

Best regards,
Martin


-----Original Message-----
From: Zoltán Majó [mailto:zoltan.majo at oracle.com] 
Sent: Mittwoch, 27. April 2016 10:31
To: Vladimir Kozlov <vladimir.kozlov at oracle.com>; Doerr, Martin <martin.doerr at sap.com>; hotspot-compiler-dev at openjdk.java.net compiler <hotspot-compiler-dev at openjdk.java.net>
Subject: Re: RFR(S): 8154836: VM crash due to "Base pointers must match"

Hi Martin,


thank you for fixing this problem! The fix looks good to me as well, I 
have only one minor comment (please see inline).

On 04/27/2016 03:47 AM, Vladimir Kozlov wrote:
> [...]
>
>>
>> I made an additional change: I think the graph transformation doesn't 
>> make sense if decoding is expensive.
>> Therefore, I skip it on non-X86 platforms when we're running in heap 
>> based compressed oops mode.
>> (I believe X86 is the only platform which can match the decoding in 
>> the operand in this case.)
>
> It is not related to the fix and should be done separately. Or don't 
> do at all.
> There is comment above the code which explains why it could beneficial 
> on SPARC too:
>
> 2845       // On sparc loading 32-bits constant and decoding it have less
> 2846       // instructions (4) then load 64-bits constant (7).

If you decide to fix this, the condition

2856 if ((op == Op_ConN && Universe::narrow_oop_shift() != 0) ||
2857 (op == Op_ConNKlass && Universe::narrow_klass_shift() != 0)) {

seems better than

2856         if ((op == Op_ConN      && Universe::narrow_oop_base()   != NULL) ||
2857             (op == Op_ConNKlass && Universe::narrow_klass_base() != NULL)) {

for two reasons:- on non-x86 platforms matching is guarded by 'narrow.*shift' methods - 
if the heap is between 4GB and 32GB, 'narrow.*base' is NULL and 
'narrow.*shift' != 0 therefore the instructions are not emitted.


Please correct me if I'm wrong.

> [...]
>> Please review. I will also need a sponsor, please.

I'd be happy to sponsor the change.

Thank you!

Best regards,


Zoltan

>>
>> Best regards,
>> Martin
>>
>>



More information about the hotspot-compiler-dev mailing list