1: #include "../h/rt.h" 2: 3: /* 4: * Heap block size table (sizes given in bytes). A size of -1 is used 5: * for types that have no heap blocks; a size of 0 indicates that the 6: * second word of the block contains the size; a value greater than 7: * 0 is used for types with constant sized blocks. 8: */ 9: 10: int bsizes[] = { 11: -1, /* 0, not used */ 12: -1, /* 1, not used */ 13: sizeof(struct b_int), /* T_LONGINT (2), long integer type */ 14: sizeof(struct b_real), /* T_REAL (3), real number */ 15: sizeof(struct b_cset), /* T_CSET (4), cset */ 16: sizeof(struct b_file), /* T_FILE (5), file block */ 17: 0, /* T_PROC (6), procedure block */ 18: sizeof(struct b_list), /* T_LIST (7), list header block */ 19: sizeof(struct b_table), /* T_TABLE (8), table header block */ 20: 0, /* T_RECORD (9), record block */ 21: sizeof(struct b_telem), /* T_TELEM (10), table element block */ 22: 0, /* T_LELEM (11), list element block */ 23: sizeof(struct b_tvsubs), /* T_TVSUBS (12), substring trapped variable */ 24: -1, /* 13, not used */ 25: sizeof(struct b_tvtbl), /* T_TVTBL (14), table element trapped variable */ 26: -1, /* T_TVPOS (15), &pos trapped variable */ 27: -1, /* T_TVRAND (16), &random trapped variable */ 28: -1, /* T_TVTACE (17), &trace trapped variable */ 29: -1, /* T_ESTACK (18), expression stack header */ 30: 0 /* T_EBLOCK (19), expression heap block */ 31: #ifdef SETS 32: , 33: sizeof(struct b_set), /* T_SET (20), set header block */ 34: sizeof(struct b_selem) /* T_SELEM (21), set element block */ 35: #endif SETS 36: }; 37: 38: /* 39: * Table of offsets (in bytes) to first descriptor in blocks. -1 is for 40: * non-heap types, 0 for blocks with no descriptors. 41: */ 42: int firstd[] = { 43: -1, /* 0, not used */ 44: -1, /* 1, not used */ 45: 0, /* T_LONGINT (2), long integer type */ 46: 0, /* T_REAL (3), real number */ 47: 0, /* T_CSET (4), cset */ 48: 3*WORDSIZE, /* T_FILE (5), file block */ 49: 7*WORDSIZE, /* T_PROC (6), procedure block */ 50: 2*WORDSIZE, /* T_LIST (7), list header block */ 51: 2*WORDSIZE, /* T_TABLE (8), table header block */ 52: 3*WORDSIZE, /* T_RECORD (9), record block */ 53: 2*WORDSIZE, /* T_TELEM (10), table element block */ 54: 5*WORDSIZE, /* T_LELEM (11), list element block */ 55: 3*WORDSIZE, /* T_TVSUBS (12), substring trapped variable */ 56: -1, /* 13, not used */ 57: 2*WORDSIZE, /* T_TVTBL (14), table element trapped variable */ 58: -1, /* T_TVPOS (15), &pos trapped variable */ 59: -1, /* T_TVRAND (16), &random trapped variable*/ 60: -1, /* T_TVTACE (17), &trace trapped variable */ 61: -1, /* T_ESTACK (18), expression stack header */ 62: 5*WORDSIZE /* T_EBLOCK (19), expression heap block */ 63: #ifdef SETS 64: , 65: 2*WORDSIZE, /* T_SET (20), set header block */ 66: 2*WORDSIZE /* T_SELEM (21), set element block */ 67: #endif SETS 68: }; 69: 70: /* 71: * Table of block names used by debugging functions. 72: */ 73: char *blkname[] = { 74: "illegal name", /* 0, not used */ 75: "illegal name", /* 1, not used */ 76: "long integer", /* T_LONGINT (2), long integer type */ 77: "real number", /* T_REAL (3), real number */ 78: "cset", /* T_CSET (4), cset */ 79: "file", /* T_FILE (5), file block */ 80: "procedure", /* T_PROC (6), procedure block */ 81: "list header block", /* T_LIST (7), list header block */ 82: "table header block", /* T_TABLE (8), table header block */ 83: "record", /* T_RECORD (9), record block */ 84: "table element block", /* T_TELEM (10), table element block */ 85: "list element block", /* T_LELEM (11), list element block */ 86: "substring tv", /* T_TVSUBS (12), substring trapped variable */ 87: "illegal name", /* 13, not used */ 88: "table element tv", /* T_TVTBL (14), table element trapped variable */ 89: "illegal name", /* T_TVPOS (15), &pos trapped variable */ 90: "illegal name", /* T_TVRAND (16), &random trapped variable */ 91: "illegal name", /* T_TVTACE (17), &trace trapped variable */ 92: "expression stack", /* T_ESTACK (18), expression stack header */ 93: "refresh block" /* T_EBLOCK (19), expression heap block */ 94: #ifdef SETS 95: , 96: "set header block", /* T_SET (20), set header block */ 97: "set member" /* T_SELEM (21), set element block */ 98: #endif SETS 99: };