:reader method-entry-chain-head)
(chain-tail :initarg :chain-tail :type sod-class
:reader method-entry-chain-tail)
- (role :initarg :role :type (or :keyword null) :reader method-entry-role))
+ (role :initarg :role :type (or keyword null) :reader method-entry-role))
(:documentation
"An entry point into an effective method.
(c-type-subtype (sod-method-type direct-method))
(lambda (var)
(ensure-var codegen *sod-tmp-ap* c-type-va-list)
- (emit-inst codegen
- (make-va-copy-inst *sod-tmp-ap*
- *sod-ap*))
- (deliver-expr codegen var
- (make-call-inst function arguments))
- (emit-inst codegen
- (make-va-end-inst *sod-tmp-ap*))))
- (deliver-expr codegen target (make-call-inst function arguments)))))
+ (deliver-call codegen :void "va_copy"
+ *sod-tmp-ap* *sod-ap*)
+ (apply #'deliver-call codegen var
+ function arguments)
+ (deliver-call codegen :void "va_end" *sod-tmp-ap*)))
+ (apply #'deliver-call codegen target function arguments))))
(export 'ensure-ilayout-var)
(defun ensure-ilayout-var (codegen super)
(make-trampoline codegen (sod-method-class method)
(lambda (target)
(invoke chain target)))
- 0))
+ *null-pointer*))
(invoke (chain target)
(if (null chain)
(funcall kernel target)