diff --git a/ChangeLog b/ChangeLog index 7aa77950da..445d4443f3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +Thu Jun 13 18:34:20 2013 Tanaka Akira + + * bignum.c (bigdivrem): Use nlz. + Thu Jun 13 14:51:06 2013 Nobuyoshi Nakada * include/ruby/ruby.h (RUBY_SAFE_LEVEL_CHECK): check constant safe diff --git a/bignum.c b/bignum.c index 7086fe5724..42d0a74d6c 100644 --- a/bignum.c +++ b/bignum.c @@ -3793,12 +3793,9 @@ bigdivrem(VALUE x, VALUE y, volatile VALUE *divp, volatile VALUE *modp) if (nx==ny) zds[nx+1] = 0; while (!yds[ny-1]) ny--; - dd = 0; q = yds[ny-1]; - while ((q & (BDIGIT)(1UL<<(BITSPERDIG-1))) == 0) { - q <<= 1UL; - dd++; - } + dd = nlz(q); + q <<= dd; if (dd) { yy = rb_big_clone(y); tds = BDIGITS(yy);