Request for review: 7011490 Wrong computation results in Test6880034

Vladimir Danushevsky vladimir.danushevsky at oracle.com
Thu Mar 10 10:39:06 PST 2011


So for x86 should that be just:

assert(opr->fpu_regnrLo() == opr->fpu_regnrHi(), "assumed in  
calculation");

Thanks,
Vlad


On Mar 10, 2011, at 1:33 PM, Tom Rodriguez wrote:

>
> On Mar 10, 2011, at 10:16 AM, Vladimir Danushevsky wrote:
>
>>
>> On Mar 10, 2011, at 12:31 PM, Tom Rodriguez wrote:
>>
>>>
>>> On Mar 10, 2011, at 9:21 AM, Vladimir Danushevsky wrote:
>>>
>>>> http://cr.openjdk.java.net/~vladidan/7011490/webrev.00/
>>>>
>>>> LinearScan::append_scope_value_for_operand() appends high and low  
>>>> registers of the double operand based on big endianess. On ARM  
>>>> platform (little endian) that causes shift in the registers  
>>>> allocation when copied to an expression stack during c2i  
>>>> deoptimization.
>>>> x86 (being a LE) uses stack slot for a double op, therefore it's  
>>>> not affected.
>>>
>>> Are you saying that x86 doesn't use this path?  That doesn't seem  
>>> right to me.
>>
>> x86 uses the path but opr->fpu_regnrLo() = opr->fpu_regnrHi,  
>> therefore no difference in behavior for that architecture.
>
> I read through it but missed that.  Looks good then, though you  
> might correct the x86 comment:
>
>      assert(opr->fpu_regnrLo() == opr->fpu_regnrHi(), "assumed in  
> calculation (only fpu_regnrHi is used)");
>
> tom
>
>>
>> Thanks,
>> Vlad
>>>
>>>
>>>> I want to make sure Zero target is not broken by that change as  
>>>> it could be built little endian as well. Could anyone comment on  
>>>> that please?
>>>
>>> Zero doesn't use our compilers so it can't be effected.
>>>
>>> tom
>>>
>>>>
>>>> Thanks,
>>>> Vlad
>>>>
>>>>
>>>
>>
>



More information about the hotspot-dev mailing list