Fix make-array transforms.
[sbcl.git] / src / compiler / generic / vm-macs.lisp
index a3863c8..74a9e09 100644 (file)
             (forms
              `(progn
                 (defknown ,cas-trans (,type ,slot-type ,slot-type)
-                    ,slot-type (unsafe))
+                    ,slot-type ())
                 #!+compare-and-swap-vops
                 (def-casser ,cas-trans ,offset ,lowtag))))
           (when init
           (constants `(def!constant ,size ,offset))
           (exports size)))
       (when alloc-trans
-        (forms `(def-alloc ,alloc-trans ,offset ,variable-length-p ,widetag
-                           ,lowtag ',(inits))))
+        (forms `(def-alloc ,alloc-trans ,offset
+                  ,(if variable-length-p :var-alloc :fixed-alloc)
+                  ,widetag
+                  ,lowtag ',(inits))))
       `(progn
          (eval-when (:compile-toplevel :load-toplevel :execute)
            (%define-primitive-object
   `(%def-reffer ',name ,offset ,lowtag))
 (defmacro def-setter (name offset lowtag)
   `(%def-setter ',name ,offset ,lowtag))
-(defmacro def-alloc (name words variable-length-p header lowtag inits)
-  `(%def-alloc ',name ,words ,variable-length-p ,header ,lowtag ,inits))
+(defmacro def-alloc (name words alloc-style header lowtag inits)
+  `(%def-alloc ',name ,words ,alloc-style ,header ,lowtag ,inits))
 #!+compare-and-swap-vops
 (defmacro def-casser (name offset lowtag)
   `(%def-casser ',name ,offset ,lowtag))
 (in-package "SB!C")
 
 ;;; the maximum number of SCs in any implementation
-(def!constant sc-number-limit 32)
+(def!constant sc-number-limit 62)
 \f
 ;;; Modular functions
 
     (:untagged
      (ecase signedp
        ((nil) *untagged-unsigned-modular-class*)
-       (t *untagged-signed-modular-class*)))
+       ((t) *untagged-signed-modular-class*)))
     (:tagged
      (aver signedp)
      *tagged-modular-class*)))
   (check-type kind (member :untagged :tagged))
   (check-type width unsigned-byte)
   (dolist (arg lambda-list)
-    (when (member arg lambda-list-keywords)
+    (when (member arg sb!xc:lambda-list-keywords)
       (error "Lambda list keyword ~S is not supported for ~
               modular function lambda lists." arg)))
   `(progn
      (defknown ,name ,(mapcar (constantly 'integer) lambda-list)
                (,(ecase signedp
                    ((nil) 'unsigned-byte)
-                   (t 'signed-byte))
+                   ((t) 'signed-byte))
                  ,width)
                (foldable flushable movable)
                :derive-type (make-modular-fun-type-deriver
   (check-type name symbol)
   (check-type kind (member :untagged :tagged))
   (dolist (arg lambda-list)
-    (when (member arg lambda-list-keywords)
+    (when (member arg sb!xc:lambda-list-keywords)
       (error "Lambda list keyword ~S is not supported for ~
               modular function lambda lists." arg)))
   (with-unique-names (call args)