Stricter precondition when strength reducing variable right shifts
[sbcl.git] / src / compiler / ppc / c-call.lisp
index 1d75529..4411684 100644 (file)
                      (new-arg-types (parse-alien-type
                                      '(unsigned 32)
                                      (sb!kernel:make-null-lexenv))))
-                    ((alien-integer-type-p type)
-                     (if (< gprs 8)
-                         (incf gprs 1)
-                         (incf stack 1))
-                     (new-args arg)
-                     (new-arg-types type))
                     ((alien-single-float-type-p type)
                      (if (< fprs 8)
                          (incf fprs)
                              (incf stack 2))) ; the stack.
                      (new-args arg)
                      (new-arg-types type))
-                    (t
+                    (t ;; integer or SAP
+                     (if (< gprs 8)
+                         (incf gprs 1)
+                         (incf stack 1))
                      (new-args arg)
                      (new-arg-types type)))))
                  (cond ((and (alien-integer-type-p result-type)
               (inst stwu stack-pointer stack-pointer (- frame-size))
 
               ;; And make the call.
-              (load-address-into r0 (foreign-symbol-address "funcall3"))
+              (load-address-into
+               r0
+               (foreign-symbol-address
+                #!-sb-safepoint "funcall3"
+                #!+sb-safepoint "callback_wrapper_trampoline"))
               (inst mtlr r0)
               (inst blrl)