X-Git-Url: https://git.distorted.org.uk/~mdw/sod/blobdiff_plain/e85df3ff84611b7c790f9ffb46dfca77e2a717c0..db56b1d3c3d4bc9ffb6500b1f40c27c77d868aa4:/src/method-impl.lisp diff --git a/src/method-impl.lisp b/src/method-impl.lisp index 725a0ec..e4aaae3 100644 --- a/src/method-impl.lisp +++ b/src/method-impl.lisp @@ -337,7 +337,7 @@ (sod-class-nickname message-class) (sod-message-name message) (sod-class-nickname chain-head)) - 0))) + *null-pointer*))) (defmethod method-entry-slot-name ((entry method-entry)) (let* ((method (method-entry-effective-method entry)) @@ -443,10 +443,8 @@ ;; If this is a varargs method then we've made the ;; `:valist' role. Also make the `nil' role. (when parm-n - (let ((call (make-call-inst name - (cons "me" - (mapcar #'argument-name - entry-args)))) + (let ((call (apply #'make-call-inst name "me" + (mapcar #'argument-name entry-args))) (main (method-entry-function-name method head nil)) (main-type (c-type (fun (lisp return-type) ("me" (* (class tail))) @@ -455,13 +453,11 @@ (ensure-var codegen *sod-ap* c-type-va-list) (convert-stmts codegen entry-target return-type (lambda (target) - (emit-inst codegen - (make-va-start-inst - *sod-ap* - (argument-name parm-n))) + (deliver-call codegen :void "va_start" + *sod-ap* parm-n) (deliver-expr codegen target call) - (emit-inst codegen - (make-va-end-inst *sod-ap*)))) + (deliver-call codegen :void "va_end" + *sod-ap*))) (codegen-pop-function codegen main main-type)))))) ;; Generate the method body. We'll work out what to do with it later. @@ -498,9 +494,8 @@ (nconc insts (and result (list (make-return-inst result))))) - (let ((call (make-call-inst emf-name - (cons "sod__obj" (mapcar #'argument-name - emf-arg-tail))))) + (let ((call (apply #'make-call-inst emf-name "sod__obj" + (mapcar #'argument-name emf-arg-tail)))) (dolist (tail chain-tails) (setup-entry tail) (deliver-expr codegen entry-target call)