A strange bit of code in MacroAssembler::multiply_128_x_128_loop

Andrew Haley aph at redhat.com
Fri Apr 10 16:49:41 UTC 2015


On 04/10/2015 05:47 PM, Vladimir Kozlov wrote:
> On 4/10/15 9:30 AM, Vladimir Kozlov wrote:
>> It restores counter after:
>>
>>    subl(idx, 2);
>>    jcc(Assembler::negative, L_check_1);
>>
>> The value could be 1,2,3 before this point (idx & 3 before).
>> After 'sub 2': -1, 0, 1.
>>
>> So we have to restore to positive values before subtracting 1.
> 
> And you are right, it is not needed. We get the same (correct) result from 'and idx,1' regardless executing 'add'.

OK, cool.  It's not important then: I was just wondering if I'd found a
latent bug.

Andrew.




More information about the hotspot-runtime-dev mailing list