On Feb 6, 2015, at 2:43 AM, Brian Burkhalter <brian.burkhal...@oracle.com> 
wrote:

> Hi Paul,
> 
> On Feb 5, 2015, at 6:06 AM, Paul Sandoz <paul.san...@oracle.com> wrote:
> 
>> I don't claim to understand the fine details of these methods but i can see 
>> how the new method avoid loosing bits.
>> 
>> 4947     private static long[] divRemNegativeLong(long n, long d) {
>> 4948         if (n >= 0) {
>> 4949             throw new IllegalArgumentException("Non-negative 
>> numerator");
>> 4950         } else if (d == 1) {
>> 4951             return new long[]{0, n};
>> 4952         }
>> 
>> Why not use an assert instead of an IAE since this is an internal method.
> 
> I had actually wondered whether this could just be a “trusted” method since 
> the check of the first parameter is already done in the calling code, then 
> the if-branch could be removed altogether, but I suppose the assert is safer.

Yes, asserts are good here, they will be enabled when testing.

> 
>> Also the case of d ==1 could be pulled out just like for the case of tmp 
>> being +ve: 
>> 
>>  if (v1 == 1) {
>>    q1 = tmp;
>>    r_tmp = 0;
>>  } else if (tmp >= 0) {
>>    ...
>>  } else {
>>    ...
>>  }
>> 
>> then the asserts would be:
>> 
>>  assert n < 0 :  n;
>>  assert d != 1 : d;
> 
> Thanks for the suggestions. Please see updated patch:
> 
> http://cr.openjdk.java.net/~bpb/8066842/webrev.01/
> 

+1, but you should remove the "@throws IAE" on divRemNegativeLong before you 
push.

Paul;.

Reply via email to