203 |
|
|
204 |
|
|
205 |
object |
object |
206 |
shift_integer(object x, int w) |
shift_integer(object x, int w) { |
207 |
{ |
if (type_of(x) == t_fixnum) { |
208 |
if (type_of(x) == t_fixnum) |
if (w <= 0){ |
209 |
{ if (w <= 0) |
w = -w; |
210 |
{ w = -w; |
if (w >= WSIZ || w<0 /*most-negative-fixnum*/) |
211 |
if (w >= WSIZ) return small_fixnum(fix(x) < 0 ? -1 :0); |
return small_fixnum(fix(x) < 0 ? -1 :0); |
212 |
else |
else |
213 |
return make_fixnum (fix(x) >> (w));} |
return make_fixnum (fix(x) >> (w)); |
|
MPOP(return, shifti,SI_TO_MP(fix(x),big_fixnum1),w); |
|
214 |
} |
} |
215 |
|
MPOP(return, shifti,SI_TO_MP(fix(x),big_fixnum1),w); |
216 |
|
} |
217 |
else |
else |
218 |
if (type_of(x) == t_bignum) { |
if (type_of(x) == t_bignum) { |
219 |
MPOP(return,shifti,MP(x),w); |
MPOP(return,shifti,MP(x),w); |