+ (codegen-pop-function codegen name type)
+
+ ;; 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))))
+ (main (method-entry-function-name method head nil))
+ (main-type (c-type (fun (lisp return-type)
+ ("me" (* (class tail)))
+ . raw-entry-args))))
+ (codegen-push codegen)
+ (ensure-var codegen *sod-ap* (c-type va-list))
+ (emit-inst codegen
+ (make-va-start-inst *sod-ap*
+ (argument-name parm-n)))
+ (convert-stmts codegen entry-target return-type
+ (lambda (target)
+ (deliver-expr codegen target call)))
+ (emit-inst codegen (make-va-end-inst *sod-ap*))
+ (codegen-pop-function codegen main main-type))))))