0.pre7.58:
[sbcl.git] / src / runtime / gc.c
index b335682..bf76596 100644 (file)
@@ -127,7 +127,7 @@ copy_object(lispobj object, int nwords)
        gc_assert((nwords & 0x01) == 0);
 
        /* get tag of object */
-       tag = LowtagOf(object);
+       tag = lowtag_of(object);
 
        /* allocate space */
        new = new_space_free_pointer;
@@ -381,7 +381,7 @@ scavenge(lispobj *start, u32 nwords)
                int type, words_scavenged;
 
                object = *start;
-               type = TypeOf(object);
+               type = widetag_of(object);
 
 #if defined(DEBUG_SCAVENGE_VERBOSE)
                fprintf(stderr,"Scavenging object at 0x%08x, object = 0x%08x, type = %d\n",
@@ -495,7 +495,7 @@ scavenge_interrupt_context(os_context_t *context)
                index = boxed_registers[i];
                reg = *os_context_register_addr(context, index);
                /* would be using PTR if not for integer length issues */
-               if ((reg & ~((1L<<lowtag_Bits)-1)) <= lip) {
+               if ((reg & ~((1L<<N_LOWTAG_BITS)-1)) <= lip) {
                        offset = lip - reg;
                        if (offset < lip_offset) {
                                lip_offset = offset;
@@ -584,27 +584,27 @@ print_garbage(lispobj *from_space, lispobj *from_space_free_pointer)
                        int tag;
                        lispobj *pointer;
 
-                       tag = LowtagOf(object);
+                       tag = lowtag_of(object);
 
                        switch (tag) {
-                       case type_ListPointer:
+                       case LIST_POINTER_LOWTAG:
                                nwords = 2;
                                break;
-                       case type_InstancePointer:
+                       case INSTANCE_POINTER_LOWTAG:
                                printf("Don't know about instances yet!\n");
                                nwords = 1;
                                break;
-                       case type_FunPointer:
+                       case FUN_POINTER_LOWTAG:
                                nwords = 1;
                                break;
-                       case type_OtherPointer:
+                       case OTHER_POINTER_LOWTAG:
                                pointer = (lispobj *) native_pointer(object);
                                header = *pointer;
-                               type = TypeOf(header);
+                               type = widetag_of(header);
                                nwords = (sizetab[type])(pointer);
                        }
                } else {
-                       type = TypeOf(object);
+                       type = widetag_of(object);
                        nwords = (sizetab[type])(start);
                        total_words_not_copied += nwords;
                        printf("%4d words not copied at 0x%16lx; ",
@@ -620,10 +620,8 @@ print_garbage(lispobj *from_space, lispobj *from_space_free_pointer)
 \f
 /* code and code-related objects */
 
-/* FIXME: (1) Shouldn't this be defined in sbcl.h? (2) Shouldn't it
- * be in the same units as FDEFN_RAW_ADDR_OFFSET? (This is measured
- * in words, that's measured in bytes. Gotta love CMU CL..) */
-#define FUN_RAW_ADDR_OFFSET (6*sizeof(lispobj) - type_FunPointer)
+/* FIXME: Shouldn't this be defined in sbcl.h? */
+#define FUN_RAW_ADDR_OFFSET (6*sizeof(lispobj) - FUN_POINTER_LOWTAG)
 
 static lispobj trans_fun_header(lispobj object);
 static lispobj trans_boxed(lispobj object);
@@ -646,10 +644,10 @@ scav_fun_pointer(lispobj *where, lispobj object)
   /* to either a function header, a closure */
   /* function header, or to a closure header. */
   
-  type = TypeOf(first);
+  type = widetag_of(first);
   switch (type) {
-  case type_SimpleFunHeader:
-  case type_ClosureFunHeader:
+  case SIMPLE_FUN_HEADER_WIDETAG:
+  case CLOSURE_FUN_HEADER_WIDETAG:
     copy = trans_fun_header(object);
     break;
   default:
@@ -689,10 +687,10 @@ trans_code(struct code *code)
            return (struct code *) native_pointer(first);
        }
        
-       gc_assert(TypeOf(first) == type_CodeHeader);
+       gc_assert(widetag_of(first) == CODE_HEADER_WIDETAG);
 
        /* prepare to transport the code vector */
-       l_code = (lispobj) LOW_WORD(code) | type_OtherPointer;
+       l_code = (lispobj) LOW_WORD(code) | OTHER_POINTER_LOWTAG;
 
        ncode_words = fixnum_value(code->code_size);
        nheader_words = HeaderValue(code->header);
@@ -724,7 +722,7 @@ trans_code(struct code *code)
                lispobj nfheaderl;
                
                fheaderp = (struct simple_fun *) native_pointer(fheaderl);
-               gc_assert(TypeOf(fheaderp->header) == type_SimpleFunHeader);
+               gc_assert(widetag_of(fheaderp->header) == SIMPLE_FUN_HEADER_WIDETAG);
 
                /* calcuate the new function pointer and the new */
                /* function header */
@@ -784,7 +782,7 @@ scav_code_header(lispobj *where, lispobj object)
        fheaderl = code->entry_points;
        while (fheaderl != NIL) {
                fheaderp = (struct simple_fun *) native_pointer(fheaderl);
-               gc_assert(TypeOf(fheaderp->header) == type_SimpleFunHeader);
+               gc_assert(widetag_of(fheaderp->header) == SIMPLE_FUN_HEADER_WIDETAG);
                
 #if defined(DEBUG_CODE_GC)
                printf("Scavenging boxed section of entry point located at 0x%08x.\n",
@@ -806,7 +804,7 @@ trans_code_header(lispobj object)
        struct code *ncode;
 
        ncode = trans_code((struct code *) native_pointer(object));
-       return (lispobj) LOW_WORD(ncode) | type_OtherPointer;
+       return (lispobj) LOW_WORD(ncode) | OTHER_POINTER_LOWTAG;
 }
 
 static int
@@ -855,7 +853,7 @@ trans_return_pc_header(lispobj object)
        if(object==0x304748d7) {
            /* monitor_or_something(); */
        }
-       ret= ((lispobj) LOW_WORD(ncode) + offset) | type_OtherPointer;
+       ret= ((lispobj) LOW_WORD(ncode) + offset) | OTHER_POINTER_LOWTAG;
 #ifdef DEBUG_CODE_GC
        printf("trans_return_pc_header returning %x\n",ret);
 #endif
@@ -908,7 +906,7 @@ trans_fun_header(lispobj object)
        code = (struct code *) ((unsigned long) fheader - offset);
        ncode = trans_code(code);
 
-       return ((lispobj) LOW_WORD(ncode) + offset) | type_FunPointer;
+       return ((lispobj) LOW_WORD(ncode) + offset) | FUN_POINTER_LOWTAG;
 }
 
 
@@ -975,7 +973,7 @@ trans_list(lispobj object)
 
                cdr = cons->cdr;
 
-                if (LowtagOf(cdr) != type_ListPointer ||
+                if (lowtag_of(cdr) != LIST_POINTER_LOWTAG ||
                     !from_space_p(cdr) ||
                     (is_lisp_pointer(first = *(lispobj *)native_pointer(cdr))
                     && new_space_p(first)))
@@ -1014,7 +1012,7 @@ scav_other_pointer(lispobj *where, lispobj object)
 
   /* Object is a pointer into from space - not a FP */
   first_pointer = (lispobj *) native_pointer(object);
-  first = *first_pointer = (transother[TypeOf(*first_pointer)])(object);
+  first = *first_pointer = (transother[widetag_of(*first_pointer)])(object);
 
   gc_assert(is_lisp_pointer(first));
   gc_assert(!from_space_p(first));
@@ -1207,8 +1205,10 @@ size_string(lispobj *where)
 static int
 scav_vector(lispobj *where, lispobj object)
 {
-    if (HeaderValue(object) == subtype_VectorValidHashing)
-        *where = (subtype_VectorMustRehash<<type_Bits) | type_SimpleVector;
+    if (HeaderValue(object) == subtype_VectorValidHashing) {
+        *where =
+           (subtype_VectorMustRehash<<N_WIDETAG_BITS) | SIMPLE_VECTOR_WIDETAG;
+    }
 
     return 1;
 }
@@ -1580,7 +1580,7 @@ size_vector_double_float(lispobj *where)
 }
 
 
-#ifdef type_SimpleArrayLongFloat
+#ifdef SIMPLE_ARRAY_LONG_FLOAT_WIDETAG
 static int
 scav_vector_long_float(lispobj *where, lispobj object)
 {
@@ -1630,7 +1630,7 @@ size_vector_long_float(lispobj *where)
 #endif
 
 
-#ifdef type_SimpleArrayComplexSingleFloat
+#ifdef SIMPLE_ARRAY_COMPLEX_SINGLE_FLOAT_WIDETAG
 static int
 scav_vector_complex_single_float(lispobj *where, lispobj object)
 {
@@ -1673,7 +1673,7 @@ size_vector_complex_single_float(lispobj *where)
 }
 #endif
 
-#ifdef type_SimpleArrayComplexDoubleFloat
+#ifdef SIMPLE_ARRAY_COMPLEX_DOUBLE_FLOAT_WIDETAG
 static int
 scav_vector_complex_double_float(lispobj *where, lispobj object)
 {
@@ -1716,7 +1716,7 @@ size_vector_complex_double_float(lispobj *where)
 }
 #endif
 
-#ifdef type_SimpleArrayComplexLongFloat
+#ifdef SIMPLE_ARRAY_COMPLEX_LONG_FLOAT_WIDETAG
 static int
 scav_vector_complex_long_float(lispobj *where, lispobj object)
 {
@@ -1901,170 +1901,197 @@ gc_init(void)
        /* scavtab[i] = scav_immediate; */
 
        for (i = 0; i < 32; i++) {
-               scavtab[type_EvenFixnum|(i<<3)] = scav_immediate;
-               scavtab[type_FunPointer|(i<<3)] = scav_fun_pointer;
-               /* OtherImmediate0 */
-               scavtab[type_ListPointer|(i<<3)] = scav_list_pointer;
-               scavtab[type_OddFixnum|(i<<3)] = scav_immediate;
-               scavtab[type_InstancePointer|(i<<3)] = scav_instance_pointer;
-               /* OtherImmediate1 */
-               scavtab[type_OtherPointer|(i<<3)] = scav_other_pointer;
+               scavtab[EVEN_FIXNUM_LOWTAG|(i<<3)] = scav_immediate;
+               scavtab[FUN_POINTER_LOWTAG|(i<<3)] = scav_fun_pointer;
+               /* skipping OTHER_IMMEDIATE_0_LOWTAG */
+               scavtab[LIST_POINTER_LOWTAG|(i<<3)] = scav_list_pointer;
+               scavtab[ODD_FIXNUM_LOWTAG|(i<<3)] = scav_immediate;
+               scavtab[INSTANCE_POINTER_LOWTAG|(i<<3)] =scav_instance_pointer;
+               /* skipping OTHER_IMMEDIATE_1_LOWTAG */
+               scavtab[OTHER_POINTER_LOWTAG|(i<<3)] = scav_other_pointer;
        }
 
-       scavtab[type_Bignum] = scav_unboxed;
-       scavtab[type_Ratio] = scav_boxed;
-       scavtab[type_SingleFloat] = scav_unboxed;
-       scavtab[type_DoubleFloat] = scav_unboxed;
-#ifdef type_LongFloat
-       scavtab[type_LongFloat] = scav_unboxed;
-#endif
-       scavtab[type_Complex] = scav_boxed;
-#ifdef type_ComplexSingleFloat
-       scavtab[type_ComplexSingleFloat] = scav_unboxed;
-#endif
-#ifdef type_ComplexDoubleFloat
-       scavtab[type_ComplexDoubleFloat] = scav_unboxed;
-#endif
-#ifdef type_ComplexLongFloat
-       scavtab[type_ComplexLongFloat] = scav_unboxed;
-#endif
-       scavtab[type_SimpleArray] = scav_boxed;
-       scavtab[type_SimpleString] = scav_string;
-       scavtab[type_SimpleBitVector] = scav_vector_bit;
-       scavtab[type_SimpleVector] = scav_vector;
-       scavtab[type_SimpleArrayUnsignedByte2] = scav_vector_unsigned_byte_2;
-       scavtab[type_SimpleArrayUnsignedByte4] = scav_vector_unsigned_byte_4;
-       scavtab[type_SimpleArrayUnsignedByte8] = scav_vector_unsigned_byte_8;
-       scavtab[type_SimpleArrayUnsignedByte16] = scav_vector_unsigned_byte_16;
-       scavtab[type_SimpleArrayUnsignedByte32] = scav_vector_unsigned_byte_32;
-#ifdef type_SimpleArraySignedByte8
-       scavtab[type_SimpleArraySignedByte8] = scav_vector_unsigned_byte_8;
-#endif
-#ifdef type_SimpleArraySignedByte16
-       scavtab[type_SimpleArraySignedByte16] = scav_vector_unsigned_byte_16;
-#endif
-#ifdef type_SimpleArraySignedByte30
-       scavtab[type_SimpleArraySignedByte30] = scav_vector_unsigned_byte_32;
-#endif
-#ifdef type_SimpleArraySignedByte32
-       scavtab[type_SimpleArraySignedByte32] = scav_vector_unsigned_byte_32;
-#endif
-       scavtab[type_SimpleArraySingleFloat] = scav_vector_single_float;
-       scavtab[type_SimpleArrayDoubleFloat] = scav_vector_double_float;
-#ifdef type_SimpleArrayLongFloat
-       scavtab[type_SimpleArrayLongFloat] = scav_vector_long_float;
-#endif
-#ifdef type_SimpleArrayComplexSingleFloat
-       scavtab[type_SimpleArrayComplexSingleFloat] = scav_vector_complex_single_float;
-#endif
-#ifdef type_SimpleArrayComplexDoubleFloat
-       scavtab[type_SimpleArrayComplexDoubleFloat] = scav_vector_complex_double_float;
-#endif
-#ifdef type_SimpleArrayComplexLongFloat
-       scavtab[type_SimpleArrayComplexLongFloat] = scav_vector_complex_long_float;
-#endif
-       scavtab[type_ComplexString] = scav_boxed;
-       scavtab[type_ComplexBitVector] = scav_boxed;
-       scavtab[type_ComplexVector] = scav_boxed;
-       scavtab[type_ComplexArray] = scav_boxed;
-       scavtab[type_CodeHeader] = scav_code_header;
-       scavtab[type_SimpleFunHeader] = scav_fun_header;
-       scavtab[type_ClosureFunHeader] = scav_fun_header;
-       scavtab[type_ReturnPcHeader] = scav_return_pc_header;
+       scavtab[BIGNUM_WIDETAG] = scav_unboxed;
+       scavtab[RATIO_WIDETAG] = scav_boxed;
+       scavtab[SINGLE_FLOAT_WIDETAG] = scav_unboxed;
+       scavtab[DOUBLE_FLOAT_WIDETAG] = scav_unboxed;
+#ifdef LONG_FLOAT_WIDETAG
+       scavtab[LONG_FLOAT_WIDETAG] = scav_unboxed;
+#endif
+       scavtab[COMPLEX_WIDETAG] = scav_boxed;
+#ifdef COMPLEX_SINGLE_FLOAT_WIDETAG
+       scavtab[COMPLEX_SINGLE_FLOAT_WIDETAG] = scav_unboxed;
+#endif
+#ifdef COMPLEX_DOUBLE_FLOAT_WIDETAG
+       scavtab[COMPLEX_DOUBLE_FLOAT_WIDETAG] = scav_unboxed;
+#endif
+#ifdef COMPLEX_LONG_FLOAT_WIDETAG
+       scavtab[COMPLEX_LONG_FLOAT_WIDETAG] = scav_unboxed;
+#endif
+       scavtab[SIMPLE_ARRAY_WIDETAG] = scav_boxed;
+       scavtab[SIMPLE_STRING_WIDETAG] = scav_string;
+       scavtab[SIMPLE_BIT_VECTOR_WIDETAG] = scav_vector_bit;
+       scavtab[SIMPLE_VECTOR_WIDETAG] = scav_vector;
+       scavtab[SIMPLE_ARRAY_UNSIGNED_BYTE_2_WIDETAG] =
+           scav_vector_unsigned_byte_2;
+       scavtab[SIMPLE_ARRAY_UNSIGNED_BYTE_4_WIDETAG] =
+           scav_vector_unsigned_byte_4;
+       scavtab[SIMPLE_ARRAY_UNSIGNED_BYTE_8_WIDETAG] =
+           scav_vector_unsigned_byte_8;
+       scavtab[SIMPLE_ARRAY_UNSIGNED_BYTE_16_WIDETAG] =
+           scav_vector_unsigned_byte_16;
+       scavtab[SIMPLE_ARRAY_UNSIGNED_BYTE_32_WIDETAG] =
+           scav_vector_unsigned_byte_32;
+#ifdef SIMPLE_ARRAY_SIGNED_BYTE_8_WIDETAG
+       scavtab[SIMPLE_ARRAY_SIGNED_BYTE_8_WIDETAG] =
+           scav_vector_unsigned_byte_8;
+#endif
+#ifdef SIMPLE_ARRAY_SIGNED_BYTE_16_WIDETAG
+       scavtab[SIMPLE_ARRAY_SIGNED_BYTE_16_WIDETAG] =
+           scav_vector_unsigned_byte_16;
+#endif
+#ifdef SIMPLE_ARRAY_SIGNED_BYTE_30_WIDETAG
+       scavtab[SIMPLE_ARRAY_SIGNED_BYTE_30_WIDETAG] =
+           scav_vector_unsigned_byte_32;
+#endif
+#ifdef SIMPLE_ARRAY_SIGNED_BYTE_32_WIDETAG
+       scavtab[SIMPLE_ARRAY_SIGNED_BYTE_32_WIDETAG] =
+           scav_vector_unsigned_byte_32;
+#endif
+       scavtab[SIMPLE_ARRAY_SINGLE_FLOAT_WIDETAG] = scav_vector_single_float;
+       scavtab[SIMPLE_ARRAY_DOUBLE_FLOAT_WIDETAG] = scav_vector_double_float;
+#ifdef SIMPLE_ARRAY_LONG_FLOAT_WIDETAG
+       scavtab[SIMPLE_ARRAY_LONG_FLOAT_WIDETAG] = scav_vector_long_float;
+#endif
+#ifdef SIMPLE_ARRAY_COMPLEX_SINGLE_FLOAT_WIDETAG
+       scavtab[SIMPLE_ARRAY_COMPLEX_SINGLE_FLOAT_WIDETAG] =
+           scav_vector_complex_single_float;
+#endif
+#ifdef SIMPLE_ARRAY_COMPLEX_DOUBLE_FLOAT_WIDETAG
+       scavtab[SIMPLE_ARRAY_COMPLEX_DOUBLE_FLOAT_WIDETAG] =
+           scav_vector_complex_double_float;
+#endif
+#ifdef SIMPLE_ARRAY_COMPLEX_LONG_FLOAT_WIDETAG
+       scavtab[SIMPLE_ARRAY_COMPLEX_LONG_FLOAT_WIDETAG] =
+           scav_vector_complex_long_float;
+#endif
+       scavtab[COMPLEX_STRING_WIDETAG] = scav_boxed;
+       scavtab[COMPLEX_BIT_VECTOR_WIDETAG] = scav_boxed;
+       scavtab[COMPLEX_VECTOR_WIDETAG] = scav_boxed;
+       scavtab[COMPLEX_ARRAY_WIDETAG] = scav_boxed;
+       scavtab[CODE_HEADER_WIDETAG] = scav_code_header;
+       scavtab[SIMPLE_FUN_HEADER_WIDETAG] = scav_fun_header;
+       scavtab[CLOSURE_FUN_HEADER_WIDETAG] = scav_fun_header;
+       scavtab[RETURN_PC_HEADER_WIDETAG] = scav_return_pc_header;
 #ifdef __i386__
-       scavtab[type_ClosureHeader] = scav_closure_header;
-       scavtab[type_FuncallableInstanceHeader] = scav_closure_header;
+       scavtab[CLOSURE_HEADER_WIDETAG] = scav_closure_header;
+       scavtab[FUNCALLABLE_INSTANCE_HEADER_WIDETAG] = scav_closure_header;
 #else
-       scavtab[type_ClosureHeader] = scav_boxed;
-       scavtab[type_FuncallableInstanceHeader] = scav_boxed;
-#endif
-       scavtab[type_ValueCellHeader] = scav_boxed;
-        scavtab[type_SymbolHeader] = scav_boxed;
-       scavtab[type_BaseChar] = scav_immediate;
-       scavtab[type_Sap] = scav_unboxed;
-       scavtab[type_UnboundMarker] = scav_immediate;
-       scavtab[type_WeakPointer] = scav_weak_pointer;
-        scavtab[type_InstanceHeader] = scav_boxed;
+       scavtab[CLOSURE_HEADER_WIDETAG] = scav_boxed;
+       scavtab[FUNCALLABLE_INSTANCE_HEADER_WIDETAG] = scav_boxed;
+#endif
+       scavtab[VALUE_CELL_HEADER_WIDETAG] = scav_boxed;
+        scavtab[SYMBOL_HEADER_WIDETAG] = scav_boxed;
+       scavtab[BASE_CHAR_WIDETAG] = scav_immediate;
+       scavtab[SAP_WIDETAG] = scav_unboxed;
+       scavtab[UNBOUND_MARKER_WIDETAG] = scav_immediate;
+       scavtab[WEAK_POINTER_WIDETAG] = scav_weak_pointer;
+        scavtab[INSTANCE_HEADER_WIDETAG] = scav_boxed;
 #ifndef sparc
-        scavtab[type_Fdefn] = scav_fdefn;
+        scavtab[FDEFN_WIDETAG] = scav_fdefn;
 #else
-        scavtab[type_Fdefn] = scav_boxed;
+        scavtab[FDEFN_WIDETAG] = scav_boxed;
 #endif
 
        /* Transport Other Table */
        for (i = 0; i < 256; i++)
                transother[i] = trans_lose;
 
-       transother[type_Bignum] = trans_unboxed;
-       transother[type_Ratio] = trans_boxed;
-       transother[type_SingleFloat] = trans_unboxed;
-       transother[type_DoubleFloat] = trans_unboxed;
-#ifdef type_LongFloat
-       transother[type_LongFloat] = trans_unboxed;
-#endif
-       transother[type_Complex] = trans_boxed;
-#ifdef type_ComplexSingleFloat
-       transother[type_ComplexSingleFloat] = trans_unboxed;
-#endif
-#ifdef type_ComplexDoubleFloat
-       transother[type_ComplexDoubleFloat] = trans_unboxed;
-#endif
-#ifdef type_ComplexLongFloat
-       transother[type_ComplexLongFloat] = trans_unboxed;
-#endif
-       transother[type_SimpleArray] = trans_boxed;
-       transother[type_SimpleString] = trans_string;
-       transother[type_SimpleBitVector] = trans_vector_bit;
-       transother[type_SimpleVector] = trans_vector;
-       transother[type_SimpleArrayUnsignedByte2] = trans_vector_unsigned_byte_2;
-       transother[type_SimpleArrayUnsignedByte4] = trans_vector_unsigned_byte_4;
-       transother[type_SimpleArrayUnsignedByte8] = trans_vector_unsigned_byte_8;
-       transother[type_SimpleArrayUnsignedByte16] = trans_vector_unsigned_byte_16;
-       transother[type_SimpleArrayUnsignedByte32] = trans_vector_unsigned_byte_32;
-#ifdef type_SimpleArraySignedByte8
-       transother[type_SimpleArraySignedByte8] = trans_vector_unsigned_byte_8;
-#endif
-#ifdef type_SimpleArraySignedByte16
-       transother[type_SimpleArraySignedByte16] = trans_vector_unsigned_byte_16;
-#endif
-#ifdef type_SimpleArraySignedByte30
-       transother[type_SimpleArraySignedByte30] = trans_vector_unsigned_byte_32;
-#endif
-#ifdef type_SimpleArraySignedByte32
-       transother[type_SimpleArraySignedByte32] = trans_vector_unsigned_byte_32;
-#endif
-       transother[type_SimpleArraySingleFloat] = trans_vector_single_float;
-       transother[type_SimpleArrayDoubleFloat] = trans_vector_double_float;
-#ifdef type_SimpleArrayLongFloat
-       transother[type_SimpleArrayLongFloat] = trans_vector_long_float;
-#endif
-#ifdef type_SimpleArrayComplexSingleFloat
-       transother[type_SimpleArrayComplexSingleFloat] = trans_vector_complex_single_float;
-#endif
-#ifdef type_SimpleArrayComplexDoubleFloat
-       transother[type_SimpleArrayComplexDoubleFloat] = trans_vector_complex_double_float;
-#endif
-#ifdef type_SimpleArrayComplexLongFloat
-       transother[type_SimpleArrayComplexLongFloat] = trans_vector_complex_long_float;
-#endif
-       transother[type_ComplexString] = trans_boxed;
-       transother[type_ComplexBitVector] = trans_boxed;
-       transother[type_ComplexVector] = trans_boxed;
-       transother[type_ComplexArray] = trans_boxed;
-       transother[type_CodeHeader] = trans_code_header;
-       transother[type_SimpleFunHeader] = trans_fun_header;
-       transother[type_ClosureFunHeader] = trans_fun_header;
-       transother[type_ReturnPcHeader] = trans_return_pc_header;
-       transother[type_ClosureHeader] = trans_boxed;
-       transother[type_FuncallableInstanceHeader] = trans_boxed;
-       transother[type_ValueCellHeader] = trans_boxed;
-       transother[type_SymbolHeader] = trans_boxed;
-       transother[type_BaseChar] = trans_immediate;
-       transother[type_Sap] = trans_unboxed;
-       transother[type_UnboundMarker] = trans_immediate;
-       transother[type_WeakPointer] = trans_weak_pointer;
-        transother[type_InstanceHeader] = trans_boxed;
-       transother[type_Fdefn] = trans_boxed;
+       transother[BIGNUM_WIDETAG] = trans_unboxed;
+       transother[RATIO_WIDETAG] = trans_boxed;
+       transother[SINGLE_FLOAT_WIDETAG] = trans_unboxed;
+       transother[DOUBLE_FLOAT_WIDETAG] = trans_unboxed;
+#ifdef LONG_FLOAT_WIDETAG
+       transother[LONG_FLOAT_WIDETAG] = trans_unboxed;
+#endif
+       transother[COMPLEX_WIDETAG] = trans_boxed;
+#ifdef COMPLEX_SINGLE_FLOAT_WIDETAG
+       transother[COMPLEX_SINGLE_FLOAT_WIDETAG] = trans_unboxed;
+#endif
+#ifdef COMPLEX_DOUBLE_FLOAT_WIDETAG
+       transother[COMPLEX_DOUBLE_FLOAT_WIDETAG] = trans_unboxed;
+#endif
+#ifdef COMPLEX_LONG_FLOAT_WIDETAG
+       transother[COMPLEX_LONG_FLOAT_WIDETAG] = trans_unboxed;
+#endif
+       transother[SIMPLE_ARRAY_WIDETAG] = trans_boxed;
+       transother[SIMPLE_STRING_WIDETAG] = trans_string;
+       transother[SIMPLE_BIT_VECTOR_WIDETAG] = trans_vector_bit;
+       transother[SIMPLE_VECTOR_WIDETAG] = trans_vector;
+       transother[SIMPLE_ARRAY_UNSIGNED_BYTE_2_WIDETAG] =
+           trans_vector_unsigned_byte_2;
+       transother[SIMPLE_ARRAY_UNSIGNED_BYTE_4_WIDETAG] =
+           trans_vector_unsigned_byte_4;
+       transother[SIMPLE_ARRAY_UNSIGNED_BYTE_8_WIDETAG] =
+           trans_vector_unsigned_byte_8;
+       transother[SIMPLE_ARRAY_UNSIGNED_BYTE_16_WIDETAG] =
+           trans_vector_unsigned_byte_16;
+       transother[SIMPLE_ARRAY_UNSIGNED_BYTE_32_WIDETAG] =
+           trans_vector_unsigned_byte_32;
+#ifdef SIMPLE_ARRAY_SIGNED_BYTE_8_WIDETAG
+       transother[SIMPLE_ARRAY_SIGNED_BYTE_8_WIDETAG] =
+           trans_vector_unsigned_byte_8;
+#endif
+#ifdef SIMPLE_ARRAY_SIGNED_BYTE_16_WIDETAG
+       transother[SIMPLE_ARRAY_SIGNED_BYTE_16_WIDETAG] =
+           trans_vector_unsigned_byte_16;
+#endif
+#ifdef SIMPLE_ARRAY_SIGNED_BYTE_30_WIDETAG
+       transother[SIMPLE_ARRAY_SIGNED_BYTE_30_WIDETAG] =
+           trans_vector_unsigned_byte_32;
+#endif
+#ifdef SIMPLE_ARRAY_SIGNED_BYTE_32_WIDETAG
+       transother[SIMPLE_ARRAY_SIGNED_BYTE_32_WIDETAG] =
+           trans_vector_unsigned_byte_32;
+#endif
+       transother[SIMPLE_ARRAY_SINGLE_FLOAT_WIDETAG] =
+           trans_vector_single_float;
+       transother[SIMPLE_ARRAY_DOUBLE_FLOAT_WIDETAG] =
+           trans_vector_double_float;
+#ifdef SIMPLE_ARRAY_LONG_FLOAT_WIDETAG
+       transother[SIMPLE_ARRAY_LONG_FLOAT_WIDETAG] =
+           trans_vector_long_float;
+#endif
+#ifdef SIMPLE_ARRAY_COMPLEX_SINGLE_FLOAT_WIDETAG
+       transother[SIMPLE_ARRAY_COMPLEX_SINGLE_FLOAT_WIDETAG] =
+           trans_vector_complex_single_float;
+#endif
+#ifdef SIMPLE_ARRAY_COMPLEX_DOUBLE_FLOAT_WIDETAG
+       transother[SIMPLE_ARRAY_COMPLEX_DOUBLE_FLOAT_WIDETAG] =
+           trans_vector_complex_double_float;
+#endif
+#ifdef SIMPLE_ARRAY_COMPLEX_LONG_FLOAT_WIDETAG
+       transother[SIMPLE_ARRAY_COMPLEX_LONG_FLOAT_WIDETAG] =
+           trans_vector_complex_long_float;
+#endif
+       transother[COMPLEX_STRING_WIDETAG] = trans_boxed;
+       transother[COMPLEX_BIT_VECTOR_WIDETAG] = trans_boxed;
+       transother[COMPLEX_VECTOR_WIDETAG] = trans_boxed;
+       transother[COMPLEX_ARRAY_WIDETAG] = trans_boxed;
+       transother[CODE_HEADER_WIDETAG] = trans_code_header;
+       transother[SIMPLE_FUN_HEADER_WIDETAG] = trans_fun_header;
+       transother[CLOSURE_FUN_HEADER_WIDETAG] = trans_fun_header;
+       transother[RETURN_PC_HEADER_WIDETAG] = trans_return_pc_header;
+       transother[CLOSURE_HEADER_WIDETAG] = trans_boxed;
+       transother[FUNCALLABLE_INSTANCE_HEADER_WIDETAG] = trans_boxed;
+       transother[VALUE_CELL_HEADER_WIDETAG] = trans_boxed;
+       transother[SYMBOL_HEADER_WIDETAG] = trans_boxed;
+       transother[BASE_CHAR_WIDETAG] = trans_immediate;
+       transother[SAP_WIDETAG] = trans_unboxed;
+       transother[UNBOUND_MARKER_WIDETAG] = trans_immediate;
+       transother[WEAK_POINTER_WIDETAG] = trans_weak_pointer;
+        transother[INSTANCE_HEADER_WIDETAG] = trans_boxed;
+       transother[FDEFN_WIDETAG] = trans_boxed;
 
        /* Size table */
 
@@ -2072,89 +2099,101 @@ gc_init(void)
                sizetab[i] = size_lose;
 
        for (i = 0; i < 32; i++) {
-               sizetab[type_EvenFixnum|(i<<3)] = size_immediate;
-               sizetab[type_FunPointer|(i<<3)] = size_pointer;
-               /* OtherImmediate0 */
-               sizetab[type_ListPointer|(i<<3)] = size_pointer;
-               sizetab[type_OddFixnum|(i<<3)] = size_immediate;
-               sizetab[type_InstancePointer|(i<<3)] = size_pointer;
-               /* OtherImmediate1 */
-               sizetab[type_OtherPointer|(i<<3)] = size_pointer;
+               sizetab[EVEN_FIXNUM_LOWTAG|(i<<3)] = size_immediate;
+               sizetab[FUN_POINTER_LOWTAG|(i<<3)] = size_pointer;
+               /* skipping OTHER_IMMEDIATE_0_LOWTAG */
+               sizetab[LIST_POINTER_LOWTAG|(i<<3)] = size_pointer;
+               sizetab[ODD_FIXNUM_LOWTAG|(i<<3)] = size_immediate;
+               sizetab[INSTANCE_POINTER_LOWTAG|(i<<3)] = size_pointer;
+               /* skipping OTHER_IMMEDIATE_1_LOWTAG */
+               sizetab[OTHER_POINTER_LOWTAG|(i<<3)] = size_pointer;
        }
 
-       sizetab[type_Bignum] = size_unboxed;
-       sizetab[type_Ratio] = size_boxed;
-       sizetab[type_SingleFloat] = size_unboxed;
-       sizetab[type_DoubleFloat] = size_unboxed;
-#ifdef type_LongFloat
-       sizetab[type_LongFloat] = size_unboxed;
-#endif
-       sizetab[type_Complex] = size_boxed;
-#ifdef type_ComplexSingleFloat
-       sizetab[type_ComplexSingleFloat] = size_unboxed;
-#endif
-#ifdef type_ComplexDoubleFloat
-       sizetab[type_ComplexDoubleFloat] = size_unboxed;
-#endif
-#ifdef type_ComplexLongFloat
-       sizetab[type_ComplexLongFloat] = size_unboxed;
-#endif
-       sizetab[type_SimpleArray] = size_boxed;
-       sizetab[type_SimpleString] = size_string;
-       sizetab[type_SimpleBitVector] = size_vector_bit;
-       sizetab[type_SimpleVector] = size_vector;
-       sizetab[type_SimpleArrayUnsignedByte2] = size_vector_unsigned_byte_2;
-       sizetab[type_SimpleArrayUnsignedByte4] = size_vector_unsigned_byte_4;
-       sizetab[type_SimpleArrayUnsignedByte8] = size_vector_unsigned_byte_8;
-       sizetab[type_SimpleArrayUnsignedByte16] = size_vector_unsigned_byte_16;
-       sizetab[type_SimpleArrayUnsignedByte32] = size_vector_unsigned_byte_32;
-#ifdef type_SimpleArraySignedByte8
-       sizetab[type_SimpleArraySignedByte8] = size_vector_unsigned_byte_8;
-#endif
-#ifdef type_SimpleArraySignedByte16
-       sizetab[type_SimpleArraySignedByte16] = size_vector_unsigned_byte_16;
-#endif
-#ifdef type_SimpleArraySignedByte30
-       sizetab[type_SimpleArraySignedByte30] = size_vector_unsigned_byte_32;
-#endif
-#ifdef type_SimpleArraySignedByte32
-       sizetab[type_SimpleArraySignedByte32] = size_vector_unsigned_byte_32;
-#endif
-       sizetab[type_SimpleArraySingleFloat] = size_vector_single_float;
-       sizetab[type_SimpleArrayDoubleFloat] = size_vector_double_float;
-#ifdef type_SimpleArrayLongFloat
-       sizetab[type_SimpleArrayLongFloat] = size_vector_long_float;
-#endif
-#ifdef type_SimpleArrayComplexSingleFloat
-       sizetab[type_SimpleArrayComplexSingleFloat] = size_vector_complex_single_float;
-#endif
-#ifdef type_SimpleArrayComplexDoubleFloat
-       sizetab[type_SimpleArrayComplexDoubleFloat] = size_vector_complex_double_float;
-#endif
-#ifdef type_SimpleArrayComplexLongFloat
-       sizetab[type_SimpleArrayComplexLongFloat] = size_vector_complex_long_float;
-#endif
-       sizetab[type_ComplexString] = size_boxed;
-       sizetab[type_ComplexBitVector] = size_boxed;
-       sizetab[type_ComplexVector] = size_boxed;
-       sizetab[type_ComplexArray] = size_boxed;
-       sizetab[type_CodeHeader] = size_code_header;
+       sizetab[BIGNUM_WIDETAG] = size_unboxed;
+       sizetab[RATIO_WIDETAG] = size_boxed;
+       sizetab[SINGLE_FLOAT_WIDETAG] = size_unboxed;
+       sizetab[DOUBLE_FLOAT_WIDETAG] = size_unboxed;
+#ifdef LONG_FLOAT_WIDETAG
+       sizetab[LONG_FLOAT_WIDETAG] = size_unboxed;
+#endif
+       sizetab[COMPLEX_WIDETAG] = size_boxed;
+#ifdef COMPLEX_SINGLE_FLOAT_WIDETAG
+       sizetab[COMPLEX_SINGLE_FLOAT_WIDETAG] = size_unboxed;
+#endif
+#ifdef COMPLEX_DOUBLE_FLOAT_WIDETAG
+       sizetab[COMPLEX_DOUBLE_FLOAT_WIDETAG] = size_unboxed;
+#endif
+#ifdef COMPLEX_LONG_FLOAT_WIDETAG
+       sizetab[COMPLEX_LONG_FLOAT_WIDETAG] = size_unboxed;
+#endif
+       sizetab[SIMPLE_ARRAY_WIDETAG] = size_boxed;
+       sizetab[SIMPLE_STRING_WIDETAG] = size_string;
+       sizetab[SIMPLE_BIT_VECTOR_WIDETAG] = size_vector_bit;
+       sizetab[SIMPLE_VECTOR_WIDETAG] = size_vector;
+       sizetab[SIMPLE_ARRAY_UNSIGNED_BYTE_2_WIDETAG] =
+           size_vector_unsigned_byte_2;
+       sizetab[SIMPLE_ARRAY_UNSIGNED_BYTE_4_WIDETAG] =
+           size_vector_unsigned_byte_4;
+       sizetab[SIMPLE_ARRAY_UNSIGNED_BYTE_8_WIDETAG] =
+           size_vector_unsigned_byte_8;
+       sizetab[SIMPLE_ARRAY_UNSIGNED_BYTE_16_WIDETAG] =
+           size_vector_unsigned_byte_16;
+       sizetab[SIMPLE_ARRAY_UNSIGNED_BYTE_32_WIDETAG] =
+           size_vector_unsigned_byte_32;
+#ifdef SIMPLE_ARRAY_SIGNED_BYTE_8_WIDETAG
+       sizetab[SIMPLE_ARRAY_SIGNED_BYTE_8_WIDETAG] =
+           size_vector_unsigned_byte_8;
+#endif
+#ifdef SIMPLE_ARRAY_SIGNED_BYTE_16_WIDETAG
+       sizetab[SIMPLE_ARRAY_SIGNED_BYTE_16_WIDETAG] =
+           size_vector_unsigned_byte_16;
+#endif
+#ifdef SIMPLE_ARRAY_SIGNED_BYTE_30_WIDETAG
+       sizetab[SIMPLE_ARRAY_SIGNED_BYTE_30_WIDETAG] =
+           size_vector_unsigned_byte_32;
+#endif
+#ifdef SIMPLE_ARRAY_SIGNED_BYTE_32_WIDETAG
+       sizetab[SIMPLE_ARRAY_SIGNED_BYTE_32_WIDETAG] =
+           size_vector_unsigned_byte_32;
+#endif
+       sizetab[SIMPLE_ARRAY_SINGLE_FLOAT_WIDETAG] = size_vector_single_float;
+       sizetab[SIMPLE_ARRAY_DOUBLE_FLOAT_WIDETAG] = size_vector_double_float;
+#ifdef SIMPLE_ARRAY_LONG_FLOAT_WIDETAG
+       sizetab[SIMPLE_ARRAY_LONG_FLOAT_WIDETAG] = size_vector_long_float;
+#endif
+#ifdef SIMPLE_ARRAY_COMPLEX_SINGLE_FLOAT_WIDETAG
+       sizetab[SIMPLE_ARRAY_COMPLEX_SINGLE_FLOAT_WIDETAG] =
+           size_vector_complex_single_float;
+#endif
+#ifdef SIMPLE_ARRAY_COMPLEX_DOUBLE_FLOAT_WIDETAG
+       sizetab[SIMPLE_ARRAY_COMPLEX_DOUBLE_FLOAT_WIDETAG] =
+           size_vector_complex_double_float;
+#endif
+#ifdef SIMPLE_ARRAY_COMPLEX_LONG_FLOAT_WIDETAG
+       sizetab[SIMPLE_ARRAY_COMPLEX_LONG_FLOAT_WIDETAG] =
+           size_vector_complex_long_float;
+#endif
+       sizetab[COMPLEX_STRING_WIDETAG] = size_boxed;
+       sizetab[COMPLEX_BIT_VECTOR_WIDETAG] = size_boxed;
+       sizetab[COMPLEX_VECTOR_WIDETAG] = size_boxed;
+       sizetab[COMPLEX_ARRAY_WIDETAG] = size_boxed;
+       sizetab[CODE_HEADER_WIDETAG] = size_code_header;
 #if 0
        /* Shouldn't see these so just lose if it happens */
-       sizetab[type_SimpleFunHeader] = size_function_header;
-       sizetab[type_ClosureFunHeader] = size_function_header;
-       sizetab[type_ReturnPcHeader] = size_return_pc_header;
-#endif
-       sizetab[type_ClosureHeader] = size_boxed;
-       sizetab[type_FuncallableInstanceHeader] = size_boxed;
-       sizetab[type_ValueCellHeader] = size_boxed;
-       sizetab[type_SymbolHeader] = size_boxed;
-       sizetab[type_BaseChar] = size_immediate;
-       sizetab[type_Sap] = size_unboxed;
-       sizetab[type_UnboundMarker] = size_immediate;
-       sizetab[type_WeakPointer] = size_weak_pointer;
-        sizetab[type_InstanceHeader] = size_boxed;
-       sizetab[type_Fdefn] = size_boxed;
+       sizetab[SIMPLE_FUN_HEADER_WIDETAG] = size_function_header;
+       sizetab[CLOSURE_FUN_HEADER_WIDETAG] = size_function_header;
+       sizetab[RETURN_PC_HEADER_WIDETAG] = size_return_pc_header;
+#endif
+       sizetab[CLOSURE_HEADER_WIDETAG] = size_boxed;
+       sizetab[FUNCALLABLE_INSTANCE_HEADER_WIDETAG] = size_boxed;
+       sizetab[VALUE_CELL_HEADER_WIDETAG] = size_boxed;
+       sizetab[SYMBOL_HEADER_WIDETAG] = size_boxed;
+       sizetab[BASE_CHAR_WIDETAG] = size_immediate;
+       sizetab[SAP_WIDETAG] = size_unboxed;
+       sizetab[UNBOUND_MARKER_WIDETAG] = size_immediate;
+       sizetab[WEAK_POINTER_WIDETAG] = size_weak_pointer;
+        sizetab[INSTANCE_HEADER_WIDETAG] = size_boxed;
+       sizetab[FDEFN_WIDETAG] = size_boxed;
 }
 \f
 /* noise to manipulate the gc trigger stuff */