0.8.21.17:
[sbcl.git] / src / compiler / alpha / vm.lisp
index cb00650..43e8987 100644 (file)
       ((null classes)
        (nreverse forms))))
 
-;;; see comment in ../x86/vm.lisp.  The value of 7 was taken from
-;;; vm:catch-block-size in a cmucl that I happened to have around
-;;; and seems to be working so far    -dan
-(def!constant sb!vm::kludge-nondeterministic-catch-block-size 7)
+(def!constant kludge-nondeterministic-catch-block-size 7)
 
 (!define-storage-classes
 
                :element-size 2 :alignment 2) ; (signed-byte 64)
   (unsigned-stack non-descriptor-stack
                  :element-size 2 :alignment 2) ; (unsigned-byte 64)
-  (base-char-stack non-descriptor-stack) ; non-descriptor characters.
+  (character-stack non-descriptor-stack) ; non-descriptor characters.
   (sap-stack non-descriptor-stack
             :element-size 2 :alignment 2) ; System area pointers.
   (single-stack non-descriptor-stack) ; single-floats
                   :alternate-scs (control-stack))
 
   ;; Non-Descriptor characters
-  (base-char-reg registers
+  (character-reg registers
                  :locations #.non-descriptor-regs
    :constant-scs (immediate)
    :save-p t
-   :alternate-scs (base-char-stack))
+   :alternate-scs (character-stack))
 
   ;; Non-Descriptor SAP's (arbitrary pointers into address space)
   (sap-reg registers
 
   ;; A catch or unwind block.
   (catch-block control-stack
-               :element-size sb!vm::kludge-nondeterministic-catch-block-size))
+               :element-size kludge-nondeterministic-catch-block-size))
 \f
 ;;; Make some random tns for important registers.
 (macrolet ((defregtn (name sc)
      (sc-number-or-lose 'zero))
     (null
      (sc-number-or-lose 'null ))
-    ((or fixnum system-area-pointer character)
+    ((or (integer sb!xc:most-negative-fixnum sb!xc:most-positive-fixnum)
+        system-area-pointer character)
      (sc-number-or-lose 'immediate ))
     (symbol
      (if (static-symbol-p value)
       (non-descriptor-stack (format nil "NS~D" offset))
       (constant (format nil "Const~D" offset))
       (immediate-constant "Immed"))))
+\f
+;;; The loader uses this to convert alien names to the form they
+;;; occure in the symbol table (for example, prepending an
+;;; underscore). 
+(defun extern-alien-name (name)
+  (declare (type string name))
+  ;; ELF ports currently don't need any prefix
+  (typecase name
+    (simple-base-string name)
+    (base-string (coerce name 'simple-base-string))
+    (t (handler-case (coerce name 'simple-base-string)
+        (type-error () (error "invalid external alien name: ~S" name))))))