0.7.8.12:
[sbcl.git] / src / runtime / alloc.c
index 0fe2be7..00a24f1 100644 (file)
 
 #define ALIGNED_SIZE(n) (n+LOWTAG_MASK) & ~LOWTAG_MASK
 
-#if defined GENCGC
+#if defined LISP_FEATURE_GENCGC
 extern lispobj *alloc(int bytes);
 #else
 static lispobj *
 alloc(int bytes)
 {
-    lispobj *result;
+    char *result;
 
     /* Round to dual word boundary. */
     bytes = (bytes + LOWTAG_MASK) & ~LOWTAG_MASK;
 
-    result = GET_FREE_POINTER();
+    result = (char *)GET_FREE_POINTER();
 
-    SET_FREE_POINTER(result + (bytes / sizeof(lispobj)));
+    SET_FREE_POINTER((lispobj *)(result + bytes));
 
     if (GET_GC_TRIGGER() && GET_FREE_POINTER() > GET_GC_TRIGGER()) {
        SET_GC_TRIGGER((char *)GET_FREE_POINTER()
                       - (char *)current_dynamic_space);
     }
-    return result;
+    return (lispobj *) result;
 }
 #endif
 
-static lispobj *
+lispobj *
 alloc_unboxed(int type, int words)
 {
     lispobj *result;
@@ -74,7 +74,7 @@ alloc_vector(int type, int length, int size)
     result->header = type;
     result->length = make_fixnum(length);
 
-    return ((lispobj)result)|OTHER_POINTER_LOWTAG;
+    return make_lispobj(result,OTHER_POINTER_LOWTAG);
 }
 
 lispobj
@@ -85,7 +85,7 @@ alloc_cons(lispobj car, lispobj cdr)
     ptr->car = car;
     ptr->cdr = cdr;
 
-    return (lispobj)ptr | LIST_POINTER_LOWTAG;
+    return make_lispobj(ptr, LIST_POINTER_LOWTAG);
 }
 
 lispobj
@@ -100,7 +100,7 @@ alloc_number(long n)
 
         ptr->digits[0] = n;
 
-       return (lispobj) ptr | OTHER_POINTER_LOWTAG;
+       return make_lispobj(ptr, OTHER_POINTER_LOWTAG);
     }
 }
 
@@ -120,10 +120,9 @@ alloc_string(char *str)
 lispobj
 alloc_sap(void *ptr)
 {
-    int n_words_to_alloc =
-       (sizeof(struct sap) - sizeof(lispobj)) / sizeof(u32);
-    struct sap *sap =
-       (struct sap *)alloc_unboxed((int)SAP_WIDETAG, n_words_to_alloc);
+    struct sap *sap;
+    sap=(struct sap *)
+       alloc_unboxed((int)SAP_WIDETAG, sizeof(struct sap)/sizeof(lispobj) -1);
     sap->pointer = ptr;
-    return (lispobj) sap | OTHER_POINTER_LOWTAG;
+    return make_lispobj(sap,OTHER_POINTER_LOWTAG);
 }