0.9.4.70:
[sbcl.git] / src / compiler / mips / insts.lisp
index 2f1b723..dec4636 100644 (file)
   nil)
 
 (defun snarf-error-junk (sap offset &optional length-only)
   nil)
 
 (defun snarf-error-junk (sap offset &optional length-only)
-  (let* ((length (sb!sys:sap-ref-8 sap offset))
+  (let* ((length (sap-ref-8 sap offset))
          (vector (make-array length :element-type '(unsigned-byte 8))))
          (vector (make-array length :element-type '(unsigned-byte 8))))
-    (declare (type sb!sys:system-area-pointer sap)
+    (declare (type system-area-pointer sap)
              (type (unsigned-byte 8) length)
              (type (simple-array (unsigned-byte 8) (*)) vector))
     (cond (length-only
            (values 0 (1+ length) nil nil))
           (t
              (type (unsigned-byte 8) length)
              (type (simple-array (unsigned-byte 8) (*)) vector))
     (cond (length-only
            (values 0 (1+ length) nil nil))
           (t
-           (sb!kernel:copy-ub8-from-system-area sap (1+ offset)
-                                                vector 0 length)
+           (copy-ub8-from-system-area sap (1+ offset) vector 0 length)
            (collect ((sc-offsets)
                      (lengths))
              (lengths 1)                ; the length byte
            (collect ((sc-offsets)
                      (lengths))
              (lengths 1)                ; the length byte
   (declare (ignore inst))
   (flet ((nt (x) (if stream (sb!disassem:note x dstate))))
     (case (break-code chunk dstate)
   (declare (ignore inst))
   (flet ((nt (x) (if stream (sb!disassem:note x dstate))))
     (case (break-code chunk dstate)
+      (#.halt-trap
+       (nt "Halt trap"))
+      (#.pending-interrupt-trap
+       (nt "Pending interrupt trap"))
       (#.error-trap
        (nt "Error trap")
        (sb!disassem:handle-break-args #'snarf-error-junk stream dstate))
       (#.error-trap
        (nt "Error trap")
        (sb!disassem:handle-break-args #'snarf-error-junk stream dstate))
        (sb!disassem:handle-break-args #'snarf-error-junk stream dstate))
       (#.breakpoint-trap
        (nt "Breakpoint trap"))
        (sb!disassem:handle-break-args #'snarf-error-junk stream dstate))
       (#.breakpoint-trap
        (nt "Breakpoint trap"))
-      (#.pending-interrupt-trap
-       (nt "Pending interrupt trap"))
-      (#.halt-trap
-       (nt "Halt trap"))
       (#.fun-end-breakpoint-trap
        (nt "Function end breakpoint trap"))
       (#.fun-end-breakpoint-trap
        (nt "Function end breakpoint trap"))
+      (#.after-breakpoint-trap
+       (nt "After breakpoint trap"))
+      (#.pseudo-atomic-trap
+       (nt "Pseudo atomic trap"))
+      (#.object-not-list-trap
+       (nt "Object not list trap"))
+      (#.object-not-instance-trap
+       (nt "Object not instance trap"))
     )))
 
 (define-instruction break (segment code &optional (subcode 0))
   (:declare (type (unsigned-byte 10) code subcode))
   (:printer break ((op special-op) (funct #b001101))
             '(:name :tab code (:unless (:constant 0) subcode))
     )))
 
 (define-instruction break (segment code &optional (subcode 0))
   (:declare (type (unsigned-byte 10) code subcode))
   (:printer break ((op special-op) (funct #b001101))
             '(:name :tab code (:unless (:constant 0) subcode))
-            :control #'break-control )
+            :control #'break-control)
   :pinned
   (:cost 0)
   (:delay 0)
   :pinned
   (:cost 0)
   (:delay 0)
                           (ash (+ posn (component-header-length))
                                (- n-widetag-bits word-shift)))))))
 
                           (ash (+ posn (component-header-length))
                                (- n-widetag-bits word-shift)))))))
 
-(define-instruction fun-header-word (segment)
+(define-instruction simple-fun-header-word (segment)
   :pinned
   (:cost 0)
   (:delay 0)
   :pinned
   (:cost 0)
   (:delay 0)
    segment 12 3
    #'(lambda (segment posn delta-if-after)
        (let ((delta (funcall calc label posn delta-if-after)))
    segment 12 3
    #'(lambda (segment posn delta-if-after)
        (let ((delta (funcall calc label posn delta-if-after)))
-          (when (<= (- (ash 1 15)) delta (1- (ash 1 15)))
+          (when (typep delta '(signed-byte 16))
             (emit-back-patch segment 4
                              #'(lambda (segment posn)
                                  (assemble (segment vop)
             (emit-back-patch segment 4
                              #'(lambda (segment posn)
                                  (assemble (segment vop)
                    (inst or temp (ldb (byte 16 0) delta))
                    (inst addu dst src temp))))))
 
                    (inst or temp (ldb (byte 16 0) delta))
                    (inst addu dst src temp))))))
 
-;; code = fn - header - label-offset + other-pointer-tag
-(define-instruction compute-code-from-fn (segment dst src label temp)
+;; code = lip - header - label-offset + other-pointer-lowtag
+(define-instruction compute-code-from-lip (segment dst src label temp)
   (:declare (type tn dst src temp) (type label label))
   (:attributes variable-length)
   (:dependencies (reads src) (writes dst) (writes temp))
   (:declare (type tn dst src temp) (type label label))
   (:attributes variable-length)
   (:dependencies (reads src) (writes dst) (writes temp))
                                 (component-header-length)))))))
 
 ;; lra = code + other-pointer-tag + header + label-offset - other-pointer-tag
                                 (component-header-length)))))))
 
 ;; lra = code + other-pointer-tag + header + label-offset - other-pointer-tag
+;;     = code + header + label-offset
 (define-instruction compute-lra-from-code (segment dst src label temp)
   (:declare (type tn dst src temp) (type label label))
   (:attributes variable-length)
 (define-instruction compute-lra-from-code (segment dst src label temp)
   (:declare (type tn dst src temp) (type label label))
   (:attributes variable-length)