@@ -209,7 +209,7 @@ void * allocate(size_t sz, int lock) {
211void* iallocate(VM * vm, size_t isize, int outerlock) {
211void* iallocate(VM * vm, size_t isize, int outerlock) {
212−// return malloc(size);
212+// return malloc(isize);
213 size_t size = aligned(isize);
213 size_t size = aligned(isize);
215#ifdef HAS_PTHREAD
215#ifdef HAS_PTHREAD
@@ -364,17 +364,11 @@ VAL MKMPTRc(VM* vm, void* ptr, size_t size) {
366VAL MKB8(VM* vm, uint8_t bits8) {
366VAL MKB8(VM* vm, uint8_t bits8) {
367− Bits8 * cl = iallocate(vm, sizeof(*cl), 1);
368− SETTY(cl, CT_BITS8);
370− return (VAL)cl;
367+ return MKINT(bits8);
373VAL MKB16(VM* vm, uint16_t bits16) {
370VAL MKB16(VM* vm, uint16_t bits16) {
374− Bits16 * cl = iallocate(vm, sizeof(*cl), 1);
375− SETTY(cl, CT_BITS16);
376− cl->bits16 = bits16;
377− return (VAL)cl;
371+ return MKINT(bits16);
380VAL MKB32(VM* vm, uint32_t bits32) {
374VAL MKB32(VM* vm, uint32_t bits32) {
@@ -417,11 +411,10 @@ void dumpStack(VM* vm) {
417void dumpVal(VAL v) {
411void dumpVal(VAL v) {
418 if (v==NULL) return;
412 if (v==NULL) return;
421− printf("%d ", (int)(GETINT(v)));
424 switch(GETTY(v)) {
414 switch(GETTY(v)) {
416+ printf("%" PRIdPTR " ", GETINT(v));
425 case CT_CON:
418 case CT_CON:
427 Con * cl = (Con*)v;
420 Con * cl = (Con*)v;
@@ -517,15 +510,10 @@ VAL idris_castBitsStr(VM* vm, VAL i) {
517 ClosureType ty = GETTY(i);
510 ClosureType ty = GETTY(i);
519 switch (ty) {
512 switch (ty) {
520− case CT_BITS8:
513+ case CT_INT: // 8/16 bits
521− // max length 8 bit unsigned int str 3 chars (256)
522− cl = allocStr(vm, 4, 0);
523− cl->slen = sprintf(cl->str, "%" PRIu8, GETBITS8(i));
526 // max length 16 bit unsigned int str 5 chars (65,535)
514 // max length 16 bit unsigned int str 5 chars (65,535)
527 cl = allocStr(vm, 6, 0);
515 cl = allocStr(vm, 6, 0);
528− cl->slen = sprintf(cl->str, "%" PRIu16, GETBITS16(i));
516+ cl->slen = sprintf(cl->str, "%" PRIu16, (uint16_t)GETBITS16(i));
530 case CT_BITS32:
518 case CT_BITS32:
531 // max length 32 bit unsigned int str 10 chars (4,294,967,295)
519 // max length 32 bit unsigned int str 10 chars (4,294,967,295)
@@ -859,10 +847,12 @@ static void copyArray(VM* vm, VAL * dst, VAL * src, size_t len) {
859static VAL doCopyTo(VM* vm, VAL x) {
847static VAL doCopyTo(VM* vm, VAL x) {
862− if (x==NULL || ISINT(x)) {
850+ if (x==NULL) {
863 return x;
851 return x;
865 switch(GETTY(x)) {
853 switch(GETTY(x)) {
866 case CT_CDATA:
856 case CT_CDATA:
867 cl = MKCDATAc(vm, GETCDATA(x));
857 cl = MKCDATAc(vm, GETCDATA(x));
@@ -889,8 +879,6 @@ static VAL doCopyTo(VM* vm, VAL x) {
889 case CT_FLOAT:
879 case CT_FLOAT:
890 case CT_PTR:
880 case CT_PTR:
891 case CT_MANAGEDPTR:
881 case CT_MANAGEDPTR:
894 case CT_BITS32:
882 case CT_BITS32:
895 case CT_BITS64:
883 case CT_BITS64:
896 case CT_RAWDATA:
884 case CT_RAWDATA:
@@ -901,6 +889,7 @@ static VAL doCopyTo(VM* vm, VAL x) {
903 assert(0); // We're in trouble if this happens...
891 assert(0); // We're in trouble if this happens...
905 return cl;
894 return cl;
@@ -1091,7 +1080,6 @@ Msg* idris_recvMessageFrom(VM* vm, int channel_id, VM* sender) {
1091 fprintf(stderr, "No messages waiting");
1080 fprintf(stderr, "No messages waiting");
1092 exit(-1);
1081 exit(-1);
1095 return ret;
1083 return ret;