Branch: Tag:

2014-12-04

2014-12-04 19:24:58 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Runtime: Use the Xbit syntax for strings and ints.

The subtype for strings and integers is now displayed with
the Xbit syntax when possible.

1961: Inside #if defined(PIKE_DEBUG)
   INT32 min=extract_type_int(a+e+1);    INT32 max=extract_type_int(a+e+1+sizeof(INT32));    fprintf(stderr, "int"); -  if(min!=MIN_INT32 || max!=MAX_INT32) +  if(min!=MIN_INT32 || max!=MAX_INT32) { +  if (!min && max && !(max & (max+1))) { +  int j = 0; +  while (max) { +  max >>= 1; +  j++; +  } +  fprintf(stderr, "(%dbit)", j); +  } else {    fprintf(stderr, "(%ld..%ld)",(long)min,(long)max); -  +  } +  }    e+=sizeof(INT32)*2;    break;    }
2050:    INT32 min = CAR_TO_INT(s);    INT32 max = CDR_TO_INT(s);    fprintf(stderr, "int"); -  if(min!=MIN_INT32 || max!=MAX_INT32) +  if(min!=MIN_INT32 || max!=MAX_INT32) { +  if (!min && max && !(max & (max+1))) { +  int j = 0; +  while (max) { +  max >>= 1; +  j++; +  } +  fprintf(stderr, "(%dbit)", j); +  } else {    fprintf(stderr, "(%ld..%ld)",(long)min,(long)max); -  +  } +  }    break;    }    case T_FLOAT: fprintf(stderr, "float"); break;
2087:   #endif /* PIKE_DEBUG */    min = CAR_TO_INT(char_type);    max = CDR_TO_INT(char_type); +  if (!min && max && !(max & (max+1))) { +  int j = 0; +  while (max) { +  max >>= 1; +  j++; +  } +  fprintf(stderr, "%dbit", j); +  } else {    if (min != MIN_INT32) {    fprintf(stderr, "%d", min);    }
2094:    if (max != MAX_INT32) {    fprintf(stderr, "%d", max);    } +  }    fprintf(stderr, " | ");    s = s->cdr;    }
2113:   #endif /* PIKE_DEBUG */    min = CAR_TO_INT(s);    max = CDR_TO_INT(s); +  if (!min && max && !(max & (max+1))) { +  int j = 0; +  while (max) { +  max >>= 1; +  j++; +  } +  fprintf(stderr, "%dbit", j); +  } else {    if (min != MIN_INT32) {    fprintf(stderr, "%d", min);    }
2121:    fprintf(stderr, "%d", max);    }    } +  }    fprintf(stderr, ")");    }    break;
2275:    INT32 max=CDR_TO_INT(t);    my_strcat("int");    -  if(min!=MIN_INT32 || max!=MAX_INT32) -  { +  if (!min && max && !(max & (max+1))) { +  int j = 0; +  while (max) { +  max >>= 1; +  j++; +  } +  sprintf(buffer, "(%dbit)", j); +  my_strcat(buffer); +  } else if(min!=MIN_INT32 || max!=MAX_INT32) {    sprintf(buffer,"(%ld..%ld)",(long)min,(long)max);    my_strcat(buffer);    }
2349:   #endif /* PIKE_DEBUG */    min = CAR_TO_INT(char_type);    max = CDR_TO_INT(char_type); +  if (!min && max && !(max & (max+1))) { +  int j = 0; +  while (max) { +  max >>= 1; +  j++; +  } +  sprintf(buffer, "%dbit", j); +  my_strcat(buffer); +  } else {    if (min != MIN_INT32) {    sprintf(buffer, "%d", min);    my_strcat(buffer);
2358:    sprintf(buffer, "%d", max);    my_strcat(buffer);    } +  }    my_strcat(" | ");    t = t->cdr;    }
2372:   #endif /* PIKE_DEBUG */    min = CAR_TO_INT(t);    max = CDR_TO_INT(t); +  if (!min && max && !(max & (max+1))) { +  int j = 0; +  while (max) { +  max >>= 1; +  j++; +  } +  sprintf(buffer, "%dbit", j); +  my_strcat(buffer); +  } else {    if (min != MIN_INT32) {    sprintf(buffer, "%d", min);    my_strcat(buffer);
2381:    sprintf(buffer, "%d", max);    my_strcat(buffer);    } +  }    my_strcat(")");    }    break;