Changeset 10863


Ignore:
Timestamp:
Sep 24, 2008, 9:30:25 AM (11 years ago)
Author:
gb
Message:

I'm fairly sure that the primitive foreign type :long-long-long is a
128-bit integer maintained in an xmm register; I think that it only
shows up in the .ffi files because it's a gcc intrinsic type, but
really hope that it's not actually used for anything ...

:long and :unsigned-long should look first at the ftd's :bits-per-long
attribute. On our good friend win64, :long is smaller than a word.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/library/parse-ffi.lisp

    r10519 r10863  
    378378           (ecase (car spec)
    379379             (:char (if (getf (ftd-attributes *parse-ffi-target-ftd*)
    380                                :signed-char)
     380                              :signed-char)
    381381                      '(:signed 8)
    382382                      '(:unsigned 8)))
     
    388388             (:signed-long-long-long '(:signed 128))
    389389             (:int '(:signed 32))
    390              (:long (ecase (getf (ftd-attributes *parse-ffi-target-ftd*)
    391                                 :bits-per-word)
     390             (:long (ecase (or
     391                            (getf
     392                             (ftd-attributes *parse-ffi-target-ftd*)
     393                             :bits-per-long)
     394                            (getf
     395                             (ftd-attributes *parse-ffi-target-ftd*)
     396                             :bits-per-word))
    392397                      (32 '(:signed 32))
    393398                      (64 '(:signed 64))))
    394399             (:unsigned  '(:unsigned 32))
    395              (:unsigned-long (ecase (getf
    396                                      (ftd-attributes *parse-ffi-target-ftd*)
    397                                      :bits-per-word)
     400             (:unsigned-long (ecase (or
     401                                     (getf
     402                                      (ftd-attributes *parse-ffi-target-ftd*)
     403                                      :bits-per-long)
     404                                     (getf
     405                                      (ftd-attributes *parse-ffi-target-ftd*)
     406                                      :bits-per-word))
    398407                               (32 '(:unsigned 32))
    399408                               (64 '(:unsigned 64))))
     
    407416             (:complex-double :complex-double)
    408417             (:complex-long-double :complex-long-float)
     418             (:long-long-long :long-long-long)
    409419             #|(:void :void)|#)))))
    410420             
Note: See TracChangeset for help on using the changeset viewer.