X-Git-Url: https://git.distorted.org.uk/~mdw/sod/blobdiff_plain/9ec578d9fe450b7e7f9030dc9d930185593aa991..599fe2c74c80282783795ce3569d6cdfb620654f:/src/method-impl.lisp diff --git a/src/method-impl.lisp b/src/method-impl.lisp index 09dbb2b..3fd6f08 100644 --- a/src/method-impl.lisp +++ b/src/method-impl.lisp @@ -98,6 +98,9 @@ (call-next-method) (primary-method-class message))) +(defmethod primary-method-class ((message simple-message)) + 'basic-direct-method) + ;;;-------------------------------------------------------------------------- ;;; Direct method classes. @@ -474,8 +477,10 @@ (dolist (tail chain-tails) (setup-entry tail) (dolist (var vars) - (ensure-var codegen (inst-name var) - (inst-type var) (inst-init var))) + (if (typep var 'var-inst) + (ensure-var codegen (inst-name var) + (inst-type var) (inst-init var)) + (emit-decl codegen var))) (when parm-n (varargs-prologue)) (emit-insts codegen insts) (when parm-n (varargs-epilogue)) @@ -517,12 +522,11 @@ (defmethod compute-effective-method-body ((method simple-effective-method) codegen target) - (with-slots (message basic-argument-names primary-methods) method - (basic-effective-method-body codegen target method - (lambda (target) - (simple-method-body method - codegen - target))))) + (basic-effective-method-body codegen target method + (lambda (target) + (simple-method-body method + codegen + target)))) ;;;-------------------------------------------------------------------------- ;;; Standard method combination. @@ -531,7 +535,7 @@ (defclass standard-message (simple-message) () (:documentation - "Message class for standard method combination. + "Message class for standard method combinations. Standard method combination is a simple method combination where the primary methods are invoked as a delegation chain, from most- to