Changeset 9405


Ignore:
Timestamp:
May 8, 2008, 4:32:40 AM (11 years ago)
Author:
rme
Message:

generate-callback-bindings: try looking for callback args in the right place
on the stack.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/ia32/lib/ffi-darwinx8632.lisp

    r9385 r9405  
    106106      (do* ((argvars argvars (cdr argvars))
    107107            (argspecs argspecs (cdr argspecs))
    108             (delta 4 4)
    109             (offset -4 (decf offset delta)))
     108            (offset 8 (incf offset 4)))
    110109           ((null argvars)
    111110            (values (rlets) (lets) (dynamic-extent-names) (inits) rtype nil 4))
     
    113112               (spec (car argspecs))
    114113               (argtype (parse-foreign-type spec))
    115                (bits (require-foreign-type-bits argtype)))
     114               (bits (require-foreign-type-bits argtype))
     115               (double nil))
    116116          (if (typep argtype 'foreign-record-type)
    117117            (progn
     
    121121                          (ecase (foreign-type-to-representation-type argtype)
    122122                            (:single-float '%get-single-float)
    123                             (:double-float (incf offset 4)
    124                                            '%get-double-float)
    125                             (:signed-doubleword (incf offset 4)
     123                            (:double-float (setq double t) '%get-double-float)
     124                            (:signed-doubleword (setq double t)
    126125                                                '%%get-signed-longlong)
    127126                            (:signed-fullword '%get-signed-long)
    128127                            (:signed-halfword '%get-signed-word)
    129128                            (:signed-byte '%get-signed-byte)
    130                             (:unsigned-doubleword (incf offset 4)
     129                            (:unsigned-doubleword (setq double t)
    131130                                                  '%%get-unsigned-longlong)
    132131                            (:unsigned-fullword '%get-unsigned-long)
     
    135134                            (:address '%get-ptr))
    136135                          ,stack-ptr
    137                           ,offset)))))))))
     136                          ,offset))))
     137          (when double (incf offset 4)))))))
    138138
    139139(defun x86-darwin32::generate-callback-return-value (stack-ptr fp-args-ptr result return-type struct-return-arg)
Note: See TracChangeset for help on using the changeset viewer.