0.8.19.30: less COMPILE-FILE verbosity
[sbcl.git] / src / compiler / ppc / vm.lisp
index 12b552c..dbc2fa3 100644 (file)
 
 (in-package "SB!VM")
 
+;;; NUMBER-STACK-DISPLACEMENT
+;;;
+;;; The number of bytes reserved above the number stack pointer.  These
+;;; slots are required by architecture, mostly (?) to make C backtrace
+;;; work. This must be a power of 2 - see BYTES-REQUIRED-FOR-NUMBER-STACK.
+;;; 
+(def!constant number-stack-displacement
+  (* #!-darwin 2
+     #!+darwin 8
+     n-word-bytes))
 \f
 ;;;; Define the registers
 
   ;; The non-descriptor stacks.
   (signed-stack non-descriptor-stack) ; (signed-byte 32)
   (unsigned-stack non-descriptor-stack) ; (unsigned-byte 32)
-  (base-char-stack non-descriptor-stack) ; non-descriptor characters.
+  (character-stack non-descriptor-stack) ; non-descriptor characters.
   (sap-stack non-descriptor-stack) ; System area pointers.
   (single-stack non-descriptor-stack) ; single-floats
   (double-stack non-descriptor-stack
    :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
       (immediate-constant "Immed"))))
 \f
 ;;; The loader uses this to convert alien names to the form they
-;;; occur in the symbol table.  This is ELF, so do nothing.
+;;; occur in the symbol table.
 
 (defun extern-alien-name (name)
-  (declare (type simple-base-string name))
-  ;; Darwin is non-ELF, and needs a _ prefix
-  #!+darwin (concatenate 'string "_" name)
-  ;; The other (ELF) ports currently don't need any prefix
-  #!-darwin name)
+  (declare (type string name))
+  ;; Darwin is non-ELF, and needs a _ prefix. The other (ELF) ports
+  ;; currently don't need any prefix.
+  (flet ((maybe-prefix (name)
+            #!+darwin (concatenate 'simple-base-string "_" name)
+            #!-darwin name))
+    (typecase name
+      (simple-base-string (maybe-prefix name))
+      (base-string (coerce (maybe-prefix name) 'simple-base-string))
+      (t
+       (handler-case (coerce (maybe-prefix name) 'simple-base-string)
+        (type-error ()
+          (error "invalid external alien name: ~S" name)))))))