1.0.23.62: Micro-optimization for MIPS' SYMBOL-HASH VOP.
[sbcl.git] / src / compiler / mips / call.lisp
index 7b318e4..97057d8 100644 (file)
   (:generator 1
     ;; Make sure the function is aligned, and drop a label pointing to this
     ;; function header.
-    (align n-lowtag-bits)
+    (emit-alignment n-lowtag-bits)
     (trace-table-entry trace-table-fun-prologue)
     (emit-label start-lab)
     ;; Allocate function header.
@@ -367,9 +367,9 @@ default-value-8
 
     (when lra-label
       (inst compute-code-from-lra code-tn code-tn lra-label temp))
-    (inst addu csp-tn csp-tn 4)
+    (inst addu csp-tn csp-tn n-word-bytes)
     (storew (first *register-arg-tns*) csp-tn -1)
-    (inst addu start csp-tn -4)
+    (inst addu start csp-tn (- n-word-bytes))
     (inst li count (fixnumize 1))
 
     (emit-label done)
@@ -703,7 +703,7 @@ default-value-8
          '((:temporary (:scs (non-descriptor-reg)) temp)
            (:temporary (:sc control-stack :offset nfp-save-offset) nfp-save)))
 
-     (:temporary (:sc interior-reg :offset lip-offset) entry-point)
+     (:temporary (:sc interior-reg) entry-point)
 
      (:generator ,(+ (if named 5 0)
                      (if variable 19 1)
@@ -789,8 +789,8 @@ default-value-8
                                 (truncate (static-symbol-offset 'sb!impl::*stepping*)
                                           n-word-bytes))
                              other-pointer-lowtag))
-                    ;; If it's not null, trap.
-                    (inst beq stepping step-done-label)
+                    ;; If it's not NIL, trap.
+                    (inst beq stepping null-tn step-done-label)
                     (inst nop)
                     ;; CONTEXT-PC will be pointing here when the
                     ;; interrupt is handled, not after the BREAK.
@@ -1150,9 +1150,6 @@ default-value-8
 (define-full-reffer more-arg * 0 0 (descriptor-reg any-reg) * %more-arg)
 
 ;;; Turn more arg (context, count) into a list.
-(defoptimizer (%listify-rest-args stack-allocate-result) ((&rest args))
-  t)
-
 (define-vop (listify-rest-args)
   (:args (context-arg :target context :scs (descriptor-reg))
          (count-arg :target count :scs (any-reg)))
@@ -1174,7 +1171,7 @@ default-value-8
       (move context context-arg)
       (move count count-arg)
       ;; Check to see if there are any arguments.
-      (inst beq count zero-tn done)
+      (inst beq count done)
       (move result null-tn t)
 
       ;; We need to do this atomically.
@@ -1202,7 +1199,7 @@ default-value-8
 
         ;; Dec count, and if != zero, go back for more.
         (inst addu count count (fixnumize -1))
-        (inst bne count zero-tn loop)
+        (inst bne count loop)
 
         ;; Store the value in the car (in delay slot)
         (storew temp dst 0 list-pointer-lowtag)
@@ -1251,7 +1248,7 @@ default-value-8
     (let ((err-lab
            (generate-error-code vop invalid-arg-count-error nargs)))
       (cond ((zerop count)
-             (inst bne nargs zero-tn err-lab)
+             (inst bne nargs err-lab)
              (inst nop))
             (t
              (inst li temp (fixnumize count))
@@ -1297,13 +1294,13 @@ default-value-8
                 (truncate (static-symbol-offset 'sb!impl::*stepping*)
                           n-word-bytes))
              other-pointer-lowtag))
-    ;; If it's not null, trap.
-    (inst beq stepping DONE)
+    ;; If it's not NIL, trap.
+    (inst beq stepping null-tn DONE)
     (inst nop)
     ;; CONTEXT-PC will be pointing here when the interrupt is handled,
     ;; not after the BREAK.
     (note-this-location vop :step-before-vop)
     ;; CALLEE-REGISTER-OFFSET isn't needed for before-traps, so we
     ;; can just use a bare SINGLE-STEP-BEFORE-TRAP as the code.
-    (inst break single-step-before-trap)
+    (inst break 0 single-step-before-trap)
     DONE))