chiark / gitweb /
src/codegen-proto.lisp: Fix printing of `if`/`else if' ladders.
[sod] / src / method-impl.lisp
index 725a0ec2b817555159fc221ef5112bd995799b2e..e4aaae36d8df7ce300cb29b253051ef9d784f19d 100644 (file)
@@ -337,7 +337,7 @@ (defmethod method-entry-function-name
                (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 @@ (defmethod compute-method-entry-functions ((method basic-effective-method))
               ;; 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 @@ (defmethod compute-method-entry-functions ((method basic-effective-method))
                   (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 @@ (defmethod compute-method-entry-functions ((method basic-effective-method))
                  (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)