Changeset 6135


Ignore:
Timestamp:
Apr 5, 2007, 3:38:07 PM (13 years ago)
Author:
gb
Message:

Handle "Hybrid" foreign arguments (for ppc64 structure fields.)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/objc-gf/ccl/level-0/PPC/ppc-def.lisp

    r5854 r6135  
    10441044                            :signed-fullword :unsigned-fullword
    10451045                            :signed-halfword :unsigned-halfword
    1046                             :signed-byte :unsigned-byte)
     1046                            :signed-byte :unsigned-byte
     1047                            :hybrid-int-float :hybrid-float-float
     1048                            :hybrid-float-int)
    10471049                  (incf total-words))
    10481050                 (t (if (typep spec 'unsigned-byte)
     
    10761078                            (setf (%%get-unsigned-longlong argptr offset) val)
    10771079                            (incf offset 8))
     1080                           (:hybrid-int-float
     1081                            (setf (%%get-unsigned-longlong argptr offset) val)
     1082                            (when (< n-fp-args 13)
     1083                              (setf (%get-double-float fp-args (* n-fp-args 8))
     1084                                    (%double-float (%get-single-float argptr (+ offset 4)))))
     1085                            (incf n-fp-args)
     1086                            (incf offset 8))
     1087                           (:hybrid-float-int
     1088                            (setf (%%get-unsigned-longlong argptr offset) val)
     1089                            (when (< n-fp-args 13)
     1090                              (setf (%get-double-float fp-args (* n-fp-args 8))
     1091                                    (%double-float (%get-single-float argptr offset))))
     1092                            (incf n-fp-args)
     1093                            (incf offset 8))
     1094                           (:hybrid-float-float
     1095                            (setf (%%get-unsigned-longlong argptr offset) val)
     1096                            (when (< n-fp-args 13)
     1097                              (setf (%get-double-float fp-args (* n-fp-args 8))
     1098                                    (%double-float (%get-single-float argptr offset))))
     1099                            (incf n-fp-args)
     1100                            (when (< n-fp-args 13)
     1101                              (setf (%get-double-float fp-args (* n-fp-args 8))
     1102                                    (%double-float (%get-single-float argptr (+ offset 4)))))
     1103                            (incf n-fp-args)
     1104                            (incf offset 8))
    10781105                           (:double-float
    10791106                            (setf (%get-double-float argptr offset) val)
    1080                             (setf (%get-double-float fp-args (* n-fp-args 8)) val)
     1107                            (when (< n-fp-args 13)
     1108                              (setf (%get-double-float fp-args (* n-fp-args 8)) val))
    10811109                            (incf n-fp-args)
    10821110                            (incf offset 8))
    10831111                           (:single-float
    10841112                            (setf (%get-single-float argptr offset) val)
    1085                             (setf (%get-double-float fp-args (* n-fp-args 8))
    1086                                   (%double-float val))
     1113                            (when (< n-fp-args 13)
     1114                              (setf (%get-double-float fp-args (* n-fp-args 8))
     1115                                    (%double-float val)))
    10871116                            (incf n-fp-args)
    10881117                            (incf offset 8))
Note: See TracChangeset for help on using the changeset viewer.