Changeset 6140


Ignore:
Timestamp:
Apr 6, 2007, 10:19:06 AM (12 years ago)
Author:
gb
Message:

Fixes for darwinppc64.


File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/objc-gf/ccl/examples/objc-runtime.lisp

    r6139 r6140  
    17041704          (etypecase static-arg-type
    17051705            (foreign-integer-type
    1706              (let* ((bits (foreign-type-bits static-arg-type))
    1707                     (signed (foreign-integer-type-signed static-arg-type)))
    1708                  (progn
    1709                    (if (eq spec :<BOOL>)
    1710                      (setq arg `(%coerce-to-bool ,arg)))
    1711                    (static-arg-forms
    1712                     `(setf (paref ,gpr-base (:* (
    1713                                                  ,(if (foreign-integer-type-signed static-arg-type)
    1714                                                       :signed
    1715                                                       :unsigned)
     1706             (if (eq spec :<BOOL>)
     1707               (setq arg `(%coerce-to-bool ,arg)))
     1708             (static-arg-forms
     1709              `(setf (paref ,gpr-base (:* (
     1710                                           ,(if (foreign-integer-type-signed static-arg-type)
     1711                                                :signed
     1712                                                :unsigned)
    17161713                                           64)) ,gpr-offset)
    1717                       ,arg))
    1718                    (incf n-static-gprs))))
     1714                ,arg))
     1715             (incf n-static-gprs))
    17191716            (foreign-single-float-type
    17201717             (static-arg-forms
     
    17381735             (static-arg-forms
    17391736              `(setf (paref ,gpr-base (:* address) ,n-static-gprs) ,arg))
    1740                (incf n-static-gprs)))))
    1741       (compile
    1742        nil
    1743        `(lambda (,receiver ,selector ,@args &rest ,rest-arg)
    1744          (declare (dynamic-extent ,rest-arg))
    1745          (let* ((,selptr (%get-selector ,selector))
    1746                 (,gpr-total ,n-static-gprs))
    1747            (dolist (,arg-temp ,rest-arg)
    1748              (incf ,gpr-total 1))
    1749            (if (> ,gpr-total 8)
    1750              (setq ,gpr-total (- ,gpr-total 8))
    1751              (setq ,gpr-total 0))           
    1752            (%stack-block ((,marg-ptr (+ ,(%foreign-type-or-record-size
    1753                                           :<MARG> :bytes)
    1754                                         (* 8 ,gpr-total))))
     1737             (incf n-static-gprs)))))
     1738     
     1739      (progn
     1740        nil
     1741        `(lambda (,receiver ,selector ,@args &rest ,rest-arg)
     1742          (declare (dynamic-extent ,rest-arg))
     1743          (let* ((,selptr (%get-selector ,selector))
     1744                 (,gpr-total ,n-static-gprs))
     1745            (dolist (,arg-temp ,rest-arg)
     1746              (declare (ignore ,arg-temp))
     1747              (incf ,gpr-total 1))
     1748            (if (> ,gpr-total 8)
     1749              (setq ,gpr-total (- ,gpr-total 8))
     1750              (setq ,gpr-total 0))           
     1751            (%stack-block ((,marg-ptr (+ ,(%foreign-type-or-record-size
     1752                                           :<MARG> :bytes)
     1753                                         (* 8 ,gpr-total))))
    17551754             
    1756              (with-macptrs ((,regparams (pref ,marg-ptr :<MARG>.reg<P>arams)))
    1757                (progn ,@(static-arg-forms))
    1758                (%process-varargs-list ,regparams ,marg-ptr ,n-static-gprs ,n-static-fprs  ,rest-arg)
    1759                (external-call "_objc_msgSendv"
    1760                               :address ,receiver
    1761                               :address ,selptr
    1762                               :size_t (+ 64 (* 8 ,gpr-total))
    1763                               :address ,marg-ptr
    1764                               ,return-type-spec)))))))))
    1765 
    1766 #-(and apple-objc (or x8664-target 32-target))
     1755              (with-macptrs ((,regparams (pref ,marg-ptr :<MARG>.reg<P>arams)))
     1756                (progn ,@(static-arg-forms))
     1757                (%process-varargs-list ,regparams ,marg-ptr ,n-static-gprs ,n-static-fprs  ,rest-arg)
     1758                (external-call "_objc_msgSendv"
     1759                               :address ,receiver
     1760                               :address ,selptr
     1761                               :size_t (+ 64 (* 8 ,gpr-total))
     1762                               :address ,marg-ptr
     1763                               ,return-type-spec)))))))))
     1764
     1765#-(and apple-objc (or x8664-target ppc-target))
    17671766(defun %compile-varargs-send-function-for-signature (sig)
    17681767  (warn "Varargs function for signature ~s NYI" sig))
Note: See TracChangeset for help on using the changeset viewer.