diff --git a/compiler/rt/vm.lisp b/compiler/rt/vm.lisp index e516bcaeb1a913acc9d27400401c215f56b49122..f84084cca6fa9e953833be6d18293b9cbc66d8d3 100644 --- a/compiler/rt/vm.lisp +++ b/compiler/rt/vm.lisp @@ -42,7 +42,8 @@ "-SC-NUMBER")))) (list* `(define-storage-class ,sc-name ,index ,@(cdr class)) - `(defconstant ,constant-name ,index) + `(eval-when (compile load eval) + (defconstant ,constant-name ,index)) `(export ',constant-name) forms))) (index 0 (1+ index)) @@ -77,8 +78,9 @@ ;; Immediate descriptor objects. Don't have to be seen by GC, but nothing ;; bad will happen if they are. (fixnums, characters, header values, etc). (any-reg registers - :locations (0 2 3 4 9 10 11 12 13 14) + :locations (9 10 11 12 13 14 0 2 3 4) :constant-scs (immediate) + :reserve-locations (0 2 3 4) :save-p t :alternate-scs (control-stack)) @@ -185,6 +187,15 @@ (catch-block control-stack :element-size vm:catch-block-size)) +(export '(single-reg-sc-number double-reg-sc-number)) +(defconstant single-reg-sc-number + (list mc68881-single-reg-sc-number + FPA-single-reg-sc-number + AFPA-single-reg-sc-number)) +(defconstant double-reg-sc-number + (list mc68881-double-reg-sc-number + FPA-double-reg-sc-number + AFPA-double-reg-sc-number)) ;;;; Primitive Type Definitions @@ -422,7 +433,8 @@ (return (values *any-primitive-type* nil)))))) (named-type (case (named-type-name type) - ((t bignum ratio complex function system-area-pointer weak-pointer) + ((t bignum ratio complex function system-area-pointer weak-pointer + structure) (values (primitive-type-or-lose (named-type-name type)) t)) ((character base-character string-char) (exactly base-character))