X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/sod/blobdiff_plain/167524b5890cdbf4a832b1766a328f6d8a1f8f04..2d8d81c52aded8f15e37b061971d493742f55751:/src/method-impl.lisp?ds=sidebyside diff --git a/src/method-impl.lisp b/src/method-impl.lisp index 8501a02..f0fd3fc 100644 --- a/src/method-impl.lisp +++ b/src/method-impl.lisp @@ -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)) @@ -438,7 +438,15 @@ (defmethod compute-method-entry-functions ((method basic-effective-method)) (type (c-type (fun (lisp return-type) ("me" (* (class tail))) . entry-args)))) - (codegen-pop-function codegen name type) + (codegen-pop-function codegen name type + "~@(~@[~A ~]entry~) function ~:_~ + for method `~A.~A' ~:_~ + via chain headed by `~A' ~:_~ + defined on `~A'." + (if parm-n "Indirect argument-tail" nil) + (sod-class-nickname message-class) + (sod-message-name message) + head class) ;; If this is a varargs method then we've made the ;; `:valist' role. Also make the `nil' role. @@ -458,7 +466,15 @@ (defmethod compute-method-entry-functions ((method basic-effective-method)) (deliver-expr codegen target call) (deliver-call codegen :void "va_end" *sod-ap*))) - (codegen-pop-function codegen main main-type)))))) + (codegen-pop-function codegen main main-type + "Variable-length argument list ~:_~ + entry function ~:_~ + for method `~A.~A' ~:_~ + via chain headed by `~A' ~:_~ + defined on `~A'." + (sod-class-nickname message-class) + (sod-message-name message) + head class)))))) ;; Generate the method body. We'll work out what to do with it later. (codegen-push codegen) @@ -492,7 +508,12 @@ (defmethod compute-method-entry-functions ((method basic-effective-method)) ;; function and call it a lot. (codegen-build-function codegen emf-name emf-type vars (nconc insts (and result - (list (make-return-inst result))))) + (list (make-return-inst result)))) + "Effective method function ~:_for `~A.~A' ~:_~ + defined on `~A'." + (sod-class-nickname message-class) + (sod-message-name message) + (effective-method-class method)) (let ((call (apply #'make-call-inst emf-name "sod__obj" (mapcar #'argument-name emf-arg-tail))))