on master help sign in
Fixes for shifting Integer
1ecb649Edwin Brady
rts/idris_gmp.c+3−3
@@ -344,7 +344,7 @@ VAL idris_bigShiftLeft(VM* vm, VAL x, VAL y) {
344 if (ISINT(x) && ISINT(y)) {
344 if (ISINT(x) && ISINT(y)) {
345 return INTOP(<<, x, y);
345 return INTOP(<<, x, y);
346 } else {
346 } else {
347− return bigShiftLeft(vm, GETBIG(vm, x), GETBIG(vm, y));
347+ return bigShiftLeft(vm, GETBIG(vm, x), y);
348 }
348 }
349}
349}
350
350
@@ -352,7 +352,7 @@ VAL idris_bigAShiftRight(VM* vm, VAL x, VAL y) {
352 if (ISINT(x) && ISINT(y)) {
352 if (ISINT(x) && ISINT(y)) {
353 return INTOP(>>, x, y);
353 return INTOP(>>, x, y);
354 } else {
354 } else {
355− return bigAShiftRight(vm, GETBIG(vm, x), GETBIG(vm, y));
355+ return bigAShiftRight(vm, GETBIG(vm, x), y);
356 }
356 }
357}
357}
358
358
@@ -360,7 +360,7 @@ VAL idris_bigLShiftRight(VM* vm, VAL x, VAL y) {
360 if (ISINT(x) && ISINT(y)) {
360 if (ISINT(x) && ISINT(y)) {
361 return INTOP(>>, x, y);
361 return INTOP(>>, x, y);
362 } else {
362 } else {
363− return bigLShiftRight(vm, GETBIG(vm, x), GETBIG(vm, y));
363+ return bigLShiftRight(vm, GETBIG(vm, x), y);
364 }
364 }
365}
365}
366
366
rts/idris_gmp.h+2−1
@@ -43,7 +43,8 @@ VAL idris_castBigStr(VM* vm, VAL i);
43VAL idris_bigAnd(VM* vm, VAL x, VAL y);
43VAL idris_bigAnd(VM* vm, VAL x, VAL y);
44VAL idris_bigOr(VM* vm, VAL x, VAL y);
44VAL idris_bigOr(VM* vm, VAL x, VAL y);
45VAL idris_bigShiftLeft(VM* vm, VAL x, VAL y);
45VAL idris_bigShiftLeft(VM* vm, VAL x, VAL y);
46−VAL idris_bigShiftRight(VM* vm, VAL x, VAL y);
46+VAL idris_bigAShiftRight(VM* vm, VAL x, VAL y);
47+VAL idris_bigLShiftRight(VM* vm, VAL x, VAL y);
47
48
48uint64_t idris_truncBigB64(const mpz_t bi);
49uint64_t idris_truncBigB64(const mpz_t bi);
49
50