source: trunk/source/lib/ffi-win32.lisp @ 11555

Last change on this file since 11555 was 11555, checked in by rme, 11 years ago

Small structs returned in registers by the Cygwin compiler, too. This
is apparently what the MS compilers do, as well.

File size: 1.1 KB
Line 
1(in-package "CCL")
2
3;;; Cygwin compiler returns small structures in registers
4;;; (just like on Darwin, apparently).
5(defun win32::record-type-returns-structure-as-first-arg (rtype)
6  (when (and rtype
7             (not (typep rtype 'unsigned-byte))
8             (not (member rtype *foreign-representation-type-keywords*
9                          :test #'eq)))
10    (let* ((ftype (if (typep rtype 'foreign-type)
11                    rtype
12                    (parse-foreign-type rtype)))
13           (nbits (ensure-foreign-type-bits ftype)))
14      (not (member nbits '(8 16 32 64))))))
15
16(defun win32::expand-ff-call (callform args &key (arg-coerce #'null-coerce-foreign-arg) (result-coerce #'null-coerce-foreign-result))
17  (x8632::expand-ff-call callform args :arg-coerce arg-coerce :result-coerce result-coerce))
18
19(defun win32::generate-callback-bindings (stack-ptr fp-args-ptr argvars argspecs result-spec struct-result-name)
20  (x8632::generate-callback-bindings stack-ptr fp-args-ptr argvars argspecs result-spec struct-result-name))
21
22(defun win32::generate-callback-return-value (stack-ptr fp-args-ptr result return-type struct-return-arg)
23  (x8632::generate-callback-return-value stack-ptr fp-args-ptr result return-type struct-return-arg))
24
Note: See TracBrowser for help on using the repository browser.