Changeset 5876


Ignore:
Timestamp:
Feb 10, 2007, 9:21:08 PM (18 years ago)
Author:
Gary Byers
Message:

Fix some typos; do struct return 32 bits at a time, to avoid consing
little bignums.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ccl/compiler/X86/X8664/x8664-backend.lisp

    r5867 r5876  
    272272    (let* ((gpr-offset 0)
    273273           (fpr-offset 16))
     274      ;; Do this 32 bits at a time, to avoid consing.
    274275      (collect ((forms))
    275276        (case first
    276           (:integer (forms `(setf (%%get-unsigned-longlong ,r 0)
    277                              (%%get-unsigned-longlong ,regbuf 0)))
     277          (:integer (forms `(setf (%get-unsigned-long ,r 0)
     278                             (%get-unsigned-long ,regbuf 0)))
     279                    (forms `(setf (%get-unsigned-long ,r 4)
     280                             (%get-unsigned-long ,regbuf 4)))
    278281                    (setq gpr-offset 8))
    279           (:float (forms `(setf (%%get-unsigned-longlong ,r 0)
    280                              (%%get-unsigned-longlong ,regbuf 16)))
     282          (:float (forms `(setf (%get-unsigned-long ,r 0)
     283                             (%get-unsigned-long ,regbuf 16)))
     284                  (forms `(setf (%get-unsigned-long ,r 4)
     285                             (%get-unsigned-long ,regbuf 20)))
    281286                  (setf fpr-offset 24)))
    282287        (case second
    283           (:integer (forms `(setf (%%get-unsigned-longlong ,r 8)
    284                              (%%get-unsigned-longlong ,regbuf ,gpr-offset))))
    285           (:float (forms `(setf (%%get-unsigned-longlong ,r 8)
    286                              (%%get-unsigned-longlong ,regbuf ,fpr-offset)))))
     288          (:integer (forms `(setf (%get-unsigned-long ,r 8)
     289                             (%get-unsigned-long ,regbuf ,gpr-offset)))
     290                    (forms `(setf (%get-unsigned-long ,r 12)
     291                             (%get-unsigned-long ,regbuf ,(+ gpr-offset 4)))))
     292          (:float (forms `(setf (%get-unsigned-long ,r 8)
     293                             (%get-unsigned-long ,regbuf ,fpr-offset)))
     294                  (forms `(setf (%get-unsigned-long ,r 12)
     295                             (%get-unsigned-long ,regbuf ,(+ fpr-offset 4))))))
    287296        `(progn ,@(forms))))))
    288297
     
    295304         (structure-arg-temp nil))
    296305    (multiple-value-bind (result-type error)
    297         (parse-foreign-type result-type-spec)
     306        (ignore-errors (parse-foreign-type result-type-spec))
    298307      (if error
    299308        (setq result-type-spec :void result-type *void-foreign-type*)
     
    469478                    (rlets (list name (foreign-record-type-name argtype)))
    470479                    (inits `(setf (%%get-unsigned-longlong ,name 0)
    471                              (%%get-unsigned-long-long ,stack-ptr ,(if (eq first8 :integer) (next-gpr) (next-fpr)))))
     480                             (%%get-unsigned-longlong ,stack-ptr ,(if (eq first8 :integer) (next-gpr) (next-fpr)))))
    472481                    (if second8
    473482                      (inits `(setf (%%get-unsigned-longlong ,name 8)
    474                              (%%get-unsigned-long-long ,stack-ptr ,(if (eq second8 :integer) (next-gpr) (next-fpr)))))))))
     483                             (%%get-unsigned-longlong ,stack-ptr ,(if (eq second8 :integer) (next-gpr) (next-fpr)))))))))
    475484                (lets (list name
    476485                            `(,
Note: See TracChangeset for help on using the changeset viewer.